最小二乘法的求解

1.最小二乘法的求解

已知有一个这样的方程组:

Ax=b

其中ARm×n ; xRn×k, bRm×k

m=n 时,且 ranA=n 时,这是一个适定方程组,有唯一解 x=A1b

m<n 时,或者 ranA<n 时,这是一个欠定方程组,有无穷多个解。对于这种情况,我们使用 ran(A) 中与 b 距离最近的向量对应的 x 作为最小二乘解。而相应的 ran(A) 中的这个向量就是 b 在空间 ran(A) 中的投影。

m>n 时,即方程的个数大于未知数的个数,最小二乘超定系统问题。

超定问题是最小二乘的关键,最小二乘的的意思就是最小化残差(residual)的平方和。

给定 m 个数据,(a1,b1), (a2,b2),…,(am,bm), 以及一个模型函数 b=f(a,x) ,其中{x1,x2,...,xn}就是要估计的参数,该参数的估计就是通过最小化如下残差的平方和求得:

S=i=1mbif(ai,xi)2

其中残差为 ri=bif(ai,xi) 根据残差函数关于未知参数是否线性,可以最把小二乘分为线性最小二乘和非线性最小二乘。

我们一般讨论的是线性最小二乘法。

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

另最小二乘的几何表示:
最小二乘法的求解

如图所示,b 不在 rand(A) 中,所以 Ax_0ran(A)b$ 在欧式空间范数下的最好估计。此时

xRn,(Ax,bAx0)=0

等价于 xTAT(bAx0)=0

由于x的任意性,所以

AT(bAx0)=0

整理得 x0=(ATA)1ATb=A+b

其中 A+=(ATA)1AT 称为 A 的伪逆矩阵。

2.数值解法

原问题等价于: minAxb22

f(x)=Axb22=(Axb)T(Axb)=xTATAx2bTAx+bTb ,对 x 求导得:

Δf=2(ATAxATb)=0

解得,x=(ATA)1ATb=A+b

SVD数值分解

原问题:minAxb.. 代表范数,取欧几里德范数,让每个方程的误差平方和最小,就是求取解 xi 使得 Axb 的误差最小,即等式最逼近真实值。

将矩阵 A 进行SVD分解:A=UΣ2VT ,矩阵 A 的伪逆矩阵为 X+=VΣ+UT

所以 x=X+b=VΣ+UTb,其中,Σ+Σ 的伪逆矩阵,可以通过对其对角线的元素求倒数,然后转置得到。

x=VΣ+UTb

QR分解

将矩阵 ARm×n进行QR分解:Q 为一个 m×n 的正交矩阵,R 为一个 n×n 的下三角矩阵,

将误差写成如下形式:r=bAx ,再对矩阵 A 进行 QR 分解,得 A=QR

则误差式可以写成: r=bQRx ;等式两边同时左乘一个 QT 矩阵,得 QTr=QTbQTQRx ;由于 QTQ 是一个 m×m 的单位矩阵,所以可以分为两个部分:n×n 和 (m-n)×(m-n) ,分别用 uv 表示,这样残差平方和函数变为:

S=r2=rTr=rTQQTr=uTu+vTv

由于 vR(mn)×(mn)xRn×k 没有关系,所以当 误差 u=0 时,才能使得残差的平方和 S 最小,即 因为 Rx=QTbR 为下三角矩阵,所以通过回代可以很容易地求解出 x 的值。

最终: Rx=QTb

在实际应用中,因为数值稳定性的要求 ,dense matrix 往往用QR求解 ,对于大型的稀疏矩阵则多用Cholesky分解(LU分解)。