一、线性方程组矩阵化

        对于下面包含m个方程、n个未知量的线性方程组:

\begin{cases} a_{11}x_1 + a_{12}x_2+\cdots + a_{1n}x_n = b_1\\ a_{21}x_1 + a_{22}x_2+\cdots + a_{2n}x_n = b_2\\ \qquad\qquad\vdots\\ a_{m1}x_1 + a_{m2}x_2+\cdots + a_{mn}x_n = b_m \end{cases}\, \, \, \, \, \, \, \, (1)

        将(1)写成矩阵形式:

\mathbf{Ax=b}\, \, \, \, \, \, \, \, (2)

        其中:

\mathbf{A} = \begin{bmatrix} a_{11} & a_{12} & \cdots & a_{1n}\\ a_{21} & a_{22} & \cdots & a_{2n}\\ \vdots & \vdots & \ddots & \vdots\\ a_{m1} & a_{m2} & \cdots & a_{mn} \end{bmatrix}

        为线性方程组的系数矩阵,

\boldsymbol{x}=\begin{bmatrix} x_1\\ x_2\\ \vdots\\ x_n \end{bmatrix}, \ \boldsymbol{b}=\begin{bmatrix} b_1\\ b_2\\ \vdots\\ b_m \end{bmatrix}

        分别为待求解组成的向量和方程组右边的常数项组成的向量。

        由线性方程组的求解理论可知,在求解线性方程组时,当方程的个数多于变量的个数(m>n)时,方程往往无解,此类方程组称为矛盾方程组超定方程组,最小二乘法是求解这类线性方程组的经典方法,本篇文章将进行详细的介绍与推导。

二、最小二乘法行空间求解

        假设线性方程组(1)是矛盾方程组,即m>n,从行空间的角度,不存在一组系数x_1,x_2,\cdots ,x_n使得方程组(1)中的每一个方程都成立。此时,我们希望存在一组系数x_1,x_2,\cdots ,x_n使得方程组的每一个方程能够尽量成立,即对于每一个方程,我们希望 a_{i1}x_1 + a_{i2}x_2+\cdots + a_{in}x_n=b_i,(i=1,2,··,m)能够尽量成立。根据最小二乘法误差的平方和最小的原则,我们可以用\left(\sum_{j = 1}^{n}a_{ij}x_j - b_i\right)^2来衡量第i个方程在这组系数下的误差,针对线性方程组,这组系数的求解问题就可以转化为如下优化模型:

\underset{x_1,x_2,\cdots,x_n}{min} f(x_1,x_2,\cdots,x_n) = \sum_{i = 1}^{m}\left(\sum_{j = 1}^{n}a_{ij}x_j - b_i\right)^2\, \, \, \, \, \, \, \, (3)

       为求解上述优化模型最优解,需要(3)中目标函数对每个自变量求偏导数并等于0,即:

\frac{\partial f(x_1,x_2,\cdots,x_n)}{\partial x_k}=2\sum_{i = 1}^{m}a_{ik}\left(\sum_{j = 1}^{n}a_{ij}x_j - b_i\right)=0, \\\ k = 1,2,\cdots,n\, \, \, \, \, \, \, \, (4)

        对(4)求解可以转化为如下线性方程组的求解:\mathbf{x}=\tilde{\mathbf{A}}^{-1} \tilde{\mathbf{b}}\, \, \, \, \, \, \, \, (10)

\begin{cases} \sum_{i = 1}^{m}\sum_{j = 1}^{n}a_{i1}a_{ij}x_j = \sum_{i = 1}^{m}a_{i1}b_i\\ \sum_{i = 1}^{m}\sum_{j = 1}^{n}a_{i2}a_{ij}x_j = \sum_{i = 1}^{m}a_{i2}b_i\\ \qquad\vdots\\ \sum_{i = 1}^{m}\sum_{j = 1}^{n}a_{in}a_{ij}x_j = \sum_{i = 1}^{m}a_{in}b_i \end{cases}\, \, \, \, \, \, \, \, (8)

        显然(8)是一个有n个未知量n个方程的线性方程组,令:

