1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > python 最小二乘回归 高斯核_[数值计算] 数据拟合——非线性最小二乘法

python 最小二乘回归 高斯核_[数值计算] 数据拟合——非线性最小二乘法

时间:2020-01-06 06:14:32

相关推荐

python 最小二乘回归 高斯核_[数值计算] 数据拟合——非线性最小二乘法

前面分析了 线性最小二乘 的解法

YcoFlegs:[数值计算] 数据拟合——线性最小二乘法​

现在来看另一个问题:非线性最小二乘法

1. 定义

首先是如何定义这里这个“非线性”。为什么前面用多项式拟合就是线性了?

对于多项式拟合,每个数据样本,误差为:

,可以看到此处误差(希望绝对值缩小到0的那个函数)和 的关系是线性的,因此这个最小二乘问题被称为线性最小二乘。虽然 与x的关系是非线性的,最终的优化函数为 也是非线性的。

那么非线性最小二乘就很容易理解了,误差函数r和参数b的关系是非线性的就行了。

2. 例子——发射器位置

在一片区域里

,存在10个接收器,分别位于 ,和一个无线电发射器,位置 未知。这些接收器可以测量离发射器的距离,但存在误差。

Credit to http://iacs-courses.seas.harvard.edu/courses/am205/schedule/

此时,单个接收器数据对应的误差是

很容易证明非线性关系,即

3. 求导

和线性最小二乘一样,优化的目标函数为

。其中,前面的 系数只是为了方便后面推导的书写,m是样本点的数量。

其中n是待优化参数的维度,

是r对b的雅可比矩阵。

b最优的条件就是

如果r与b是线性关系,那么

就是正规方程组(参考上一篇文章“线性最小二乘”),可以直接求解。证明的话只需要把 拆开。

此处因为r(b)的非线性,只能迭代求解这个优化问题。

4. 优化

4.1 牛顿法

先考虑一个简单的情况来引入牛顿法。

在一元函数,求一个x使得f(x)=0。假如我们先猜这个根是 ,距离真实的根的距离是 。使用泰勒展开 。忽略高阶项,可以得到 。所以 ,如此循环。对于多元函数,形式完全类似: 。对于over-constrained system, , ,参考/p/83269117,可以用伪逆 求逆。

4.2 牛顿法在非线性最小二乘中的使用

上面Section3提到,希望求根的函数F(b)为

有必要在这里停下来理一下notation。注意此处:

r是误差函数,尺寸为 ,m是样本点的个数 是误差函数对b的雅可比矩阵,尺寸为 ,n是b的维度,是待优化参数的个数φ是目标函数,尺寸为 F是φ的导数,是待求根的函数,尺寸为 是F对b的雅可比矩阵,尺寸为

所以为了得到

还得继续求一次导:

其中

是Eq.4的第i列的转置和r(b)列向量的点积。

下一步就是用Section4.1这个公式来迭代:

4.3 高斯牛顿法的推导 Gauss-Newton Method

Eq.6中的二阶导求解通常很麻烦,而且随着优化的进行,误差函数r(b)的值也在减小,因此决定忽略Eq.6的第二项求和:

把Eq.6 Eq.10代入到Eq.8里,得到最终的迭代公式:

观察下正规方程组的公式

可以发现,和上面的Eq.11形式上有很多相近之处。实际上高斯牛顿法实际上等价于在每个迭代步骤求解 。这种线性化非线性函数的思路在科学运算里很常见。

4.4 如何优雅地计算雅可比矩阵

对于简单问题,比如上面Section2的 ,可以手推求导。但对于复杂的函数,或者没有closed-form的黑盒函数,可以考虑有限差分+autogradautograd: Efficiently computes derivatives of numpy code​

4.5 高斯牛顿法小结

特点是:

使用牛顿法求解 忽略二阶项

缺点:

实际应用中收敛不稳定

4.6 高斯牛顿法的变种——Levenberg–Marquardt法

更新公式:

其中

,diag此处的意思是把除了对角线的元素直接归零,然后用heuristic选择 。

从形式上LM法比GM法只是多了一个正则项。

5. 回到求发射器位置的例子

这里用Python的scipy.optimize.root作为求解器

/chr1shr/am205_examples/blob/master/1_data_fitting/nonlinlsq.py​

sol

Credit to http://iacs-courses.seas.harvard.edu/courses/am205/schedule/

红色的点是b_init,红色的×是最终收敛的解,而黑色的×是真实的位置。

一圈一圈的是

的等高线图,而求解器想要找 的点。可以看到,此处的等高线图不是规则形状,也说明了这是一个非线性最小二乘的问题。

PS: 如果是线性最小二乘(

)的话,2D情况下(n=2)的轮廓图会长这个样子:

Credit to http://iacs-courses.seas.harvard.edu/courses/am205/schedule/

更高阶的情况下是hyperellipses。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。