最小二乘法(Least Squares)
实际问题中常出现Ax=bAx=bAx=b不相容(无解)的情况,这时候就希望找到近似解xxx,使得AxAxAx尽量接近bbb。
定义:如果m×nm\times nm×n的矩阵AAA和向量bbb属于RmR^mRm,则Ax=bAx=bAx=b的最小二乘解(Least Squares Solutions)是RnR^nRn中的x^\hat{x}x^,使得∣∣b−Ax^∣∣≤∣∣b−Ax∣∣||b-A\hat{x}||\le ||b-Ax||∣∣b−Ax^∣∣≤∣∣b−Ax∣∣对所有的x∈Rnx\in R^nx∈Rn都成立。
最小二乘解的最终要的特征是,无论怎么选取xxx,向量AxAxAx必然属于列空间Col ACol\space ACol A,所以需要寻找xxx使得AxAxAx是Col ACol\space ACol A中最接近bbb的点。
定理:方程Ax=bAx=bAx=b的最小二乘解集和法方程ATAx=ATbA^TAx=A^TbATAx=ATb的非空解集一致。
注意,这里ATAx=ATbA^TAx=A^TbATAx=ATb称为Ax=bAx=bAx=b的法方程(normal equations),此法方程的解给出所有Ax=bAx=bAx=b的最小二乘解,在统计学中常记为XTXβ=xTyX^TX\beta=x^TyXTXβ=xTy。
例1:求不相容方程组Ax=bAx=bAx=b的最小二乘解,其中A=[400211]A=\begin{bmatrix}4&0\\0&2\\1&1\end{bmatrix}A=⎣⎡401021⎦⎤,b=[2011]b=\begin{bmatrix}2\\0\\11\end{bmatrix}b=⎣⎡2011⎦⎤
解:
由法方程得:
ATAx=ATbA^TAx=A^TbATAx=ATb
ATA=[401021][400211]=[17115]A^TA=\begin{bmatrix}4&0&1\\0&2&1\end{bmatrix}\begin{bmatrix}4&0\\0&2\\1&1\end{bmatrix}=\begin{bmatrix}17&1\\1&5\end{bmatrix}ATA=[400211]⎣⎡401021⎦⎤=[17115]
ATb=[401021][2011]=[1911]A^Tb=\begin{bmatrix}4&0&1\\0&2&1\end{bmatrix}\begin{bmatrix}2\\0\\11\end{bmatrix}=\begin{bmatrix}19\\11\end{bmatrix}ATb=[400211]⎣⎡2011⎦⎤=[1911]
则ATAx=ATbA^TAx=A^TbATAx=ATb可以变为:
[17115][x1x2]=[1911]\begin{bmatrix}17&1\\1&5\end{bmatrix}\begin{bmatrix}x_1\\x_2\end{bmatrix}=\begin{bmatrix}19\\11\end{bmatrix}[17115][x1x2]=[1911]
由于ATAA^TAATA的秩为2,可逆,所以可求得(ATA)−1=184[5−1−117](A^TA)^{-1}=\frac{1}{84}\begin{bmatrix}5&-1\\-1&17\end{bmatrix}(ATA)−1=841[5−1−117]
则ATAx=ATbA^TAx=A^TbATAx=ATb可以解得:x=x^=(ATA)−1ATb=184[5−1−117][1911]=[12]x=\hat{x}=(A^TA)^{-1}A^Tb=\frac{1}{84}\begin{bmatrix}5&-1\\-1&17\end{bmatrix}\begin{bmatrix}19\\11\end{bmatrix}=\begin{bmatrix}1\\2\end{bmatrix}x=x^=(ATA)−1ATb=841[5−1−117][1911]=[12]
例2:求方程组Ax=bAx=bAx=b的最小二乘解,其中:
A=[110011001010101010011001]A=\begin{bmatrix}1&1&0&0\\1&1&0&0\\1&0&1&0\\1&0&1&0\\1&0&0&1\\1&0&0&1\end{bmatrix}A=⎣⎢⎢⎢⎢⎢⎢⎡111111110000001100000011⎦⎥⎥⎥⎥⎥⎥⎤,b=[−3−10251]b=\begin{bmatrix}-3\\-1\\0\\2\\5\\1\end{bmatrix}b=⎣⎢⎢⎢⎢⎢⎢⎡−3−10251⎦⎥⎥⎥⎥⎥⎥⎤
解:
ATA=[6222220020202002]A^TA=\begin{bmatrix}6&2&2&2\\2&2&0&0\\2&0&2&0\\2&0&0&2\end{bmatrix}ATA=⎣⎢⎢⎡6222220020202002⎦⎥⎥⎤
MATLAB求AAA的秩为3,所以AAA不可逆。
ATb=[4−426]A^Tb=\begin{bmatrix}4\\-4\\2\\6\end{bmatrix}ATb=⎣⎢⎢⎡4−426⎦⎥⎥⎤
由于无法求出(ATA)−1(A^TA)^{-1}(ATA)−1,所以可以通过增广矩阵化简的方法求(ATA)x=(ATb)(A^TA)x=(A^Tb)(ATA)x=(ATb)的通解:
[622242200−42020220026]→[10013010−1−5001−1−200000]\begin{bmatrix}6&2&2&2&4\\2&2&0&0&-4\\2&0&2&0&2\\2&0&0&2&6\end{bmatrix}\rightarrow \begin{bmatrix}1&0&0&1&3\\0&1&0&-1&-5\\0&0&1&-1&-2\\0&0&0&0&0\end{bmatrix}⎣⎢⎢⎡62222200202020024−426⎦⎥⎥⎤→⎣⎢⎢⎡1000010000101−1−103−5−20⎦⎥⎥⎤
通解也是Ax=bAx=bAx=b的最小二乘解为:
x=[x1x2x3x4]=[3−5−20]+x4[−1111]x=\begin{bmatrix}x_1\\x_2\\x_3\\x_4\end{bmatrix}=\begin{bmatrix}3\\-5\\-2\\0\end{bmatrix}+x_4\begin{bmatrix}-1\\1\\1\\1\end{bmatrix}x=⎣⎢⎢⎡x1x2x3x4⎦⎥⎥⎤=⎣⎢⎢⎡3−5−20⎦⎥⎥⎤+x4⎣⎢⎢⎡−1111⎦⎥⎥⎤
使用QR分解求最小二乘解
定理:如果m×nm\times nm×n的矩阵AAA的各列线性无关,A=QRA=QRA=QR是矩阵AAA的QR分解(其中QQQ为一个m×nm\times nm×n的矩阵,其各列形成Col A的一个标准正交基,RRR是一个n×nn\times nn×n的上三角可逆矩阵,且在对角线上的元素为正数),那么对每一个属于RmR^mRm的bbb,方程Ax=bAx=bAx=b有唯一的最小二乘解x^=R−1QTb\hat{x}=R^{-1}Q^Tbx^=R−1QTb。
又因为上面的RRR是一个上三角矩阵,所以x^=R−1QTb\hat{x}=R^{-1}Q^Tbx^=R−1QTb可变形为
Rx^=QTbR\hat{x}=Q^TbRx^=QTb,解这个形式的方程计算量更小。
例:求方程组Ax=bAx=bAx=b的最小二乘解,其中:
A=[135110112133]A=\begin{bmatrix}1&3&5\\1&1&0\\1&1&2\\1&3&3\end{bmatrix}A=⎣⎢⎢⎡111131135023⎦⎥⎥⎤,b=[357−3]b=\begin{bmatrix}3\\5\\7\\-3\end{bmatrix}b=⎣⎢⎢⎡357−3⎦⎥⎥⎤
使用MATLAB求QR分解求得:
A =
1 3 5
1 1 0
1 1 2
1 3 3
>> [Q R]=qr(A)
Q =
-1/2 1/2 -1/2 -1/2
-1/2 -1/2 1/2 -1/2
-1/2 -1/2 -1/2 1/2
-1/2 1/2 1/2 1/2
R =
-2 -4 -5
0 2 3
0 0 -2
0 0 0
即A=[−1212−12−12−12−1212−12−12−12−1212−12121212][−2−4−502300−2000]=[135110112133]A=\begin{bmatrix}-\frac{1}{2}&\frac{1}{2}&-\frac{1}{2}&-\frac{1}{2}\\-\frac{1}{2}&-\frac{1}{2}&\frac{1}{2}&-\frac{1}{2}\\-\frac{1}{2}&-\frac{1}{2}&-\frac{1}{2}&\frac{1}{2}\\-\frac{1}{2}&\frac{1}{2}&\frac{1}{2}&\frac{1}{2}\end{bmatrix}\begin{bmatrix}-2&-4&-5\\0&2&3\\0&0&-2\\0&0&0\end{bmatrix}=\begin{bmatrix}1&3&5\\1&1&0\\1&1&2\\1&3&3\end{bmatrix}A=⎣⎢⎢⎡−21−21−21−2121−21−2121−2121−2121−21−212121⎦⎥⎥⎤⎣⎢⎢⎡−2000−4200−53−20⎦⎥⎥⎤=⎣⎢⎢⎡111131135023⎦⎥⎥⎤
经验算,上述QR分解(由于QR分解不是唯一的,上述分解可能和手算不一致)是正确的。
>> QT = Q.'
QT =
-1/2 -1/2 -1/2 -1/2
1/2 -1/2 -1/2 1/2
-1/2 1/2 -1/2 1/2
-1/2 -1/2 1/2 1/2
b =
3
5
7
-3
>> QT*b
ans =
-6
-6
-4
-2
可见如果用MATLAB的QR分解得到的矩阵,就会有
Rx=QTbRx=Q^TbRx=QTb
[−2−4−502300−2000][x1x2x3]=[−6−6−4−2]\begin{bmatrix}-2&-4&-5\\0&2&3\\0&0&-2\\0&0&0\end{bmatrix}\begin{bmatrix}x_1\\x_2\\x_3\end{bmatrix}=\begin{bmatrix}-6\\-6\\-4\\-2\end{bmatrix}⎣⎢⎢⎡−2000−4200−53−20⎦⎥⎥⎤⎣⎡x1x2x3⎦⎤=⎣⎢⎢⎡−6−6−4−2⎦⎥⎥⎤
增广矩阵:
[−2−4−5−6023−600−2−4]→[10010010−60012]\begin{bmatrix}-2&-4&-5&-6\\0&2&3&-6\\0&0&-2&-4\end{bmatrix}\rightarrow \begin{bmatrix}1&0&0&10\\0&1&0&-6\\0&0&1&2\end{bmatrix}⎣⎡−200−420−53−2−6−6−4⎦⎤→⎣⎡10001000110−62⎦⎤
解得Rx=QTbRx=Q^TbRx=QTb的最小二乘解x^\hat{x}x^为:
x^=[10−62]\hat{x}=\begin{bmatrix}10\\-6\\2\end{bmatrix}x^=⎣⎡10−62⎦⎤
本文介绍了最小二乘法的基本概念及应用,通过实例演示了如何求解不相容方程组的最小二乘解,并展示了QR分解求解最小二乘问题的方法。
1606

被折叠的 条评论
为什么被折叠?