\tilde{\mathbf{A}} = \begin{bmatrix} \sum_{i = 1}^{m}a_{i1}a_{i1} & \sum_{i = 1}^{m}a_{i1}a_{i2} & \cdots & \sum_{i = 1}^{m}a_{i1}a_{in}\\ \sum_{i = 1}^{m}a_{i2}a_{i1} & \sum_{i = 1}^{m}a_{i2}a_{i2} & \cdots & \sum_{i = 1}^{m}a_{i2}a_{in}\\ \vdots & \vdots & \ddots & \vdots\\ \sum_{i = 1}^{m}a_{in}a_{i1} & \sum_{i = 1}^{m}a_{in}a_{i2} & \cdots & \sum_{i = 1}^{m}a_{in}a_{in} \end{bmatrix}, \ \\ \tilde{\boldsymbol{b}} = \begin{bmatrix} \sum_{i = 1}^{m}a_{i1}b_{i}\\ \sum_{i = 1}^{m}a_{i2}b_{i}\\ \vdots\\ \sum_{i = 1}^{m}a_{in}b_{i} \end{bmatrix},\, \, \, \, \, \, \, \, (9)

        则(8)的解为:

\mathbf{x}=\tilde{\mathbf{A}}^{-1}\tilde{\mathbf{b}}\, \, \, \, \, \, \, \, (10) 

        虽然(10)的表达式很简洁,但是由于(9)的系数矩阵\tilde{\mathbf{A}}过于复杂,因此在实际情况中我们大多从线性方程组的列空间角度给出方程组的最小二乘解。

三、最小二乘法列空间求解(最常用)

        当线性方程组(1)为矛盾方程组时,从列空间图像的角度,说明常数项向量\mathbf{b}不在方程组(1)的系数矩阵\mathbf{A}的列空间中,或者说\mathbf{b}不能由\mathbf{A}的列向量线性表出。然而。我们可以寻求找到一组系数x_1,x_2,\cdots ,x_n使得x_1\mathbf{a_{1}} + x_2\mathbf{a_{2}}+\cdots + x_n\mathbf{a_{n}}=\mathbf{Ax}与向量\mathbf{b}尽量接近。根据最小二乘法要求,用这两项之差的2-范数的平方来衡量它们之间的误差,此时这组系数的求解问题可以转化为如下优化模型:

\underset{\boldsymbol{x}}{\min} f(\boldsymbol{x}) = \|\mathbf{A}\boldsymbol{x} - \boldsymbol{b}\|^2\, \, \, \, \, \, \, \, (11)

        关于最小二乘法为何选择误差的2-范数的平方或者误差平方和作为误差衡量的准则,可见我的另一边博客最小二乘法概率解释部分的内容:

最小二乘法之直线拟合理论分析与推导(行空间、列空间、几何解释、概率解释)-CSDN博客

        与行空间类似,为了得到(11)的最优解,需要对目标函数关于自变量向量\mathbf{x}求导数并令其等于0,首先将目标函数展开得到:

f(\boldsymbol{x}) = \|\mathbf{A}\boldsymbol{x} - \boldsymbol{b}\|^2 = (\mathbf{A}\boldsymbol{x} - \boldsymbol{b})^T(\mathbf{A}\boldsymbol{x} - \boldsymbol{b})=\\\boldsymbol{x}^T\mathbf{A}^T\mathbf{A}\boldsymbol{x}-2\boldsymbol{x}^T\mathbf{A}^T\boldsymbol{b}+\boldsymbol{b}^T\boldsymbol{b}\, \, \, \, \, \, \, \, (12)

        利用矩阵微积分公式可以得到:

\frac{\partial f(\boldsymbol{x})}{\partial \boldsymbol{x}} = 2\mathbf{A}^T\mathbf{A}\boldsymbol{x}-2\mathbf{A}^T\boldsymbol{b}\, \, \, \, \, \, \, \, (13)

        令(13)等于0,得:

\boldsymbol{x}=(\mathbf{A}^T\mathbf{A})^{-1}\mathbf{A}^T\boldsymbol{b}=\mathbf{A}^{\dagger}\boldsymbol{b}\, \, \, \, \, \, \, \, (14)

        (14)即是线性方程组的最小二乘解,其中\mathbf{A}^{\dagger}=(\mathbf{A}^T\mathbf{A})^{-1}\mathbf{A}^T称为矩阵\mathbf{A}的广义逆。

        实际上(10)和(14)是等价的,其中有:

