什么是最小二乘法
引言:一场跨越200年的科学较量
1801年,当意大利天文学家皮亚齐发现谷神星后,全欧洲科学家都试图通过他观测的40天数据预测这颗小行星的轨道。在众多失败者中,一位24岁的德国数学家高斯用一种新方法成功计算出了谷神星的轨迹,这就是后来改变科学界的最小二乘法。今天,这个方法已渗透到经济学、工程学、机器学习等各个领域,成为数据拟合的基石。
一、最小二乘法的核心思想(通俗版)
想象你正在射箭,箭靶上的散落箭矢代表观测数据,而最小二乘法就是帮你找到一条直线,使得所有箭矢到这条直线的垂直距离的平方和最小。用数学语言来说:
- 给定n个数据点((x_i, y_i))
- 寻找直线(y = ax + b)
- 最小化目标函数:(E = \sum_{i=1}^n (y_i - (ax_i + b))^2)
二、数学推导:从弹簧到方程组
弹簧理论(物理直观)
把每个数据点与拟合线的垂直距离想象成弹簧,弹簧的弹力与形变量成正比。当系统平衡时,所有弹簧的合力为零,这对应数学上的偏导数为零的条件。
代数解法(三步走)
- 设定目标函数:(E = \sum (y_i - ax_i - b)^2)
- 对参数求偏导:
[
\frac{\partial E}{\partial a} = -2\sum x_i(y_i - ax_i - b) = 0 \
\frac{\partial E}{\partial b} = -2\sum (y_i - ax_i - b) = 0
] - 解方程组:
整理后得到法方程组:
[
\begin{cases}
a\sum x_i^2 + b\sum x_i = \sum x_iy_i \
a\sum x_i + bn = \sum y_i
\end{cases}
]
解得:
[
a = \frac{n\sum x_iy_i - \sum x_i\sum y_i}{n\sum x_i^2 - (\sum x_i)^2} \
b = \frac{\sum y_i - a\sum x_i}{n}
]
矩阵解法(进阶)
用矩阵形式表达更简洁:
[
\boldsymbol{X}\boldsymbol{\beta} = \boldsymbol{y} \quad \Rightarrow \quad \boldsymbol{\beta} = (\boldsymbol{X}T\boldsymbol{X}){-1}\boldsymbol{X}^T\boldsymbol{y}
]
其中(\boldsymbol{\beta})是参数向量,(\boldsymbol{X})是设计矩阵。
三、应用案例:从天文学到经济学
案例1:谷神星轨道预测(历史经典)
高斯用最小二乘法处理皮亚齐的20次观测数据,计算出谷神星轨道参数,误差仅0.02弧度。这一成就使他在24岁成为哥廷根大学教授。
案例2:商场销售预测(现代应用)
某商场记录2000年皮鞋月销量(单位:双):
月份 | 1月 | 2月 | 3月 | … | 12月 |
---|---|---|---|---|---|
销量 | 1325 | 1662 | 1557 | … | 2864 |
用最小二乘法拟合直线(y=2088+72x)(x为月份),预测2004年第一季度销量达3024双,实际销售验证误差仅2.3%。
代码示例(Python实现)
import numpy as np
import matplotlib.pyplot as plt# 生成模拟数据
x = np.array([1,2,3,4,5])
y = np.array([2,3,5,4,6])# 计算参数
A = np.vstack([x, np.ones(len(x))]).T
a, b = np.linalg.lstsq(A, y, rcond=None)[0]# 绘图
plt.scatter(x, y, color='blue')
plt.plot(x, a*x + b, color='red')
plt.title(f'拟合直线: y = {a:.2f}x + {b:.2f}')
plt.show()
四、优缺点:硬币的两面
四大优势
- 计算高效:解析解直接可得,无需迭代
- 理论基础坚实:在正态误差下是最优无偏估计
- 适用广泛:从线性回归到多项式拟合
- 易于理解:几何意义直观(残差平方和最小)
三大局限
- 异常值敏感:一个异常点可能彻底改变结果
- 线性假设:对非线性关系需扩展(如多项式回归)
- 矩阵求逆风险:当设计矩阵病态时,结果不稳定
五、总结与互动
总结
最小二乘法用数学之美解决了数据拟合的核心问题:在不确定性中寻找最优解。从高斯预测谷神星到现代机器学习,它始终是连接理论与现实的桥梁。