最小二乘法用于在回归分析中,计算overdetemined system的近似解。overdetemined system是指等式数目多余未知量的问题。其思想是:最小化各个等式的误差的平方和。
最常见应用于数据拟合(如下),此时优化目标是最小化平方残差,残差即为观测值和模型计算的拟合值的差。
按照残差项是够是线性的,最小二乘法分为两类:线性最小二乘、非线性最小二乘。
线性最小二乘常见于回归分析,它有封闭的解(解具有等式形式,如 );非线性最小二乘通常是迭代寻优,每一次迭代中,将问题近似为线性。
问题描述
最小二乘问题的数学表示:
其中 为模型, 如直线拟合中:
为模型参数向量,观察值为
算法求解
为问题的目标函数,最小化平方和,即寻找梯度为0的解,设有m个参数,则有:
, 其中 .
带入 , 得到:
, (1)
线性最小二乘法
模型是参数的线性组合, , 其中 是x的函数(它是一个确定值)。所以:
将 带入(1)式子,得到矩阵形式:
其中是正定矩阵,所有:
非线性最小二乘法
并不存在上述类似的封闭解,而是采用数字算法来寻优, 为参数设置初值,然后进行迭代调优,直至收敛。
, k为迭代的次数
称为 shift vector,位移向量。
每一次迭代,模型可以用关于 的Taylor一阶展开进行线性近似:
J是确定数值的Jacobian矩阵(独立于y和参数β)。
由此得:
最小化上式,梯度为0,得:
(2)
将 带入(2)式,得到结果的矩阵形式:
所以:
这就是Gauss–Newton algorithm的等式。
The Gauss–Newton algorithm is used to solve non-linear least squares problems. It is a modification of Newton's method for finding a minimum of a function. Unlike Newton's method, the Gauss–Newton algorithm can only be used to minimize a sum of squared function values, but it has the advantage that second derivatives, which can be challenging to compute, are not required.
Gauss-Newton算法不同于Newton方法,它只用于最小化平方和问题,但是它具有类似二阶导的优势。
参考:
https://en.wikipedia.org/wiki/Least_squares
https://en.wikipedia.org/wiki/Gauss%E2%80%93Newton_algorithm
进一步扩展
最速下降法
在基本迭代公式中 中,每次迭代搜索方向 取为目标函数f(x)的负梯度方向。
而为最优步长,由此确定的算法称为最速下降法。
牛顿法
设最优问题为:,其中f二阶可到,Hesse矩阵正定。
k次迭代得到, 将f(x)在处展开为二阶泰勒公式,得:
显然Q(X)是正定二次函数,所以Q(X)是凸函数,且存在唯一局部极小值,得
所以:
相应有:
对于二次函数, 一次迭代即可得到最优值。
Levenberg-Marquart算法
LM算法实现了在最速下降法和Inverse-Hessian算法之间进行平稳的变化。是求解最小二乘法最常用的方法。
将
转化为:
在L-M算法中,每一次迭代都是寻找一个合适的值。算法开始时,通常取 ,若结算后的解导致误差减少,则接受的当前值,并在下一次迭代中以代替。若解导致误差的增大,则以代替并重新求解增量方程。这个过程一直到求出一个使误差下降的为止,构成L-M算法的一次迭代。
参考:http://blog.csdn.net/wsj998689aa/article/details/40826775