\tilde{\mathbf{A}}=\mathbf{A}^T\mathbf{A}, \ \tilde{\boldsymbol{b}}=\mathbf{A}^T\boldsymbol{b}

        因此二者得到的最小二乘解也是相等的,虽然两种方法等价,但是基于矩阵运算的列空间求解方法更为简洁直观,有着非常广泛的应用。

四、最小二乘法几何解释(投影矩阵)

        将(14)的结果带入\mathbf{Ax}得:

\mathbf{Ax}=\mathbf{A}(\mathbf{A}^T\mathbf{A})^{-1}\mathbf{A}^T\boldsymbol{b}\, \, \, \, \, \, \, \, (15)

        令:

\mathbf{P_A}=\mathbf{A}(\mathbf{A}^T\mathbf{A})^{-1}\mathbf{A}^T

        此时(15)可以写作:

\mathbf{Ax=P_{A}b}\, \, \, \, \, \, \, \, (16)

        由(16)可知,将\mathbf{P_A}作用于\mathbf{b},就能得到\mathbf{Ax},这说明\mathbf{P_A}就是由矩阵\mathbf{A}构建的投影矩阵,将其作用于任何一个向量,都会将该向量投影到矩阵\mathbf{A}的列空间.因此,当\boldsymbol{x}=(\mathbf{A}^T\mathbf{A})^{-1}\mathbf{A}^T\boldsymbol{b}时,\mathbf{Ax} 就是向量\mathbf{b}\mathbf{A}的列空间的投影,或者说,\mathbf{Ax}\mathbf{A}的列空间中距离向量\mathbf{b}最近的向量。当线性方程组(1)为矛盾方程组时,虽然不存在一组系数x_1,x_2,\cdots ,x_n使得方程组(1)中的每一个方程都成立,但是方程的最小二乘解\boldsymbol{x}=(\mathbf{A}^T\mathbf{A})^{-1}\mathbf{A}^T\boldsymbol{b}能够使x_1\mathbf{a_{1}} + x_2\mathbf{a_{2}}+\cdots + x_n\mathbf{a_{n}}=\mathbf{Ax}最大程度的接近\mathbf{b}

        总结而言,从几何角度,最小二乘法相当于将常数项向量\mathbf{b}往系数矩阵\mathbf{A}的列空间上进行正交投影。关于这部分的内容也可以用正交性定理来解释,详细内容可以看博主的另一篇文章:

最优线性估计之正交性定理(公式+几何推导)-CSDN博客

        下面介绍投影矩阵的重要性质:具有对称性的幂等矩阵,即为投影矩阵。

        当一个矩阵\mathbf{P}为投影矩阵时,根据对称性,必然有\mathbf{P^T=P}根据幂等性,必然有\mathbf{P^2=P}投影矩阵为幂等矩阵,这说明在一个空间上投影一次和投影两次甚至多次,结果是一样的。

         在实际应用中,我们还经常用到投影矩阵\mathbf{P}的正交补投影矩阵\mathbf{P^\perp},其中:

\mathbf{P^\perp =I-P}\, \, \, \, \, \, \, \, (17)

        即正交补投影矩阵等于单位阵与投影矩阵之差,投影矩阵的正交补投影矩阵同样满足投影矩阵的定义。对于(16)中的投影矩阵\mathbf{P_A},将其正交补投影矩阵\mathbf{P_{A}^{\perp }}作用于任意列向量,则将该向量投影到矩阵\mathbf{A}的列空间的正交补空间。

        注意,上述投影矩阵\mathbf{P_A}的定义一般要求矩阵\mathbf{A}为列满秩矩阵。

五、参考书籍

耿修瑞,朱亮亮 (2025). 矩阵之美(算法篇). 北京:科学出版社.

        耿老师的这本《矩阵之美(算法篇)》写的深入浅出,非常的通俗易懂,为本人学习矩阵以及算法知识提供了极大帮助,欢迎读者们购买正版书籍收藏学习。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