超定方程组

已知 m×nm \times n 的列满秩矩阵 A\boldsymbol{A}mnm \ge n),未知 nn 维列向量 x\boldsymbol{x},已知 mm 维列向量 y\boldsymbol{y},有:

Ax=y\boldsymbol{Ax} = \boldsymbol{y}

m>nm > n 时,这是一个超定方程组(方程的数量大于未知数的数量,且这些方程之间经常存在一些小矛盾),通常不存在 x\boldsymbol{x} 的精确解。那么我们退一步,我们想要一个“很像解”的解。

正规方程

🤓👆诶,我们可以往等式两边的左边同乘一个 AT\boldsymbol{A}^{\mathrm{T}}(这一乘其实严格来说并不严谨,毕竟原来等号就很难成立,且矩阵乘法不满足消去律,这里实际上我们构造了一个新的方程),得到:

ATAx=ATy\boldsymbol{A}^{\mathrm{T}} \boldsymbol{Ax} = \boldsymbol{A}^{\mathrm{T}} \boldsymbol{y}

这个方程就叫正规方程

这式子漂不漂亮?这式子太漂亮了!ATA\boldsymbol{A}^{\mathrm{T}} \boldsymbol{A}nn 阶方阵(可以求逆!),x\boldsymbol{x}ATy\boldsymbol{A}^{\mathrm{T}} \boldsymbol{y} 都是 nn 维列向量,那一切就舒服♡多了:

x=(ATA)1ATy\boldsymbol{x} = \left( \boldsymbol{A}^{\mathrm{T}} \boldsymbol{A} \right)^{-1} \boldsymbol{A}^{\mathrm{T}} \boldsymbol{y}

这样,我们就可以得到一个很不错(实际上是最不错,这就是今天要证明的)的 x\boldsymbol{x} 的解。其中,(ATA)1AT\left( \boldsymbol{A}^{\mathrm{T}} \boldsymbol{A} \right)^{-1} \boldsymbol{A}^{\mathrm{T}} 称为 A\boldsymbol{A}伪逆(就像伪娘一样)

残差、最小二乘解

很多时候,精确解对于超定方程组是个奢求,即 Ax\boldsymbol{Ax}y\boldsymbol{y} 总是有一些偏差的。对于一个解,我们定义它的残差向量 r\boldsymbol{r}

r=yAx\boldsymbol{r} = \boldsymbol{y} - \boldsymbol{Ax}

显然,残差的范数(模)r\lVert \boldsymbol{r} \rVert 越小,这个解 x\boldsymbol{x} 就越好。当 r\lVert \boldsymbol{r} \rVert 取到最小值时,x\boldsymbol{x} 就是我们最想要的最小二乘解Ax\boldsymbol{Ax}y\boldsymbol{y} 各位相差的平方和最小)。

证明:正规方程的解就是最小二乘解

因为我太菜了,导不出来 基于矩阵求导的证明一个字也看不懂,所以这里换个角度,用几何法来证。哎呀~ 几何法得了 MVP!

寻找最小二乘解,从几何角度看,就是在 A\boldsymbol{A} 的列空间 Col(A)\operatorname{Col}(\boldsymbol{A})(由 A\boldsymbol{A} 各个列向量张成的空间)中寻找与 y\boldsymbol{y} 最接近的向量(即 y\boldsymbol{y}Col(A)\operatorname{Col}(\boldsymbol{A}) 中的正交投影)。那么,正如平面外一点到平面,垂线段最短,想要 y\boldsymbol{y}Ax\boldsymbol{Ax} 的残差 r\boldsymbol{r} 最短,那 r\boldsymbol{r} 就必须与 Col(A)\operatorname{Col}(\boldsymbol{A}) 正交。

Col(A)\operatorname{Col}(\boldsymbol{A}) 正交,就是和它的每个基向量都正交(内积等于 0)。记 A=[c1c2cn]\boldsymbol{A} = \begin{bmatrix} \boldsymbol{c}_{1} & \boldsymbol{c}_{2} & \cdots & \boldsymbol{c}_{n} \end{bmatrix},那么:

{c1Tr=0c2Tr=0cnTr=0\left\{ \begin{array}{c} \boldsymbol{c}_{1}^{\mathrm{T}} \boldsymbol{r} = 0 \\ \boldsymbol{c}_{2}^{\mathrm{T}} \boldsymbol{r} = 0 \\ \vdots \\ \boldsymbol{c}_{n}^{\mathrm{T}} \boldsymbol{r} = 0 \end{array} \right.

合起来就是:

ATr=0\boldsymbol{A}^{\mathrm{T}} \boldsymbol{r} = \boldsymbol{0}

r=yAx\boldsymbol{r} = \boldsymbol{y} - \boldsymbol{Ax} 代入:

AT(yAx)=0\boldsymbol{A}^{\mathrm{T}} ( \boldsymbol{y} - \boldsymbol{Ax} ) = \boldsymbol{0}

整理一下:

ATAx=ATy\boldsymbol{A}^{\mathrm{T}} \boldsymbol{Ax} = \boldsymbol{A}^{\mathrm{T}} \boldsymbol{y}

这,恰是正规方程!

所以,求解超定方程组时,通过构造正规方程得到的解就是最小二乘解。

Quod Erat Demonstrandum Miau~