线性代数(4):最小二乘法

线性代数(4):最小二乘法

在很多时候,我们在求解Ax=bAx=b方程时,如果A的列数太多,混入一些不准确的数据,此时方程时无解的,我们需要求解出最优解。这时候就需要使用最小二乘法来进行拟合。在讲解最小二乘法之前需要一些知识作为铺垫。

四个基本子空间

首先我们知道,对于一个m×nm×n的矩阵AA有四个子空间:列空间、行空间、零空间、左零空间。

列空间 (C(A)C(A)):列空间是RmR^m的子空间,是矩阵AA的列向量的线性组合的集合构成的空间,每个列向量有mm个分量,设矩阵AA的秩为rr,则AArr个主列,这rr个主列就是列空间的一组基,一组基中有rr个向量,所以列空间维数是rr
行空间C(AT)C(A^T)):行空间是RnR^n的子空间,是矩阵AA各行向量的线性组合的集合构成的空间,可以化为AA转置的列空间,因此行空间的秩也是rr,每个行向量有nn个分量,所以行空间的维数也是r。
零空间N(A)N(A)):零空间是RnR^n的子空间,是由Ax=0Ax=0的解所构成的空间。由于x本质是A列向量的线性组合,AA一共有nn个列向量,所以AA的秩为rr时,自由列有nrn-r列,xx中有nrn-r个自由变元,也就有nrn-r个基向量,因此维数也是nrn-r
左零空间N(AT)N(A^T)):左零空间是RmR^m的子空间,是由ATy=0A^Ty = 0的解的线性组合构成的空间,维数为mrm-r

子空间与正交

接着,我们会发现,这四个子空间中存在正交关系。我们知道,在空间中证明两个向量是正交关系只需要判断两向量的内积是否为0。那么在子空间中也是如此。空间的正交定义是:一个空间中的任意一个向量都与另一个空间中的任意一个向量正交。

零空间与行空间是正交的,证明起来非常容易。我们将Ax=0Ax=0写成下图的形式,很轻易就能证明,每一个行向量乘上xx向量都为0,由于行向量是行空间的一组基,因此可以代表全部的行向量,这就满足了空间正交的定义。

[R1R2......Rm][x1x2......]=[R1(x1,x2...)R2(x1,x2...)........................Rm(x1,x2...)]=[00..0]\left[\begin{matrix}R_1 \\ R_2 \\ ... \\ ... \\ R_m\end{matrix} \right] \left[\begin{matrix}x_1 \\ x_2 \\ ... \\ ... \end{matrix} \right] = \left[\begin{matrix}R_1(x_1,x_2 ...) \\ R_2(x_1,x_2 ...) \\ ............ \\ ............ \\R_m(x_1,x_2 ...) \end{matrix} \right] = \left[\begin{matrix}0 \\ 0 \\ . \\.\\0 \end{matrix} \right]

不光行空间与零空间是正交关系,我们也可以轻易推出列空间和左零空间也是正交关系
我们假设在一个R3R^3空间中,不难想象,假设矩阵AA的行空间是二维平面(r=2r=2),那么其零空间就是一条线(nr=1n-r = 1),又因为是正交关系,所以可知,零空间就是行空间二维平面的法向。因此,行空间与零空间之间关系类似于将空间一分为二,得到两个正交的子空间,我们把这称为RnR^n空间的正交补

子空间投影

向量-向量的投影问题

图1: 向量-向量投影问题。图片来源:作者自制

如图1,ppbbaa上的投影,写作p=xap = xaxx为倍数),根据向量减法得到,投影方向e=bpe = b-p。根据向量正交则内积为零的性质(aa垂直于ee)可得

aTe=aT(bp)=aT(bax)=0a^Te = a^T(b-p) = a^T(b-ax) = 0

这时再将p=xap=xa带入,可得

