最小二乘法

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

求解最小二乘的几种方法

in Parameter Estimation2 Comments on May 12, 2015

Contents [hide]

∙ 1 问题描述

∙ 2 线性最小二乘

o 2.1 Cholesky分解法

o 2.2 QR分解法

o 2.3 SVD分解法

o 2.4 方法比较

∙ 3 非线性最小二乘

o 3.1 梯度下降法

o 3.2 高斯牛顿法

o 3.3 Levenberg–Marquardt算法

∙ 4 加权最小二乘

计算机视觉中的好多问题都涉及到参数估计,即给定一些噪声数据,从中估算出模型参数。比如VO(Visual Odometry)1中给定前后帧的匹配点对,估计相机的的运动信息,就是可以构造成一个非线性最小二乘的求解问题。再比如机器学习中给定一些标记好的训练样本集,估计分类器的权重向量参数,也是可以通过一个线性最小二乘问题求解2。这些例子本质上都是最小二乘在数据拟合中的应用,即通过最小化残差的平方和的方法给这些观测数据拟合出一个最优的模型来。

问题描述

最小二乘是求解超定系统的标准方法,通俗的讲,就是方程组的个数大于未知数的个数。“最小二乘”的意思就是最小化残差(residual)的平方和。给定m个数

据(x1,y1),(x2,y2),...,(x m,y m)(x1,y1),(x2,y2),...,(xm,ym) 和一个模型函数y=f(x,β)y=f(x,β) .其

中β={β1,β2,...,βn}β={β1,β2,...,βn}就是要估计的参数。该参数的估计是通过最小化如下残差的平方和求

得的,

S=∑i=1m r2i(1)(1)S=∑i=1mri2

其中残差为r i=y i−f(x i,β),i=1,2,...,m ri=yi−f(xi,β),i=1,2,...,m。根据残差函数关于未知参数是否线性,可以把最小二乘分为线性最小二乘和非线性最小二乘。

线性最小二乘

线性最小二乘是解决线性回归问题的常用方法,它有一个闭式解。这里线性最小二乘的残差函数可以表示为

r i=y i−x iβ,i=1,2,...,m(2)(2)ri=yi−xiβ,i=1,2,...,m

这样需要最小化的目标函数变为

S=∑i=1m(y i−x Tiβ)2=(y−Xβ)T(y−Xβ)(3)(3)S=∑i=1m(yi−xiTβ)2=(y−Xβ)T(y−Xβ)

其中,y={y1,y2,...,y m}T y={y1,y2,...,ym}T , X=⎡⎣⎢⎢⎢⎢x T1x T2...x Tm⎤⎦⎥⎥⎥⎥X=[x1Tx2T...xmT] 。对式

子(3)(3) 关于ββ求导3,并使其等于0得,

∂S∂β=2X T(Xβ−y)=0(4)(4)∂S∂β=2XT(Xβ−y)=0

这样求出ββ得闭式解如下:

β=(X T X)−1X T y=X†y(5)(5)β=(XTX)−1XTy=X†y

上式中的(X T X)−1X T(XTX)−1XT是X X 的Moore–Penrose广义逆矩阵(也叫伪逆矩阵),可以表示为X†X†。当数据矩阵X X 比较大时,直接对式子(5)(5) 中的X T X XTX 求逆是不现实的,因为这是非常

耗时的。显然这种直接而蛮力的方法并不是最明智的方法。可以通过矩阵分解实现更可行的求解方式,下面给出在实际应用中常用的通过矩阵分解实现的求解方法。

Cholesky分解法

Cholesky分解就是把一个共轭对称4且正定的矩阵分解成一个下三角矩阵和其共轭转置的乘积。这

里X T X XTX 显然是对称矩阵,所以当其是正定的时候,可以分解为

X T X=RR T(6)(6)XTX=RRT

其中,R R 是一个下三角矩阵,把上式代入式子(5)(5) 中,得

RR Tβ=X T y(7)(7)RRTβ=XTy

这里设

R Tβ=z(8)(8)RTβ=z

代入式子(7)(7) 中,得,

Rz=X T y(9)(9)Rz=XTy

