最小二乘法,可以先理解成一句话:
当一组数据无法被完全满足时,找一个方案,让整体误差尽可能小。
我们先看一个小例子,再把它写成线性代数的形式。
一、为什么需要最小二乘法?
假设你想估计一个角色的移动速度,测得:
| 时间 | 移动距离 |
|---|---|
| 1 秒 | 2 米 |
| 2 秒 | 3 米 |
假设角色从原点开始,以恒定速度 (v) 移动,那么:
[
距离=速度\times时间
]
第一条数据要求:
[
v=2
]
第二条数据要求:
[
2v=3 \quad\Rightarrow\quad v=1.5
]
矛盾了。
真实测量可能有误差,因此我们不一定能找到一个速度,让两条数据都完全成立。
现在的问题变成:
选多大的速度,能尽量兼顾这两条数据?
这就是最小二乘法要解决的问题。
二、怎样衡量“整体误差”?
假设我们选择速度 (v)。
那么两次预测与测量的差分别是:
1 秒时:预测 v 米,实际测得 2 米 误差:v − 2 2 秒时:预测 2v 米,实际测得 3 米 误差:2v − 3不能直接把误差相加,因为正负误差可能抵消。
例如预测一个偏高 1 米、一个偏低 1 米,加起来是零,但预测显然并不完全准确。
最小二乘法采用:
把每个误差平方,再加起来。
因此,总误差指标为:
[
E(v)=(v-2)2+(2v-3)2
]
“二乘”就是平方,“最小”就是让这个平方和最小。
三、算出最佳速度
把上式展开:
[
E(v)=5v^2-16v+13
]
再配方:
[
E(v)=5(v-1.6)^2+0.2
]
因为平方不可能小于零,所以当:
[
\boxed{v=1.6}
]
时,误差平方和最小,为 (0.2)。
我们比较一下:
| 选择的速度 | 1 秒时的误差 | 2 秒时的误差 | 误差平方和 |
|---|---|---|---|
| 1.5 | −0.5 | 0 | 0.25 |
| 1.6 | −0.4 | 0.2 | 0.20 |
| 2.0 | 0 | 1 | 1.00 |
所以:
1.6 米/秒并不能完全符合任何一条测量,但它让两条距离测量的误差平方和最小。
这里的“最佳”,是相对于我们选定的模型和误差标准而言,不代表它一定就是真实速度。
四、这与线性代数有什么关系?
刚才的两个方程:
[
\begin{cases}
v=2\
2v=3
\end{cases}
]
可以写成矩阵形式:
[
\underbrace{
\begin{bmatrix}
1\
2
\end{bmatrix}}{A}
\underbrace{v}{x}
\underbrace{
\begin{bmatrix}
2\
3
\end{bmatrix}}_{b}
]
也就是:
[
Ax=b
]
其中:
- (A):已知条件,这里是测量时间;
- (x):要估计的参数,这里是速度;
- (b):实际观测,这里是测量距离;
- (Ax):模型预测的结果。
当 (Ax=b) 没有精确解时,我们不再强求完全相等,而是寻找:
[
\boxed{\min_x|Ax-b|^2}
]
这个式子的意思就是:
寻找参数 (x),让预测值与观测值之间的误差平方和最小。
符号看起来复杂,做的事情和前面完全一样。
五、一般怎样求解?
最小二乘解满足:
[
\boxed{ATAx=ATb}
]
这叫正规方程。
其中 (A^T) 表示把矩阵的行和列交换,即转置。
代入刚才的例子:
[
A^TA=
\begin{bmatrix}1&2\end{bmatrix}
\begin{bmatrix}1\2\end{bmatrix}
=5
]
[
A^Tb=
\begin{bmatrix}1&2\end{bmatrix}
\begin{bmatrix}2\3\end{bmatrix}
=8
]
于是:
[
5v=8
]
得到:
[
\boxed{v=1.6}
]
与之前配方得到的结果一致。
如果 (A) 的各列线性无关,还可以写成:
[
x=(ATA){-1}A^Tb
]
不过实际编程时,通常更倾向用QR 分解或 SVD求解,而不是直接计算这个逆矩阵,以提高数值稳定性。
六、几何上,它是在找“最近的点”
在这个例子中,模型能够预测出的结果只能是:
[
Ax=
\begin{bmatrix}
v\
2v
\end{bmatrix}
]
当 (v) 改变时,这些点都在直线:
[
第二个坐标=2\times第一个坐标
]
上。
但实际观测点:
[
b=
\begin{bmatrix}
2\
3
\end{bmatrix}
]
不在这条直线上。
最小二乘法就是:
在模型允许的那条直线上,寻找离观测点最近的点。
找到的是:
[
Ax=
\begin{bmatrix}
1.6\
3.2
\end{bmatrix}
]
这也是为什么最小二乘法与线性代数中的投影、正交密切相关。
七、实际中有什么用?
- 拟合直线:用一条直线概括一批散乱数据的趋势。
- 估计运动参数:根据多次位置测量估计速度。
- 传感器校准:根据测量值估计偏移量和比例系数。
- 机器学习:线性回归常用平方误差作为训练目标。
最后记住:
解方程追求“每条条件都满足”;最小二乘法是在无法全部满足时,让误差平方和最小。