p=aaTbaTa=aaTaTabp = a \frac{a^Tb}{a^Ta} = \frac{aa^T}{a^Ta} b

这里我们可以将aaTaTa\frac{aa^T}{a^Ta}看作一个矩阵,称为投影矩阵PP

向量-平面的投影问题

如图2,a1a1a2a2为构成平面的一组基,pp在平面上。所以有p=x1^a1+x2^a2p = \hat{x_1}a_1 + \hat{x_2}a_2,或者直接写作p=Ax^p = A\hat{x}A=[a1a2]A=\left[\begin{matrix}a_1&a_2\end{matrix} \right](其中ana_n为列向量),x^=[x1^x2^]\hat{x} = \left[\begin{matrix}\hat{x_1}\\\hat{x_2}\end{matrix} \right]

图2: 向量-平面投影问题。图片来源:作者自制

由于ee是垂直于平面的向量,e=bpe = b-p,那么我们可以用内积形式表达eea1a_1a2a_2的垂直关系:a1T(bAx^)=0a_1^T(b-A\hat{x}) = 0a2T(bAx^)=0a_2^T(b-A\hat{x}) = 0,写成矩阵形式得:

[a1Ta2T](bAx^)=[00]\left[\begin{matrix}a_1^T\\a_2^T\end{matrix} \right](b-A\hat{x}) = \left[\begin{matrix}0\\0\end{matrix} \right]

AT(bAx^)=0A^T(b-A\hat{x}) = 0

上文已述,列空间与左零空间是正交关系,图2中的向量a1a1a2a2正是列空间中的向量,ee又垂直于这个平面,也就是说,ee位于AA的左零空间中。
我们继续展开式子:

ATbATAx^=0A^Tb-A^TA\hat{x} = 0

得到:

x^=(ATA)1ATb\hat{x} = (A^TA)^{-1}A^Tb

代入p=Ax^p=A\hat{x}得:

p=Ax^=A(ATA)1ATbp = A\hat{x} = A(A^TA)^{-1}A^Tb

这样我们就得到了向量p与向量b之间的投影关系,进而得到了投影矩阵:

P=A(ATA)1ATP = A(A^TA)^{-1}A^T

这也是投影矩阵的一般情况。那么PP有哪些性质呢?我们知道ATAA^TA是一个n×nn×n矩阵,并且是可逆的对称矩阵。对称矩阵的转置还是它本身,因此观察公式我们能得出

  • PT=PP^T = P

接着,根据图像,如果我们将b投影到A的列空间上两次,得到的结果依然是pp,因此有

  • P2=PP^2 = P

证明:
P2=P×P=A(ATA)1ATA(ATA)1AT=A(ATA)1AT=PP^2 = P×P = A(A^TA)^{-1}A^T A(A^TA)^{-1}A^T = A(A^TA)^{-1}A^T=P

那么投影矩阵有什么用呢?举例来说,它应该能产生出一个投影,如果让PPbb相乘,此时在极端情况下,如果bb位于列空间中时,那么有Pb=bPb=b;如果bb垂直于列空间,那么有Pb=0Pb=0,此时的bb就在左零空间中。一般情况下会有一个分量在列空间里,另一个分量在左零空间中。

因此,一个向量bb总有两个分量,一个分量在AA的列空间中(也就是pp),另一个分量垂直于AA的列空间(位于左零空间,也就是ee)。而投影矩阵的作用就是保留列空间中的那个分量,拿掉垂直于列空间的分量。

由此我们可以分别表示出ppee

p=Pbp = Pb

e=bp=bPb=(IP)be = b-p = b-Pb = (I-P)b

这里(I-P)也可以看作是一个投影矩阵,作用于bb向量,投影到左零空间中。ee被表示出来后,我们就可以控制误差了。

最小二乘法

有了上述知识的铺垫接下来就可以进入最小二乘法了。其实最小二乘法就是一种投影,最后就是保证误差最小,使用最小二乘法其实就是为了解决Ax=bAx=b无解的情况。

