最小二乘法

本文深入探讨了最小二乘法的原理,包括其在解决过定方程组时的应用,通过矩阵法和几何法推导出参数的最优解,并解释了最小二乘法的几何意义。

2025年 07月31日 00:00 星期四
1840 字 · 9 分钟

最小二乘法的引出

工程应用中,我们经常会用一组观测数据去估计模型的参数,模型是我们根据先验知识定下的。比如我们有一组观测数据(xi,yi)(x_i,y_i),通过一些数据分析我们猜测y和x之间存在线性关系,那么我们的模型就可以定为:f(x)=kx+bf ( x ) = k x + b

这个模型只有两个参数,所以理论上,我们只需要观测两组数据建立两个方程,即可解出两个未知数。类似的,假如模型有n个参数,我们只需要观测n组数据就可求出参数,换句话说,在这种情况下,模型的参数是唯一确定解。

但是在实际应用中,由于我们的观测会存在误差(偶然误差、系统误差等),所以我们总会做多余观测。比如在上述例子中,尽管只有两个参数,但是我们可能会观测n组数据(x1,y1),,(xn,yn)(x_1,y_1),\cdots,(x_n,y_n) ,这会导致我们无法找到一条直线经过所有的点,也就是说,方程无确定解。

于是这就是我们要解决的问题:虽然没有确定解,但是我们能不能求出近似解,使得模型能在各个观测点上达到最佳拟合。那么最佳的准则是什么?可以是所有观测点到直线的距离和最小,也可以是所有观测点到直线的误差(真实值-理论值)绝对值和最小,也可以是其它,如果是你面临这个问题你会怎么做? 早在19世纪,勒让德就认为让误差的平方和最小估计出来的模型是最接近真实情形的。

为什么就是误差平方而不是其它的,这个问题连欧拉、拉普拉斯都未能成功回答,后来是高斯建立了一套误差分析理论,从而证明了确实是使误差平方和最小的情况下系统是最优的。

按照勒让德的最佳原则,于是就是求:L=i=1n(yif(x))2L=\sum_{i=1}^{n}(y_i-f(x))^{2}

这个目标函数取得最小值时的函数参数,这就是最小二乘法的思想,所谓二乘就是平方的意思。从这里我们可以看到,最小二乘法其实就是用来做函数拟合的一种思想。

至于怎么求出具体的参数那就是另外一个问题了,理论上可以用导数法、几何法,工程上可以用梯度下降法。下面以最常用的线性回归为例进行推导和理解。

线性回归因为比较简单,可以直接推导出解析解,而且许多非线性的问题也可以转化为线性问题来解决,所以得到了广泛的应用。甚至许多人认为最小二乘法指的就是线性回归,其实并不是,最小二乘法就是一种思想,它可以拟合任意函数,线性回归只是其中一个比较简单而且也很常用的函数,所以讲最小二乘法基本都会以它为例。

下面我会先用矩阵法进行推导,然后再用几何法来帮助你理解最小二乘法的几何意义。

矩阵解法

线性回归定义为:hw(x1,x2,xn1)=w0+w1x1++wn1xn1h_{w}\left(x_{1}, x_{2}, \ldots x_{n-1}\right)=w_{0}+w_{1} x_{1}+\ldots+w_{n-1} x_{n-1}ww 为参数)假设现在有m个样本,每个样本有n − 1维特征,将所有样本点代入模型中得:

h1=w0+w1x1,1+w2x1,2++wn1x1,n1h2=w0+w1x2,1+w2x2,2++wn1x2,n1hm=w0+w1xm,1+w2xm,2++wn1xm,n1h_1 = w_0 + w_1x_{1,1} + w_2x_{1,2} + … + w_{n−1}x_{1,n − 1} \\ h_2 = w_0 + w_1x_{2,1} + w_2x_{2,2} + … + w_{n−1}x_{2,n − 1} \\ \vdots \\ h_m = w_0 + w_1x_{m,1} + w_2x_{m,2} + … + w_{n−1}x_{m,n − 1}

为方便用矩阵表示,我们令x0=1x_0=1,于是上述方程可以用矩阵表示为:h=Xw\mathbf{h}=\mathbf{X}w 其中, h为m×1m\times 1的向量, 代表模型的理论值,wwn×1n\times 1的向量,X为m×nm\times n维的矩阵,m代表样本的个数,n代表样本的特征数,于是目标损失函数用矩阵表示为:

J(w)=hY2=XwY2=(XwY)T(XwY)J(w)=\|\mathbf{h}-\mathbf{Y}\|^2 =\|\mathbf{X}w-\mathbf{Y}\|^2= (\mathbf{X} w-\mathbf{Y})^{T}(\mathbf{X} w-\mathbf{Y})

其中Y\mathbf{Y}是样本的输出向量, 维度为m×1m\times 1

根据高数知识我们知道函数取得极值就是导数为0的地方,所以我们只需要对损失函数求导令其等于0就可以解出ww

对目标函数JJ化简得:

J(w)=wTXTXwWTXTYYTXw+YTYJ(w)=w^TX^TXw-W^TX^TY-Y^TXw+Y^TY

