数学 · 线代

最小二乘逼近

Least Squares Approximation

约 25 分钟 · v1

最小二乘

math/least-squares · MATH2099
0 / 3

1 现实数据不会乖乖排成一条线

广告费越多,销量越高;复习时间越长,分数越好——可真把数据画出来,点是散的,从不精确落在一条直线上(总有测量误差、随机波动)。我们想要一条"最能代表大趋势"的直线。问题是:哪条算最好?最小二乘给出公认答案。

最小二乘法:在所有可能的直线里,挑使"各点到直线的竖直误差的平方和"最小的那一条。

每个点的"误差(残差)"= 真实 y − 直线预测 y。把它们平方、加起来,得到一个总误差 SSE。最小二乘就是让这个 SSE 降到最低的拟合线——它是统计、机器学习里最基础的拟合方法。

2 为什么偏偏要"平方"误差?

直接把误差加起来不行——正负会抵消(线穿过点群中间时,上下误差互相抵消成 0,看起来"完美"其实不然)。取平方既解决抵消,又重罚大偏差,还让目标函数光滑可求导。

解决正负抵消
平方后全为正,上方误差和下方误差不再相互抵消,"总偏差"才如实反映拟合好坏。
重罚离谱点
误差 2 罚 4,误差 4 罚 16——偏得越远惩罚越狠,逼着直线照顾到大偏差,不敢忽视。
数学上好解
平方和是光滑的二次函数,求导=0 就能一步解出唯一最优解(正规方程),不用反复试。

3 拖一拖:你能找到误差最小的那条线吗?

下面是一组散点。拖动两个滑块改变直线的斜率和截距,红色竖线是每个点的残差,浅红方块的面积 = 残差的平方。目标:让误差平方和 SSE 尽量小。试完手动,再点"自动求最优"看看最小二乘解,对比你差多少。

手动拟合 vs 最小二乘最优

0.50
1.0
你的 SSE = —最小可能 SSE = —
浅红方块面积之和 = SSE。直线越贴近点群,方块越小、SSE 越低。当你的 SSE 等于"最小可能"时,你就找到了最小二乘线。

4 几何真相:把数据投影到"模型够得着"的空间

把问题写成 Ax = b:b 是真实数据向量,A 的列是模型能给出的方向。点不在一条线上,意味着 b 不在 A 的列空间里,方程无解。最小二乘的办法:退而求其次,把 b 正交投影到列空间上,投影点就是"模型能达到的、离 b 最近的点"。

让残差 b − Ax̂ 垂直于 A 的每一列,推出正规方程 AᵀA x̂ = Aᵀb,解出最优 x̂ = (AᵀA)⁻¹Aᵀb。

这正是正交性那一节"投影 = 最近点、误差垂直"的直接应用!"误差垂直于模型空间"⟺"误差平方和最小"。这两种视角(代数最小化 / 几何投影)给出完全相同的答案。

看到没?线性代数的投影,和统计学的曲线拟合,在这里合二为一。这也是为什么"最小二乘"既出现在矩阵课、也是回归分析的基石。

5 试三道(先想,再点)

三道题,点选项即时判;答题进度显示在右侧目录。

一句话带走:

数据点不在一条线上时,最小二乘挑出"残差平方和 SSE 最小"的拟合线。用平方是为了不让正负抵消、重罚大偏差、便于求导。几何上 = 把数据 b 正交投影到模型列空间,让残差垂直于模型,由此得正规方程 AᵀAx̂=Aᵀb。代数的"误差最小"与几何的"投影最近"是同一件事。