我们从一个案例开始:
例. 求解:三个点(1,1)(1,1)(2,2)(2,2)(3,2)(3,2)拟合的直线方程
我们设最优直线方程为:b=C+Dtb=C+Dt,带入三个点得:C+D=1C+D=1C+2D=2C+2D=2C+3D=2C+3D=2
写成矩阵形式为:

[111213][CD]=[122]\left[\begin{matrix}1 & 1 \\ 1 & 2 \\ 1 & 3 \end{matrix} \right] \left[\begin{matrix}C \\ D \end{matrix} \right] = \left[\begin{matrix}1 \\ 2\\2 \end{matrix} \right]

其中,

A=[111213],x^=[C^D^],b=[122]A = \left[\begin{matrix}1 & 1 \\ 1 & 2 \\ 1 & 3 \end{matrix} \right], \hat{x} = \left[\begin{matrix}\hat{C} \\ \hat{D} \end{matrix} \right], b= \left[\begin{matrix}1 \\ 2\\2 \end{matrix} \right]

列出矩阵方程后会发现Ax=bAx=b无解,为了求近似的x^\hat{x},由于Ax=bAx = b可能无解,那么只能求解最接近的那个可解问题,因为AxAx总是在列空间里,而bb不一定在,所以我们要把bb变为列空间中最为接近的向量,这样就把问题转化为了Ax^=pA\hat{x} = p,误差就是投影距离e=bpe = b-p。就有

ATb=ATAx^A^Tb = A^TA\hat{x}

求解:

ATA=[111123][111213]=[36614]A^TA = \left[\begin{matrix}1 & 1 &1 \\ 1 & 2 & 3 \end{matrix} \right] \left[\begin{matrix}1 & 1 \\ 1 & 2 \\ 1 & 3 \end{matrix} \right] = \left[\begin{matrix}3 & 6 \\ 6 & 14 \end{matrix} \right]

ATb=[111123][122]=[511]A^Tb = \left[\begin{matrix}1 & 1 &1 \\ 1 & 2 & 3 \end{matrix} \right] \left[\begin{matrix}1\\2 \\ 2\end{matrix} \right] = \left[\begin{matrix} 5 \\ 11 \end{matrix} \right]

解得:

x^=[2312]\hat{x} = \left[\begin{matrix} \frac{2}{3} \\ \frac{1}{2} \end{matrix} \right]

固拟合直线为:y=C^+D^x=23+12xy =\hat{C} +\hat{D}x = \frac{2}{3}+ \frac{1}{2}x

我们也可以通过求偏导,求极值,从导数的角度来求得拟合直线,可以先表示出误差Axb|Ax-b|,为了便于计算,我们去求它们的平方和:

e2=Axb2|e|^2 = |Ax-b|^2

那么总误差E=e12+e22+e32E = e_1^2+e_2^2+e_3^2,求EE的最小值EminE_{min}即可。

求出C^\hat{C}D^\hat{D}后三个点各自的误差也可以求得,只需带入三个点的坐标即可得到三个pp,通过e=bpe = b-p,最终我们得到了:

b=[122],p=[76106136],e=[162616]b = \left[\begin{matrix} 1 \\ 2\\2 \end{matrix} \right], p = \left[\begin{matrix} \frac{7}{6}\\\frac{10}{6}\\\frac{13}{6} \end{matrix} \right], e = \left[\begin{matrix} -\frac{1}{6}\\\frac{2}{6}\\-\frac{1}{6} \end{matrix} \right]

我们就得到了如下性质:

  • 误差向量ee与投影向量pp垂直;
  • 误差向量ee还垂直于列空间中的每一个向量。

最后需要注意,最小二乘法存在一定的局限性,那就是最小二乘法很容易受到离群量的影响。如果数据中有误差过大的点,那么它会对整个结果带来巨大的影响。