⓪ 问题登场:穿过散点的直线
假设你做了 5 次实验,每次记录 输入 x 和 输出 y,得到这样 5 个数据点:
你想找一条直线 y = ax + b,让它"最好地"穿过这些点。 但"最好"是什么意思?穿过哪些点?离所有点都尽量近?
要找的直线是 ŷ = ax + b(读作"y-hat"),a 是斜率,b 是截距。
对每个 xᵢ,直线的预测值是 ŷᵢ = a·xᵢ + b。
① 探索:两个点的世界
先从最简单的情况开始:只有两个数据点。
恰好穿过两个点
平面上两点确定唯一一条直线——这是中学几何。此时方程组的解是精确的,残差为零。
这在数学上叫"适定问题"(方程数 = 未知数数)。但现实数据很少只有两个点。
② 第三个点来了——过定义!
现在加入第三个点 (3, 3),和前两个点 (1, 2)、(2, 3.5) 放在一起:
你看:没有一条直线能同时穿过这三个点。方程数(3 个)超过了未知数(2 个),这叫"超定方程组"——通常无解。
③ 发现一:误差就是"竖直距离"
对于任意一条候选直线 ŷ = ax + b,定义第 i 个点的残差(residual):
残差就是图中竖直虚线的长度——观测值到直线的竖直距离(不是垂直距离!因为 x 是精确的输入,误差只在 y 方向)。
④ 发现二:为什么要"平方"?
现在把残差合成一个数,代表"总体误差"。下面是 4 种自然的候选方案:
| 方案 | 表达式 | 问题 |
|---|---|---|
| ① 直接求和 | Σ eᵢ | 正负抵消:+3 和 −3 加起来是 0,看起来"完美" |
| ② 绝对值求和 | Σ |eᵢ| | 非处处可导,数学上难处理 |
| ③ 平方求和 | Σ eᵢ² | 解决以上所有问题 |
| ④ 四次方求和 | Σ eᵢ⁴ | 对离群点过度敏感,且计算更繁 |
① 正负不能抵消:平方后一切误差都变成正数,大的误差被放大惩罚。
② 处处可导:二次函数光滑,可以放心用微积分求极值。
③ 数学最优:如果误差服从正态分布,平方和最小化等价于最大似然估计——这是高斯在 1809 年证明的。
⑤ 发现三:把直觉翻译成数学
SSE(a, b) 是一个以 a 和 b 为自变量的二元二次函数。我们的任务是:
二元二次函数的极小值怎么求?微积分告诉我们:偏导数 = 0。
SSE(a,b) 是一个开口向上的抛物面,最小值在谷底。
⑥ 推导:偏导数 → 法方程
把 SSE 展开,然后分别对 a 和 b 求偏导:
⇒ a·Σxᵢ + n·b = Σyᵢ
⇒ a·Σxᵢ² + b·Σxᵢ = Σxᵢyᵢ
a·Σxᵢ + b·n = Σyᵢ
解这个二元一次方程组,得到经典公式:
b = ȳ − a·x̄
⑦ 动手算一遍:5 个数据点
回到文章开头那 5 个点:(1, 2), (2, 3), (3, 5), (4, 4), (5, 6)。一步步代入公式:
| i | xᵢ | yᵢ | xᵢ² | xᵢyᵢ |
|---|---|---|---|---|
| 1 | 1 | 2 | 1 | 2 |
| 2 | 2 | 3 | 4 | 6 |
| 3 | 3 | 5 | 9 | 15 |
| 4 | 4 | 4 | 16 | 16 |
| 5 | 5 | 6 | 25 | 30 |
| Σ | 15 | 20 | 55 | 69 |
= (345 − 300) / (275 − 225)
= 45 / 50 = 0.9
= 4 − 0.9×3 = 4 − 2.7 = 1.3
| i | yᵢ | ŷᵢ=0.9xᵢ+1.3 | eᵢ | eᵢ² |
|---|---|---|---|---|
| 1 | 2 | 2.2 | −0.2 | 0.04 |
| 2 | 3 | 3.1 | −0.1 | 0.01 |
| 3 | 5 | 4.0 | +1.0 | 1.00 |
| 4 | 4 | 4.9 | −0.9 | 0.81 |
| 5 | 6 | 5.8 | +0.2 | 0.04 |
| SSE = Σeᵢ² = | 1.90 | |||
没有其他任何直线能给出比 1.90 更小的平方误差和。
(不信?去 §⑩ 交互实验室拖滑块试试——偏离 0.9 或 1.3,SSE 一定变大。)
第二部分 深入与推广
从二元一次到矩阵,从计算到几何,从一条线到整个机器学习
⑧ 推广:矩阵形式
把 n 个方程 yᵢ ≈ a·xᵢ + b 写成矩阵:
目标变成:最小化 ‖y − Xβ‖²(向量长度的平方 = 各分量平方和 = SSE)。
⑨ 几何洞察:投影到列空间
矩阵形式揭示了一个优美的几何解释,它比微积分推导更深刻:
残差向量 e = y − ŷ 与列空间垂直(正交),这就是"最小"的几何本质——直角三角形的斜边最短。
正交性意味着:Xᵀe = 0 ⇒ Xᵀ(y − Xβ̂) = 0 ⇒ XᵀXβ̂ = Xᵀy。
看——法方程不是从微积分"碰巧"算出来的,而是"残差与列空间正交"这个几何事实的直接翻译。
⑩ 交互实验室:亲手感受最小二乘
拖动滑块改变 斜率 a 和 截距 b,观察误差平方和 SSE 的变化。点"最优解"回到最小二乘解。
⑪ 跨领域彩蛋:最小二乘无处不在
最小二乘法不是统计学的专利——它是整个数据科学的"通用语言"。用同一个 XᵀXβ = Xᵀy,你可以:
ŷ = a₀ + a₁x + a₂x² + …
设计矩阵加列即可
弹簧 F = k·x
测多组 (x,F) 拟合 k
最小二乘 = 损失函数为 MSE 的监督学习
所有"超定方程组求最优近似解"本质上都是最小二乘
⑫ 全篇地图:你从零推导了最小二乘法
回头看第 ⓪ 节的问号——那个"?"现在已经变成了精确的数值:ŷ = 0.9x + 1.3, SSE = 1.90。
- 从散点图出发,写出 SSE(a, b) = Σ(yᵢ − axᵢ − b)²
- 对 a 和 b 求偏导,推导出法方程
- 用具体数据算出最优斜率和截距
- 理解矩阵形式 β̂ = (XᵀX)⁻¹Xᵀy 的来历
- 用几何语言解释:ŷ 是 y 在列空间上的正交投影
- 认出所有"超定方程组最优近似"= 最小二乘