603 字
3 分钟
最小二乘法

最小二乘法(Least Squares Method)是一种用于数据拟合的方法,通过最小化观测值与模型预测值之间的误差平方和,来求得模型参数的最优估计。下面以一元线性回归为例,详细推导最小二乘法的过程。

一、问题描述#

给定 nn 组数据点 (x1,y1),(x2,y2),,(xn,yn)(x_1, y_1), (x_2, y_2), \ldots, (x_n, y_n),希望用一个线性函数

y=ax+by = a x + b

来拟合这些数据点。目标是找到参数 aabb,使得拟合直线与观测数据之间的误差平方和最小。

二、残差平方和#

对于每一个数据点 ii,其观测值为 yiy_i,拟合值为 y^i=axi+b\hat{y}_i = a x_i + b。因此,残差为

ri=yi(axi+b)r_i = y_i - (a x_i + b)

残差平方和 SS 定义为:

S(a,b)=i=1n[yi(axi+b)]2S(a, b) = \sum_{i=1}^{n} [y_i - (a x_i + b)]^2

我们的目标是最小化 S(a,b)S(a, b)

三、求最优参数#

S(a,b)S(a, b) 关于 aabb 的偏导数为零,得到极值点。

1、对 aa 求偏导#

Sa=i=1n2[yi(axi+b)](xi)=2i=1nxi[yi(axi+b)]\frac{\partial S}{\partial a} = \sum_{i=1}^{n} 2 [y_i - (a x_i + b)] \cdot (-x_i) = -2 \sum_{i=1}^{n} x_i [y_i - (a x_i + b)]

Sa=0\frac{\partial S}{\partial a} = 0,得

i=1nxiyiai=1nxi2bi=1nxi=0\sum_{i=1}^{n} x_i y_i - a \sum_{i=1}^{n} x_i^2 - b \sum_{i=1}^{n} x_i = 0

2、对 bb 求偏导#

Sb=i=1n2[yi(axi+b)](1)=2i=1n[yi(axi+b)]\frac{\partial S}{\partial b} = \sum_{i=1}^{n} 2 [y_i - (a x_i + b)] \cdot (-1) = -2 \sum_{i=1}^{n} [y_i - (a x_i + b)]

Sb=0\frac{\partial S}{\partial b} = 0,得

i=1nyiai=1nxibn=0\sum_{i=1}^{n} y_i - a \sum_{i=1}^{n} x_i - b n = 0

四、联立方程#

将上面的两个式子整理如下:

{i=1nxiyi=ai=1nxi2+bi=1nxii=1nyi=ai=1nxi+bn\begin{cases} \sum_{i=1}^{n} x_i y_i = a \sum_{i=1}^{n} x_i^2 + b \sum_{i=1}^{n} x_i \\ \sum_{i=1}^{n} y_i = a \sum_{i=1}^{n} x_i + b n \end{cases}

  • Sx=i=1nxiS_x = \sum_{i=1}^{n} x_i
  • Sy=i=1nyiS_y = \sum_{i=1}^{n} y_i
  • Sxx=i=1nxi2S_{xx} = \sum_{i=1}^{n} x_i^2
  • Sxy=i=1nxiyiS_{xy} = \sum_{i=1}^{n} x_i y_i

上式变为:

{Sxy=aSxx+bSxSy=aSx+bn\begin{cases} S_{xy} = a S_{xx} + b S_x \\ S_y = a S_x + b n \end{cases}

五、求解 aabb#

第一步,先用第二个方程解出 bb

b=SyaSxnb = \frac{S_y - a S_x}{n}

bb 代入第一个方程:

Sxy=aSxx+(SyaSxn)SxS_{xy} = a S_{xx} + \left( \frac{S_y - a S_x}{n} \right) S_xSxy=aSxx+SxSynaSx2nS_{xy} = a S_{xx} + \frac{S_x S_y}{n} - a \frac{S_x^2}{n}SxySxSyn=a(SxxSx2n)S_{xy} - \frac{S_x S_y}{n} = a \left( S_{xx} - \frac{S_x^2}{n} \right)a=SxySxSynSxxSx2na = \frac{S_{xy} - \frac{S_x S_y}{n}}{S_{xx} - \frac{S_x^2}{n}}

再代入 bb 的表达式:

b=SyaSxnb = \frac{S_y - a S_x}{n}

六、均值符号下的表达式#

  • x=1ni=1nxi\overline{x} = \frac{1}{n} \sum_{i=1}^{n} x_i
  • y=1ni=1nyi\overline{y} = \frac{1}{n} \sum_{i=1}^{n} y_i

则有

a=i=1n(xix)(yiy)i=1n(xix)2a = \frac{ \sum_{i=1}^{n} (x_i - \overline{x})(y_i - \overline{y}) }{ \sum_{i=1}^{n} (x_i - \overline{x})^2 }b=yaxb = \overline{y} - a \overline{x}

由于 S(a,b)S(a, b) 是关于 aabb 的二次函数,且系数矩阵为正定(SxxSx2/n>0S_{xx} - S_x^2/n > 0,只要 xix_i 不全相等),因此该极值点为唯一全局最小值,即最小二乘解。

分享

如果这篇文章对你有帮助,欢迎分享给更多人!

最小二乘法
https://www.laoguantx.cn/posts/leastsquaresmethod/
作者
老官童鞋gogo
发布于
2025-06-19
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

封面
Sample Song
Sample Artist
封面
Sample Song
Sample Artist
0:00 / 0:00