最小二乘拟合的理解

本文最后更新于:2023年9月14日 晚上

最小二乘拟合的理解

  最小二乘法一种数学回归分析的一种方法,通常用于数据拟合,在误差估计、不确定度、系统辨识及预测、预报等数据处理诸多学科领域得到广泛应用。起源于十八世纪的大航海探索时期,发展于天文领域和航海领域。法国科学家勒让德于1805年首先提出了最小二乘法,后来在1822年由高斯证明了最小二乘法的优越性,也就是高斯-马尔可夫定理。其中最小二乘其实是日语的翻译,二乘在日语中也就是平方的翻译,中文其实可以称为最小平方法。

参考:

最小二乘法的本质是什么? - 知乎 (zhihu.com)

Least Squares Method: What It Means, How to Use It, With Examples (investopedia.com)

数据拟合——非线性最小二乘法 - 知乎 (zhihu.com)

非线性最小二乘 - 知乎 (zhihu.com)

非线性最小二乘 | LeijieZhang

牛顿法 高斯牛顿法 | Cheng Wei's Blog (scm_mos.gitlab.io)

非线性优化整理-3.Levenberg-Marquardt法(LM法)

老饼讲解|【原理】LM算法思想与介绍 (bbbdata.com)

一、基本定义

  最小二乘法(又称最小平方法)通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。最小二乘法还可用于曲线拟合,其他一些优化问题也可通过最小化能量或最大化熵用最小二乘法来表达。

若存在一对观测量,其中,且满足以下函数:   其中为待定参数。

  为了寻找函数的最佳估计值,对于给定的组(通常)的观测数据,其中,求解目标函数:   取最小值时的参数。求解这类问题称为最小二乘问题,也被称为最小二乘拟合。当为线性函数时,则该问题是线性最小二乘,否则称为非线性最小二乘。

二、线性最小二乘问题

  当拟合函数线性函数时,则称求解上式目标函数的问题为线性最小二乘问题。

  例如当给定组观测值其中,且为简化分析此处维度为一,求拟合方程中的最佳参数使得目标函数最小。

  将多个观测值带入可获得多个等式方程:

  求解参数为,求解参数为2个,则观测值至少要有3组,否则不存在优化问题,因为该参数已经可以唯一确定了。所以考虑当给定3组观测值时,则有:

  写成向量形式:

  则可以理解为1个三维向量由两外2个三维的基向量组成,两个基向量分别是,若在三维空间里(对应3组观测值),由于可以取任意值,所以这两个基向量可以理解为形成了一个空间平面,而当不在此平面内,则我们无法求得与它重合的向量,那么我们需要寻求一个最接近它的点(距离最近),而一个点与一个平面最近的点就是这个点与这个平面的垂线相交点,交点为且有向量与平面垂直则有:

原理示意如下图所示:

三维空间理解

  当观测数据变多时,则基向量由原来三维变为高维向量,但其垂直关系不变。仍以三维空间为例,由上式进一步化简:

  因为为任意向量,所以:

  最终可求解最佳参数得:

其中:

  都是可由观测值获得,由于为非方阵,所以需要在式中求逆时求的是其广义逆,即Moore-Penrose Matrix Inverse。其中当的条件数比较大,矩阵呈现病态。

  若拟合方程为,且给定组观测数据,则:

  最终通过式可求得最佳拟合参数。

三、非线性最小二乘问题

  当拟合函数非线性函数时,则称求解上式目标函数的问题为非线性最小二乘问题。

  例如当给定组观测值其中,求拟合方程中的最佳参数,令残差为同时可得到个参数方程,同样是非线性函数

  所以为求最佳拟合,则其残差平方和最小,即的二范数最小,求解的最优化问题可转变为求解目标函数最小值,同样是非线性函数矩阵:

  求解非线性优化的方法可以主要分为线性搜索法(Line Search)和信赖域法(Trust Region Method)。

其中:高斯牛顿法属于线性搜索法,列文伯格—马夸尔特法属于信赖域法

  线性搜索核心思想是先确定搜索方向,然后确定步长进行迭代

高斯牛顿法(G-N法):

  根据上式求得的雅可比矩阵:

  目标函数式的梯度为:

  在任意参数组合处将目标函数线性化:

  将其带入到梯度式,并令式子等于零:

  令,这里的并非是Hessian矩阵,但可以理解为牛顿法里的Hessian矩阵的近似:

  至此可以求得迭代步长

其中:

高斯牛顿法计算过程步骤:


  1. 给定初值,根据式求解迭代步长
  2. 更新迭代
  3. 判断,若成立则收敛,完成迭代,取得最佳参数
  4. 若不收敛,则更新的参数返回1,2步骤继续迭代。

  相比于牛顿法,高斯牛顿法不用计算 Hessian 矩阵,直接用近似,所以节省了计算量。但是高斯牛顿法要求矩阵是可逆且正定的,而实际计算中是半正定的,所以会出现奇异或病态的情况,此时增量的稳定性就会变差,导致迭代发散。另一方面,增量较大时,近似替代函数式就会产生较大的误差,也会导致迭代发散。这是高斯牛顿法的缺陷。

(2)Trust Region

  信赖域法核心思想则是先确定最大距离,再确定方向。具体为每次迭代都会给出一个半径为的信赖域使得模型在该信赖域内足够精确。在该领域内求解问题得到一个步长hℎ,接着通过某一评价标准判断该步长的好坏来决定是否要接受该步长。如果接受则更新当前位置,否则则当前位置不变。而新信赖域的半径大小则依照判断预测的好坏,来增大或减小。

列文伯格-马夸尔特法(L-M法):

  Line Search 依赖线性化近似有较高的拟合度,但是有时候线性近似效果较差,导致迭代不稳定;Region Trust 就是解决了这种问题。高斯牛顿法中采用的近似二阶泰勒展开只在该点附近有较好的近似结果,对添加一个信赖域区域,就变为 Trust Region 方法。

  LM法迭代公式:

  当较小时,接近于高斯牛顿法:

  当较大时,接近于最速下降法:

  对于信赖域的定义,通过近似模型与实际函数之间的差距来更新这个范围;如果这个差距小,则增大信赖域,否则减小信赖域。通过如下式子定义差距

模型近似差距示意

  来判断泰勒近似是否够好, 的分子是实际模型下降的值,分母是近似模型下降的值。如果 接近于1,则认为近似是好的。如果太小,说明实际减小的值远少于近似减少的值,这认为近似比较差。反之,如果比较大,则说明实际下降的比预计的更大,我们可以放大近似范围。

列文伯格-马夸尔特法计算过程步骤:


  1. 给定初值,以及初始化信赖域的半径,根据式求解迭代步长
  2. 根据式求解近似模型的差距
    • ,则扩大信赖域半径
    • ,则缩小信赖域半径
    • ,信赖域半径不变,进行更新迭代
  3. 判断,若成立则收敛,完成迭代,取得最佳参数
  4. 若不收敛,则更新的参数返回1,2步骤继续迭代。

  • LM法是一种非常高效的迭代算法,能适用于大多数的例子
  • 该算法的许多变量决定了迭代的效率和结果的收敛性,而这些参数的理想值往往依目标函数不同而不同
  • 因为存在矩阵求逆这一运算,所以对于大型数据求解需要用一些特殊技巧

四、代码示例

  太累了,敲不动了。哈哈哈,自己找去吧!

(1)线性最小二乘

(2)非线性最小二乘

牛顿法 高斯牛顿法 | Cheng Wei's Blog (scm_mos.gitlab.io)

非线性最小二乘 | LeijieZhang (leijiezhang001.github.io)