当前位置:   article > 正文

数值计算之 最小二乘法(1)最小二乘计算与线性方程_最小二乘法求线性方程组

最小二乘法求线性方程组

数值计算之 最小二乘法(1)最小二乘计算与矩阵

前言

本篇开启一个非常重要的内容,最小二乘法。它在方程组求解、多视图几何计算、线性优化等方面具有广泛的应用。

本节是最小二乘法的第一部分,将最小二乘与线性代数关联。

最小二乘法与线性方程组

最小二乘法的起源

在数值计算拟合法中已经提到过,最小二乘法最早用于数据拟合:
arg min ⁡ f ( x ) ∑ i = 0 n ( f ( x i ) − y i ) 2 \argmin_{f(x)} \sum_{i=0}^n (f(x_i)-y_i)^2 f(x)argmini=0n(f(xi)yi)2

非齐次线性方程组

现在考虑下面这个线性方程组:
{ x 1 + x 2 = 0 x 1 + 2 x 2 = 2 2 x 1 + 3 x 2 = 3

{x1+x2=0x1+2x2=22x1+3x2=3
x1+x2=0x1+2x2=22x1+3x2=3
由非齐次线性方程组的秩与解的关系,上面的线性方程组的稀疏矩阵和增广矩阵有 r a n k ( A ) < r a n k ( A , b ) rank(A)<rank(A,b) rank(A)<rank(A,b),因此是没有解析解的。方程数比未知量要多,就是所谓的超定方程,没有解析解。

在工程实践中,既然得不到使超定方程完全符合等式的解,那就寻找一个能在最大程度上使方程组成立的解。因此,我们引入了线性方程组的最小二乘解

线性方程组的最小二乘解

对于超定的线性方程组 A x = b , A ∈ R m × n Ax=b,A\in R^{m\times n} Ax=b,ARm×n,没有使其成立的解析解,则可以求它的一个最小二乘解 x ^ \hat x x^,满足:
∀ x ∈ R n , ∣ ∣ A x ^ − b ∣ ∣ 2 2 ≤ ∣ ∣ A x − b ∣ ∣ 2 2 i . e . arg min ⁡ x ∣ ∣ A x − b ∣ ∣ 2 2 ( 1 ) \forall x\in R^n, ||A\hat x-b||^2_2\le ||Ax-b||^2_2 \\ \quad \\ i.e. \quad \argmin_{x}||Ax-b||^2_2 \quad (1) xRn,Ax^b22Axb22i.e.xargminAxb22(1)

最小二乘解与矩阵计算

观察式(1)的形式,其实是向量的2-范数的平方,而向量的2-范数的平方又可以写成内积的形式,因此式(1)实际上可以写成以下关于向量 x x x的方程:
arg min ⁡ x ∣ ∣ A x − b ∣ ∣ 2 2 = arg min ⁡ x ( A x − b ) ⋅ ( A x − b ) = arg min ⁡ x ( A x − b ) T ( A x − b ) \argmin_{x}||Ax-b||^2_2 = \argmin_{x} (Ax-b)\cdot(Ax-b) \\ \quad \\ = \argmin_{x} (Ax-b)^T(Ax-b) xargminAxb22=xargmin(Axb)(Axb)=xargmin(Axb)T(Axb)

既然是求最小值,那么就可以通过对上面矩阵求导,使得偏导数为0,得到极值点。(并非所有函数都满足偏导为0的点都是极值点,但是线性最小二乘是满足的

激动人心的矩阵求导时刻来了(参考我之前写的矩阵求导法),我将通过之前写的快速求导法和微分求导法分别对这个方程求导:


快速求导法:分子布局,向量后置求导,系数不变;向量前置求导,系数前置并转置。
d [ ( A x − b ) T ( A x − b ) ] d x T = ( A x − b ) T d ( A x − b ) d x T + ( A x − b ) T d ( A x − b ) T d x T = ( A x − b ) T A + ( A x − b ) T A \frac {d[(Ax-b)^T(Ax-b)]}{dx^T}\\ \quad \\ = (Ax-b)^T\frac {d(Ax-b)}{dx^T}+(Ax-b)^T\frac {d(Ax-b)^T}{dx^T} \\ \quad \\ = (Ax-b)^TA+(Ax-b)^TA dxTd[(Axb)T(Axb)]=(Axb)TdxTd(Axb)+(Axb)TdxTd(Axb)T=(Axb)TA+(Axb)TA


微分求导法:分子布局,将矩阵求导写成全微分形式: t r ( ∂ f ( x ) ∂ x T d x ) tr(\frac{\partial f(x)}{\partial x^T}dx) tr(xTf(x)dx)
t r ( d [ ( A x − b ) T ( A x − b ) ] ) = t r ( d [ ( A x − b ) T ] ( A x − b ) + ( A x − b ) T d ( A x − b ) ) = t r ( ( A x − b ) T d ( A x − b ) + ( A x − b ) T A d x ) = t r ( 2 ( A x − b ) T A d x ) ( A x − b ) T ( A x − b ) ∂ x T = 2 ( A x − b ) T A tr(d[(Ax-b)^T(Ax-b)]) \\ = tr(d[(Ax-b)^T](Ax-b)+(Ax-b)^Td(Ax-b)) \\ = tr((Ax-b)^Td(Ax-b)+(Ax-b)^TAdx) \\ =tr(2(Ax-b)^TAdx) \\ \quad \\ \frac{(Ax-b)^T(Ax-b)}{\partial x^T} = 2(Ax-b)^TA tr(d[(Axb)T(Axb)])=tr(d[(Axb)T](Axb)+(Axb)Td(Axb))=tr((Axb)Td(Axb)+(Axb)TAdx)=tr(2(Axb)TAdx)xT(Axb)T(Axb)=2(Axb)TA


接下来,由偏导为0求极值:
2 ( A x − b ) T A = 0 A T A x − A T b = 0 A T A x = A T b i f r a n k ( A ) = n , x = ( A T A ) − 1 A T b 2(Ax-b)^TA=0 \\ A^TAx-A^Tb=0 \\ A^TAx=A^Tb \\ \quad \\ if \quad rank(A)=n, \\ x=(A^TA)^{-1}A^Tb 2(Axb)TA=0ATAxATb=0ATAx=ATbifrank(A)=n,x=(ATA)1ATb
也就是说,如果 A A A是列满秩的,即 A T A A^TA ATA是可逆阵,则线性最小二乘解用上面的公式就能计算出来了。

补充证明 r ( A ) = r ( A T A ) r(A)=r(A^TA) r(A)=r(ATA)
秩 − 零 度 化 定 理 有 : r ( A ) + d i m N U L ( A ) = n r ( A T A ) + d i m N U L ( A T A ) = n A x = 0 → A T A x = 0 A T A x = 0 → x T A T A x = ( A x ) T A x = 0 → A x = 0 i . e . A x = 0    ⟺    A T A x = 0 ∴ N U L ( A ) = N U L ( A T A ) r ( A ) = r ( A T A ) 秩-零度化定理有:\\ r(A)+dimNUL(A)=n \\ r(A^TA)+dimNUL(A^TA)=n \\ \quad \\ Ax=0 \to A^TAx=0 \\ A^TAx=0 \to x^TA^TAx=(Ax)^TAx=0 \to Ax=0 \\ i. e. \quad Ax=0 \iff A^TAx=0 \\ \\ \quad \\ \therefore \quad NUL(A)=NUL(A^TA) \\ r(A)=r(A^TA) r(A)+dimNUL(A)=nr(ATA)+dimNUL(ATA)=nAx=0ATAx=0ATAx=0xTATAx=(Ax)TAx=0Ax=0i.e.Ax=0ATAx=0NUL(A)=NUL(ATA)r(A)=r(ATA)

总结

本篇是最小二乘法的开篇,引出最小二乘与方程组的关系,并且获得了线性最小二乘的矩阵形式 arg min ⁡ x ( A x − b ) T ( A x − b ) \argmin_{x} (Ax-b)^T(Ax-b) xargmin(Axb)T(Axb),并计算了当超定方程列满秩时的最小二乘解形式 x = ( A T A ) − 1 A T b x=(A^TA)^{-1}A^Tb x=(ATA)1ATb

下篇将讨论当 A A A不是列满秩时,线性最小二乘的SVD解法。

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号