求导令其等于0:

wJ(w)=2XTXw2XTY=0\frac{\partial}{\partial w} \mathrm{J}(w) = 2\mathrm{X}^\mathrm{T}\mathrm{X}w - 2\mathrm{X}^\mathrm{T}\mathrm{Y} = 0

解得w=(XTX)1XTYw=(X^TX)^{-1}X^TY, 经过推导我们得到了ww的解析解,现在只要给了数据,我们就可以带入解析解中直接算出ww

几何意义

几何意义会直观的帮助你理解最小二乘法究竟在干什么。首先先来解释一下矩阵乘法的几何意义,对于一个方程组Ax,我们可以看做是x对矩阵A的列向量的线性组合,比如:

{1×x1+x2=31×x1+x2=1[1111][x1x2]=[31]Ax=b\begin{cases} 1 \times x_1 + x_2 = 3 \\ -1 \times x_1 + x_2 = 1 \end{cases} \Leftrightarrow \begin{bmatrix} 1 & 1 \\ -1 & 1 \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \end{bmatrix} = \begin{bmatrix} 3 \\ 1 \end{bmatrix} \Leftrightarrow A \mathbf{x} = \mathbf{b}

可以看作:

[11]×x1+[11]×x2=[31]a1x1+a2x2=b\begin{bmatrix} 1 \\ -1 \end{bmatrix} \times x_1 + \begin{bmatrix} 1 \\ 1 \end{bmatrix} \times x_2 = \begin{bmatrix} 3 \\ 1 \end{bmatrix} \Leftrightarrow \mathbf{a}_1 x_1 + \mathbf{a}_2 x_2 = \mathbf{b}

画在坐标轴上可以看到,向量b其实就是向量mathbfa1mathbfa2mathbf{a_1}和mathbf{a_2}​的线性组合,因为他们都是在一个平面上,显然是有解的。

如文章开头所说,由于存在观测误差,我们往往会做多余观测,比如要拟合一次方程 y = kx + b,我们可能观测了三个点(0,2),(1,2),(2,3),写成矩阵形式如下(为表述方便,用x1代替k,x2代替b ):

{1×x1+x2=20×x1+x2=22×x1+x2=3[110121][x1x2]=[223]Ax=b\begin{cases} 1 \times x_1 + x_2 = 2 \\ 0 \times x_1 + x_2 = 2 \\ 2 \times x_1 + x_2 = 3 \end{cases} \Leftrightarrow \begin{bmatrix} 1 & 1 \\ 0 & 1 \\ 2 & 1 \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \end{bmatrix} = \begin{bmatrix} 2 \\ 2 \\ 3 \end{bmatrix} \Leftrightarrow A \mathbf{x} = \mathbf{b}

表示成线性组合的方式:

[102]x1+[111]x2=[223]a1x1+a2x2=b\begin{bmatrix} 1 \\ 0 \\ 2 \end{bmatrix} x_1 + \begin{bmatrix} 1 \\ 1 \\ 1 \end{bmatrix} x_2 = \begin{bmatrix} 2 \\ 2 \\ 3 \end{bmatrix} \Leftrightarrow \mathbf{a}_1 x_1 + \mathbf{a}_2 x_2 = \mathbf{b}

画在图中如下:

从图中我们可以看到,无论a1a2\mathbf{a_1}和\mathbf{a_2}, 怎么线性组合都不可能得到 b\mathbf{b},因为a1a2\mathbf{a_1}和\mathbf{a_2}的线性组合成的向量只能落在它们组成的子空间SS中。

退而求其次,虽然我们不可能得到b\mathbf{b},但在SS上找一个和b\mathbf{b}最接近的总可以吧。那么将b\mathbf{b}投影 在平面SS上得到的向量p\mathbf{p}就是和b\mathbf{b}最接近的向量(把向量看作点,最接近的意思就是点到平面某点取得距离最短,自然就是投影所成的交点)。

换句话说,方程组Ax=b虽然无解,也就是b不在A的列空间中,但是我们可以在A的列空间中找到一个和b最接近的向量pp就是bA的列空间中的投影,通过求Ax=p的解,就是原方程的最小二乘解。 由几何意义可知垂线e=bp=bAx\mathbf{e} = \mathbf{b} - \mathbf{p} = \mathbf{b} - \mathbf{A}\mathbf{x}正交于平面 SS,即满足:a1Te=0,a2Te=0\mathbf{a}_1^T \mathbf{e} = 0, \quad \mathbf{a}_2^T \mathbf{e} = 0,写成矩阵形式为:

ATe=AT(bAx)=ATbATAx=0A^T \mathbf{e} = A^T (\mathbf{b} - A\mathbf{x}) = A^T \mathbf{b} - A^T A \mathbf{x} = \mathbf{0}

解得最小二乘解:x=(ATA)1ATb\mathbf{x} = (A^T A)^{-1} A^T \mathbf{b},可以看到推导结果和矩阵法一样。从上面可以看到,最小二乘法的几何意义就是求解 bA的列向量空间中的投影。


Thanks for reading!

最小二乘法

2025年 07月31日 00:00 星期四
1840 字 · 9 分钟