可以通过回代的方式解出上式中的z z ,然后再通过回代的方式就可以求解出式子(8)(8) 中的ββ了。QR分解法

狭义的QR分解是把一个矩阵分解成一个正交矩阵和一个下三角矩阵的乘积。更广义的QR分解则不必限制Q Q 矩阵为正交矩阵,只需要满足下面Q T Q=I QTQ=I 即可。因为正交矩阵要求矩阵必须为方阵,但是在求解最小二乘中,由于X X 是一个m×n,(m>n)m×n,(m>n) 的矩阵,所以一般是分解成一

个m×n,m×n, 的矩阵Q Q 和一个n×n n×n 的下三角矩阵。

首先,我们把式子(2)(2) 写成矩阵的形式,

r=y−Xβ(10)(10)r=y−Xβ

然后对X X 做QR分解,得

X=QR(11)(11)X=QR

其中,Q Q 是一个m×n m×n 的矩阵,满足Q T Q=I QTQ=I ,R R 是一个n×n n×n 下三角矩阵。这样式

子(10)(10) 变为,

r=y−QRβ(12)(12)r=y−QRβ

对上式两边同时左乘一个Q T QT ,得

Q T r=Q T y−Q T QRβ=[(Q T y)n−Rβ(Q T y)m−n]=[uv](13)(13)QTr=QTy−QTQRβ=[(QTy)n−Rβ(QTy)m−n]=[

uv]

这里Q T Q QTQ 是一个m×m m×m 的单位矩阵,所以可以分为两个部

分:n×n n×n 和(m−n)×(m−n)(m−n)×(m−n),分别用u u 和v v 表示。这样,残差的平方和变为,S=∥r∥2=r T r=r T QQ T r=u T u+v T v(14)(14)S=∥r∥2=rTr=rTQQTr=uTu+vTv

由于v v 和ββ没有关系,所以当u u 等于零时,才能使得残差的平方和S S 最小。即,

Rβ=(Q T y)n(15)(15)Rβ=(QTy)n

因为R R 是下三角矩阵,所以通过回代就可很容易的求解出ββ值。

SVD分解法

SVD分解(奇异值分解)是把一个矩阵分解成一个正交矩阵(如果是复数矩阵的话,就是酉矩阵)和一个对角矩阵以及另一个正交矩阵的转置(如果是复数矩阵的话,就是共轭转置)的乘积。这里对X X 做SVD分解得,

X=UΣV T(16)(16)X=UΣVT

其中,U U 是m×m m×m 的正交矩阵,ΣΣ是m×n m×n 的矩形对角矩阵,V V 是一个n×n n×n 的正交矩阵。这里U U 和V V 的列向量分别是XX T XXT 和X T X XTX 的特征向量,而ΣΣ的对角线上的值是矩

阵X X 的奇异值。

由于X X 的伪逆矩阵为X†=VΣ†U T X†=VΣ†UT,所以式子(5)(5) 变成了,

β=X†y=VΣ†U T y(17)(17)β=X†y=VΣ†UTy

其中,Σ†Σ†是ΣΣ的伪逆矩阵,可以通过对其对角线的元素求倒数,然后转置得到。

方法比较

上述的三种方法比较下来,Cholesky分解法相对速度较快,但是其数值的稳定性较差,当X T X XTX为病态矩阵时,其估计的参数对噪声敏感性大,这样参数相对就不准。而QR分解法和SVD分解法虽然速度没有Cholesky分解法快,但是算法的数值相对比较稳定。当X T X XTX 的条件数比较大,也就是非常病态时,引入各种正则化项(例如岭回归)是解决这类病态矩阵问题的常用方法,虽然损失了参数的精度,但是保证了估计出的参数的稳定性。此外如果对所求参数ββ有先验知识,可以构造约束最小二乘,从而增加估计参数的稳定性。

非线性最小二乘

不同于线性最小二乘拥有一个闭式解,非线性最小二乘是很难得到一个闭式解的。所以求解的基本思想是通过一个线性的式子进行近似,然后通过不断的迭代来逼近最优解。

梯度下降法

相关文档
最新文档