超定方程组的最小二乘解

\qquad 看了很多关于最小二乘解的博客,事实上都没有找到自己想要的证明过程,后来学了矩阵函数时才彻底搞明白了这件事情,所以和大家简单分享如下:
\qquad 已知矩阵 A m × n ( m > n ) A_{m×n}(m>n) Am×n(mn)是列满秩的,则超定方程组 A x = B Ax=B Ax=B的最小二乘解为
x = ( A T A ) − 1 A T B x=(A^TA)^{-1}A^TB x=(ATA)1ATB
\qquad 需要说明的是根据线性代数的知识, r a n k ( A T A ) = r a n k ( A A T ) = r a n k ( A ) = n rank(A^TA)=rank(AA^T)=rank(A)=n rank(ATA)=rank(AAT)=rank(A)=n,而 A T A A^TA ATA的维数是n×n,所以 A T A A^TA ATA一定可逆。事实上MATLAB矩阵求伪逆用的也是这个公式(只不过令 B = E m B=E_m B=Em)。
\qquad 最小二乘法是让近似解代入的等式右边的 B ∗ B^* B B B B的度量最小,为了和向量的模长兼容,这里取的是矩阵的Frobenius范数(详见这里)因此问题转换为
x ∗ = a r g min ⁡ x ∣ ∣ B ∗ − B ∣ ∣ F s . t . A x ∗ = B ∗ x^*=arg\min_{x}||B^*-B||_F\\ s.t.Ax^*=B^* x=argxminBBFs.t.Ax=B
为了简便起见,我们仅讨论B是向量的情况(事实上矩阵的情况也可以通过向量化的方法加以解决),即 A x = b Ax=b Ax=b

该问题也等价为
F ( x ) = ( A x − b ) T ( A x − b ) x ∗ = a r g min ⁡ x F ( x ) F(x)=(Ax-b)^T(Ax-b)\\ x^*=arg\min_{x}F(x) F(x)=(Axb)T(Axb)x=argxminF(x)
F ( x ) F(x) F(x)展开如下:
F ( x ) = ( A x − b ) T ( A x − b ) = ( x T A − b T ) ( A x − b ) = x T ( A T A ) x − b T A x − A T b x + b T b = x T ( A T A ) x − 2 x T ( A T b ) + b T b \begin{aligned} F(x)&=(Ax-b)^T(Ax-b)\\ &=(x^TA-b^T)(Ax-b)\\ &=x^T(A^TA)x-b^TAx-A^Tbx+b^Tb\\ &=x^T(A^TA)x-2x^T(A^Tb)+b^Tb \end{aligned} F(x)=(Axb)T(Axb)=(xTAbT)(Axb)=xT(ATA)xbTAxATbx+bTb=xT(ATA)x2xT(ATb)+bTb
需要说明的是 b T A x b^TAx bTAx是数,因此它等于本身的转置等于 A T b x A^Tbx ATbx,下面就是求 F ( x ) F(x) F(x)的最小值,由于 A A T AA^T AAT是半正定的(因为 x T ( A A T ) x = ( A T x ) T ( A T x ) ≥ 0 x^T(AA^T)x=(A^Tx)^T(A^Tx)\geq0 xT(AAT)x=(ATx)T(ATx)0),而因为之前我们证明了 A A A列满秩时 A T A A^TA ATA可逆,因此 A T A A^TA ATA必定没有零特征值,所以 A A T AA^T AAT是正定的。这样, F ( x ) F(x) F(x)的极值点就一定是极小值点(即严格凸优化问题)。下面无非就是求导的问题:
∂ F ( x ) ∂ x = ( A T A + ( A T A ) T ) x − 2 ( A T b ) = 2 ( A T A ) x − 2 ( A T b ) \frac{\partial F(x)}{\partial x}=(A^TA+(A^TA)^T)x-2(A^Tb)\\= 2(A^TA)x-2(A^Tb) xF(x)=(ATA+(ATA)T)x2(ATb)=2(ATA)x2(ATb)
令其等于0,求得
x ∗ = ( A T A ) − 1 A T b x^*=(A^TA)^{-1}A^Tb x=(ATA)1ATb
这就是 F ( x ) F(x) F(x)的极小值点即最小二乘解。
不清楚矩阵函数求导的同志可以看一下如下的公式:
d A ( x ) B ( x ) d x = d A ( x ) x B ( x ) + A ( x ) d B ( x ) d x d x T A x d x = ( A + A T ) x d C T x d x = d x T C d x = C \begin{aligned} &\frac{dA(x)B(x)}{dx}=\frac{dA(x)}{x}B(x)+A(x)\frac{dB(x)}{dx}\\ &\frac{dx^TAx}{dx}=(A+A^T)x\\ &\frac{dC^Tx}{dx}=\frac{dx^TC}{dx}=C \end{aligned} dxdA(x)B(x)=xdA(x)B(x)+A(x)dxdB(x)dxdxTAx=(A+AT)xdxdCTx=dxdxTC=C

你可能感兴趣的:(线性代数,矩阵,机器学习)