最小二乘法
作者:@houkai
本文为作者原创,转载请注明出处:https://www.cnblogs.com/houkai/p/6369870.html
最小二乘法用于在回归分析中,计算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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架