线性最小二乘拟合

优化、正规方程、数学推导与交互式计算器

什么是线性最小二乘拟合?

设 \( (x_1, y_1), (x_2, y_2), \dots, (x_N, y_N) \) 为如下图所示的实验数据点,假设我们想使用以下形式的线性模型,通过自变量 \( x \) 的不同取值来预测因变量 \( y \):

\[ y = ax + b \]
scatter plot of data points
图 1. 实验数据的散点图

数学中广泛使用的程序是最小化数学模型 \( y = f(x) \) 与实验点之间垂直距离 \( d_1, d_2, \dots \) 的平方和 \( D \),如下图所示。

least square fitting a model to data
图 2. 将最小二乘拟合模型与数据进行拟合

数学推导

设 \( f(x) = ax + b \) 为所使用的线性模型。因此,垂直距离 \( d_1, d_2, \dots \) 由下式给出:

\[ d_1 = |y_1 - (ax_1 + b)|, \quad d_2 = |y_2 - (ax_2 + b)|, \quad \dots \]

垂直距离平方和 \( D \) 可以写为:

\[ D = \sum_{i=1}^{N} (y_i - (ax_i + b))^2 \]

使 \( D \) 最小化的 \( a \) 和 \( b \) 的值,是使 \( D \) 关于 \( a \) 和 \( b \) 的一阶偏导数同时等于 0 的值。因此,我们计算偏导数:

\[ \dfrac{\partial D}{\partial a} = \sum_{i=1}^{N} -2x_i(y_i - ax_i - b) \] \[ \dfrac{\partial D}{\partial b} = \sum_{i=1}^{N} -2(y_i - ax_i - b) \]

将两个导数设为零并除以 \( -2 \),得到正规方程组:

\[ \begin{cases} \sum_{i=1}^{N} x_i(y_i - ax_i - b) = 0 \\ \sum_{i=1}^{N} (y_i - ax_i - b) = 0 \end{cases} \]

展开求和项:

\[ \begin{cases} \sum_{i=1}^{N} x_iy_i - a \sum_{i=1}^{N} x_i^2 - b \sum_{i=1}^{N} x_i = 0 \\ \sum_{i=1}^{N} y_i - a \sum_{i=1}^{N} x_i - Nb = 0 \end{cases} \]

将包含 \( a \) 和 \( b \) 的项移到左边:

\[ \begin{cases} a \sum_{i=1}^{N} x_i^2 + b \sum_{i=1}^{N} x_i = \sum_{i=1}^{N} x_iy_i \\ a \sum_{i=1}^{N} x_i + Nb = \sum_{i=1}^{N} y_i \end{cases} \]

矩阵形式:

\[ \begin{bmatrix} \sum_{i=1}^{N} x_i^2 & \sum_{i=1}^{N} x_i \\ \sum_{i=1}^{N} x_i & N \end{bmatrix} \begin{bmatrix} a \\ b \end{bmatrix} = \begin{bmatrix} \sum_{i=1}^{N} x_iy_i \\ \sum_{i=1}^{N} y_i \end{bmatrix} \]

使用 \( 2 \times 2 \) 矩阵的逆矩阵公式,我们求解 \( a \) 和 \( b \):

\[ a = \dfrac{N \sum_{i=1}^{N} x_iy_i - (\sum_{i=1}^{N} x_i)(\sum_{i=1}^{N} y_i)}{N \sum_{i=1}^{N} x_i^2 - (\sum_{i=1}^{N} x_i)^2} \] \[ b = \dfrac{-(\sum_{i=1}^{N} x_i)(\sum_{i=1}^{N} x_iy_i) + (\sum_{i=1}^{N} x_i^2)(\sum_{i=1}^{N} y_i)}{N \sum_{i=1}^{N} x_i^2 - (\sum_{i=1}^{N} x_i)^2} \]

线性最小二乘拟合应用例题

求给定实验数据点的线性最小二乘拟合 \( y = ax + b \):

\[ \{(1, 2), (3, 4), (2, 6), (4, 8), (5, 12), (6, 13), (7, 15)\} \]
显示例题解答

建立包含所需数量的表格:

\( x_i \) \( y_i \) \( x_i y_i \) \( x_i^2 \)
1 2 2 1
3 4 12 9
2 6 12 4
4 8 32 16
5 12 60 25
6 13 78 36
7 15 105 49

总点数为 \( N = 7 \)。

\( \sum_{i=1}^{7} x_i = 1 + 3 + 2 + 4 + 5 + 6 + 7 = 28 \)

\( \sum_{i=1}^{7} y_i = 2 + 4 + 6 + 8 + 12 + 13 + 15 = 60 \)

\( \sum_{i=1}^{7} x_iy_i = 2 + 12 + 12 + 32 + 60 + 78 + 105 = 301 \)

\( \sum_{i=1}^{7} x_i^2 = 1 + 9 + 4 + 16 + 25 + 36 + 49 = 140 \)

代入公式:

\[ a = \dfrac{7 \times 301 - 28 \times 60}{7 \times 140 - 28^2} = \dfrac{2107 - 1680}{980 - 784} = \dfrac{427}{196} \approx 2.1786 \] \[ b = \dfrac{-28 \times 301 + 140 \times 60}{7 \times 140 - 28^2} = \dfrac{-8428 + 8400}{196} = \dfrac{-28}{196} \approx -0.1429 \]

线性最小二乘拟合计算器

给定实验点,该计算器计算系数 \( a \) 和 \( b \)、直线方程 \( y = ax + b \) 以及相关系数。它还会绘制实验点以及最佳拟合直线。

以 \((x_1, y_1), (x_2, y_2), \dots\) 的形式输入点,用逗号分隔,或使用默认数据集。

将鼠标悬停在图表右上角即可下载 PNG 格式的图表。

更多参考资料与链接