python非线性规划用什么模块

Python012

python非线性规划用什么模块,第1张

python非线性规划用什么模块本文使用SciPy的optimize模块来求解非线性规划问题,结合实际例子,引入非线性规划问题的求解算法及相应函数的调用。

本文提纲一维搜索/单变量优化问题

无约束多元优化问题

非线性最小二乘问题

约束优化问题

非线性规划问题的目标函数或约束条件是非线性的。本文使用SciPy的optimize模块来求解非线性规划问题。

目标函数和约束条件是否连续光滑是非常重要的性质,这是因为如果光滑,则所有决策变量可微,多变量函数的偏导数组成的向量为梯度,梯度是指向目标函数增长最快的方向。将目标函数梯度作为搜索方向,对非线性规划问题的求解具有重要的意义。这些函数或其导数\梯度的不连续性给许多现有的非线性优化问题的求解带来了困难。在下文中,我们假设这些函数是连续且光滑的。

# Importing Modules

from scipy import optimize

import matplotlib.pyplot as plt

import numpy as np

import sympy

1、一维搜索/单变量优化问题(Univariate Optimization)

无约束非线性规划最简单的形式是一维搜索。一维搜索通常作为多维优化问题中的一部分出现,比如梯度下降法中每次最优迭代步长的估计。求解一维搜索常用的两类方法是函数逼近法和区间收缩法。其中函数逼近法是指用较简单的函数近似代替原来的函数,用近似函数的极小点来估计原函数的极小点,比如牛顿法;区间收缩法对于一个单谷函数通过迭代以不断缩小该区间的长度,当区间长度足够小时,可将该区间中的一点作为函数的极小点,比如黄金分割法。

e.g. 最小化一个单位体积的圆柱体的表面积。

r, h = sympy.symbols("r, h")

Area = 2 * sympy.pi * r**2 + 2 * sympy.pi * r * h

Volume = sympy.pi * r**2 * h

尝试根据统计量来推断总体参数, 例如钓鱼

如果撒一张网调到鱼的可能性更大, 那么这个网需要多大呢

那么网越大, 那么抓到鱼的信心越大, 因为总体参数总是不会发生改变, 所以就好像水中不会动的鱼一样, 但提供一个区间, 而不仅仅是一个估值, 能够帮助我们增加获得总体参数的信心

那么区间越大, 信心就越大.

通过抽样分布和自助抽样从而计算一个统计量的可能值, 也可以通过这些抽样分布计算一个参数的最可能值, 在实践中一般不知道参数的值

假设这是某个分布的统计量, 我们可以用这个分布为总体参数建立一个置信区间

如果我们想要95%的置信区间, 我们可以去掉前后各2.5%,

如果我们想要99%的置信区间, 可以从两边各去掉0.5%

You can interpret your confidence interval as We are 95% confident, the population mean falls between the bounds that you find. Notice that the percent and the parameter can both change depending on what you are building your confidence interval for, and what percentage you cutoff in each tail.

图中 coffee_red 是 coffee_full 的子集, 是随机抽取的样本

coffee_full 是总体中的所有个体

提示:

为了了解置信区间的效果如何, 往往有总体数据将会很有好处.

计算样本喝咖啡的平均值, 以及喝咖啡且身高的均值数据

接下来使用bootstrapping重新抽样, 并重复10000次, 再次计算喝咖啡并对身高数据的均值可视化

boot_means 是每次抽样200个样本的均值, 并重复10000次的均值列表, 然后对其使用 np.percentile(boot_means, 下限其实百分比) 代表置信区间的起始位置, 因此还需要设置使用同样的方法设置置信区间的结束位置, 如图.

上面的意思是去掉最初的2.5%和最终的2.5%, 在中间建立了95%的区间.

解释为: 在95%的置信区间下, 总体中所有喝咖啡的人的平均身高范围在 68.06 英尺和 68.97 英尺之间.

再次回到总体均值, 计算喝咖啡的人的身高的总体均值

在这个案例中我们的置信区间所示成功的

用什么方法估算两个参数的差, 并建立置信区间?

思考

例如喝咖啡和不和咖啡的人之间的平均身高之间的差是多少? 我们有平均身高差之间的证据吗?

为了建立这两组人的平均身高差, 方法和上述求置信区间的方法类似

然后, 可以对两者的求差的过程进行多次迭代, 并将单词迭代的 差值存储于列表中. 见下图

然后对差值列表求相应的置信区间, 认为这两组人的身高差在这个区间范围内.

你发现置信区间内并不包括0, 这表明总体均值是存在差异的.

进一步我们可以说, 平均而言, 喝咖啡的人比不喝咖啡的人高

为均值差建立置信区间的场景有哪些?

例如对不同的网页进行比较, 确定哪个网页能够吸引更大的流量

Statistical vs. Practical Significance

我们已经介绍了置信区间的几种不同应用 ,以及用于创建这些置信区间的一个自助抽样法 ,我们发现 创建两组均数差的置信区间 ,而不是只比较两个点估计值 这是很重要的 ,能保证 已选样本的随机性 ,不是出现这些差的唯一原因 .

置信区间肯定是有用的 ,但是 如果只利用置信区间做决策 ,可能会出现问题 ,这就引出了实际显著性和统计显著性的概念 .

我们举一个例子 解释这两个术语的区别 ,假设我从事遛狗业务 我在网上发广告 ,我想知道 这两个广告中的哪一个 ,能给我的业务带来更大的利益 ,我将每个广告发给相同数量的 ,随机选择用户 建立置信区间 ,它表明 更多的人点击这个广告 ,根据我的置信区间 ,我有统计证据表明 第二个广告更好 ,从置信区间中获得的这个证据就是 统计意义 .

假如两个广告 ,都带来了足够大的利益 超过了我的处理能力 ,但是第二个广告的制作成本较大 耗时较长 ,如果你的一个朋友决定 ,投放类似广告 开展他们自己的遛狗业务 ,你推荐他们选择哪种广告? ,在这个案例中 你可能建议他们选择第一个广告 ,即使你在统计学上证明第二个广告更好 ,但第一个广告会对他们的业务带来足够的利益 ,成本较低 耗时较少 ,你建议他们采用第一个广告 就是 实际意义 的一个例子 .

实际意义会考虑 ,其它方面和我们周围的世界 ,而不是只考虑数字 ,这对做决策来说是非常重要的

使用置信区间和假设检验,您可以在做出决策时提供统计学意义。

但是,在决策时考虑实际意义也很重要。实际意义考虑了您的情况的其他因素,这些因素可能不会直接在您的假设检验或置信区间的结果中考虑。在商业决策中,空间,时间或金钱等限制很重要。但是,它们可能不会直接在统计检验中考虑。

我们目前建立置信区间的方法 ,基于自助法和我们的抽样分布相关知识 ,这是一种极其有效的方法 ,能对我们感兴趣的几乎任何参数建立置信区间

但是 如果你在其他地方学习过统计课程 ,你可能会疑惑为什么 ,这种注释法与你在其它课程中学过的不一样 ,你可能见过这种计算总体均值或比例的方程

同样 你可能还见过这种 ,计算均数差或比例差的方程

所有这些公式都有可能为真或者可能为假的基本假设, 如果你真的认为你的数据能代表你研究的总体 ,自助法应该能更好地表示参数的可能位置 ,但是 在足够大的样本量下 ,这些公式的结果应该 ,与我们在自助法中看到的结果非常相似

在 Python 中建立置信区间的传统方法 ,和这一节课中采用自助抽样的方法进行快速比较

假设检验和建立置信区间的方法有很多 ,例如

许多假设检验 ,与创建置信区间的方法相关联 ,自助抽样法可以代替这些方法中的任何一个

举例说明

bootstrapping法

传统t检验法

对于大样本,这些最终看起来非常相似。对于较小的样本量,使用传统方法可能会假设您的区间不正确。小样本大小对于自举方法来说并不理想,因为它们可能导致误导结果,原因很简单,因为没有准确地代表整个人口。

以下是我们看到政治选举结果的一种常见方法 ,

候选人 A 的得票率是 34%+/-3%

候选人 B 的得票率是 22%+/-3%

你可能会看到 ,用小号字体印刷的内容 例如 ,“这些数字基于 95% 的置信区间 ” ,在这个样本中 每位候选人的得票率分别是 34% 和 22% ,这个 3% 称为 误差范围(margin of error)

为了建立置信区间 ,我们实际上会加减这个量

所以 候选人 A 在总体中的真实比例的 ,置信区间是 31% 至 37% ,

候选人 B 是 19% 至 25% ,

如果每位候选人的置信区间大于我们的预期 ,我们可以收集更大的样本量 ,根据大数定律 ,我们知道 样本量越大 ,估值越接近参数 因此 ,会缩小区间

Assuming you control all other items of your analysis:

你已经针对如何在实践中 ,建立、解释和使用置信区间进行了大量学习, 我们可以用置信区间做出哪些类型的结论 以及不能用它做出哪些类型的结论 ,两者是很容易混淆的

我们建立置信区间时 ,它们针对的是 参数 ,即 它们针对的是总体中的 单个值 ,这些值包括 总体均值 ,或者 总体标准偏差 , 两个总体均值的差 ,或者总体中的任何其它值摘要

注意: 置信区间 不允许 我们 ,对总体中的 任何个体有任何特定表示

机器学习 中的 更高级技术的目的 在于 ,给我们 提供总体中每个个体的信息

但是一般来说 置信区间的目的不是解决这些类型的问题 ,置信区间的目的一般是 ,给你提供总体中的 聚合值

Confidence intervals take an aggregate approach towards the conclusions made based on data, as these tests are aimed at understanding population parameters (which are aggregate population values).

Alternatively, machine learning techniques take an individual approach towards making conclusions, as they attempt to predict an outcome for each specific data point.

In the final lessons of this class, you will learn about two of the most fundamental machine learning approaches used in practice: linear and logistic regression.