在大屏或电脑上体验更佳——动画和操作区域更宽敞。
输入

线性回归

线性回归拟合 ŷ = m·x + c,选择让残差平方和最小的斜率 m 与截距 c。带截距的一元最小二乘有闭式解:先求均值,再求两个中心化的和,最后做除法与减法。只要 x 不全相同,最优直线唯一。

“平方”决定了这个目标的行为。误差为 1、3、9,代价分别为 1、9、81。动画把每个垂直残差画成正方形的边,拟合就是减小总面积。这个图也说明为何单个离群点能拉走整条线。

“最佳拟合”由什么决定

对点 (x,y),预测为 ŷ=m·x+c,残差为 r=y−ŷ。它是 y 方向的差,不是到直线的最短距离。任务是用 x 预测 y,因此交换输入和输出通常得到另一条回归线。

SSE(m,c) = Σ (yᵢ − (m·xᵢ+c))²
MSE = SSE / n

SSE 是平方误差总和,MSE 是每点平均。相同数据上两者的最优参数一致;比较不同数据集时还须保持目标单位和评价条件可比。若改为绝对误差、最大绝对误差或垂直于直线的距离,“最佳”的含义会改变,答案通常也会不同。

为什么不必搜索

SSE 是关于 m,c 的二次函数。x 有变化时,它像只有一个最低点的碗;x 全相同时退化成谷槽,参数不唯一。令偏导为零可得两条关系。

最优线经过均值点。 ∂SSE/∂c=0 表示残差和为零,所以 c=ȳ−m·x̄。这适用于带截距、无额外约束的普通最小二乘,包括有离群点的数据。斜率改变时,线围绕 (x̄,ȳ) 倾斜。

斜率是共变动与 x 离散程度之比。

Sxy = Σ (xᵢ−x̄)(yᵢ−ȳ)
Sxx = Σ (xᵢ−x̄)²
m = Sxy / Sxx
c = ȳ − m·x̄

Sxy 为正表示中心化后的 x、y 倾向同向变化;为零表示这些乘积抵消,不排除非线性关系。反过来预测 x 要用 Sxy/Syy,不是把原斜率取倒数。

一遍求均值,一遍求中心化的和,不需要学习率或迭代收敛检查。梯度下降在合适步长下可逼近同一个解,但不会任意步长都收敛,也不保证有限步精确到达。高维或其他模型中,迭代方法有不同的成本优势。

平方误差怎样放大离群点

一个残差绝对值为 0.2 的点代价为 0.04。将它移到误差 9.2 的位置,误差扩大 46 倍,平方扩大 2116 倍,变成 84.64。

重新拟合时,算法只想降低总和。默认例中,其余八点的总误差从 1.56 升到 21.96,换来移动点从 84.64 降到 33.64,总和从 86.2 降到 55.6。这就是新的最小二乘最优解,尽管没动的点合计多付约十四倍代价。

这不是求解器失误,而是损失函数的取舍。绝对误差的边际惩罚不随残差大小增长;Huber 损失在近处用平方、远处近似绝对值。只有证据表明数据录入错误或不属于建模总体时,才应据此处理离群点,不能只因它不顺眼就删除。

拟合后画残差对 x 的图。弯曲、扇形扩散或单个极大残差,分别提示模型形式、误差变化或异常观测需要检查。MSE 一个数会把这些结构压掉。

逐步演示

默认九点为:

(−4,−3) (−3,−3) (−2,−1) (−1,−1) (0,0)
(1,1) (2,1) (3,3) P=(4,3)

Σx=Σy=0,均值点在原点。候选 m=0,c=0 是始终预测平均 y 的基线。P 是可移动的点。

  1. 问题,第 1 拍。 12×12 平面上九个点,由两个参数决定一条预测线。
  2. 候选,第 2 拍。 琥珀色 ŷ=0 忽略 x,对所有点给同一预测。它利用 y 的均值,是不利用 x 的基线。
  3. 一个残差,第 3 拍。 P 从 (4,3) 垂直到 ŷ=0,r=3。不是沿最短垂线去找斜线。
  4. 一个平方,第 4 拍。 边长 3,面积 9。残差加倍,面积变四倍。
  5. 所有平方,第 5 拍。 其余八点的平方出现,总面积对应总误差。
  6. 汇总,第 6 拍。 SSE=40,MSE=40/9≈4.44。
  7. 均值锚点,第 7 拍。 标出 (0,0),最优线必须经过它;平线已经经过,接下来要调整倾斜。
  8. 求斜率,第 8 拍。 Sxy=48、Sxx=60,所以 m=0.8。
  9. 转动,第 9 拍。 c=0,直线绕均值点从水平转到斜率 0.8。每帧按当前直线重算平方。
  10. 最优值,第 10 拍。 旧线以虚影出现。SSE=1.6、MSE≈0.18,总面积为原来的 1/25。不是仅比候选好,而是没有其他 m,c 更低。
  11. 移动 P,第 11 拍。 保持 x=4,把 y 从 3 移到 −6,暂时固定旧拟合线。残差绝对值 0.2→9.2,代价 0.04→84.64。总和 86.2,约 98% 来自 P。
  12. 重新求解,第 12 拍。 x̄=0 不变,ȳ=−1、Sxy=12,得到 ŷ=0.2x−1。算法没变,数据变了。
  13. 代价交换,第 13 拍。 固定八点从 1.56→21.96,P 从 84.64→33.64,总和最小为 55.6。九点中六点变差、一点不变、两点变好(包括 P)。总和最优不代表每点都改善。
  14. 收尾。 闭式解求到了目标规定的答案。若离群点的影响不符合任务,应检查损失与数据,而非换一个仍最小化同样 SSE 的求解器。

预设各改变一个因素:“目测”取 ŷ=x,看似贴合,却有最优值 2.5 倍的平方和;“错误锚点”取 ŷ=3,既要旋转也要平移才到均值点;“弯曲数据”有七点在 y=x²−3,对称性使 Sxy=0,最优线为 ŷ=1、MSE=12。这个误差下限属于直线模型的表达限制。

时间与空间复杂度

两遍 n 个点,时间 O(n),几个累计量占 O(1) 额外空间。也可一遍累计 Σx,Σy,Σxy,Σx²,但大数相减的数值条件往往更差。

多特征的满秩正规方程可写成 (XᵀX)⁻¹Xᵀy,形成与求解的成本约为 O(nd²+d³)。不应直接写矩阵求逆。可将 X,y 交给 QR/SVD 最小二乘求解器,避免显式逆和形成 XᵀX 导致的条件数平方。特征很多时,再权衡迭代方法。

边界情况

  • x 全相同:Sxx=0,斜率不唯一。本课固定八点已跨多个 x,移动 P 无法触发,但实际代码须处理。
  • Sxy=0:得到水平均值线,不代表 x 没信息;弯曲预设中 x 能完全决定 y,却不是线性关系。
  • 候选超出画布:参数仍有定义,面板继续计算误差。部分线段被裁切不等于模型不存在。
  • 重复 x:允许,只要不是所有 x 相同。
  • 点在线上:当前残差为零,但仍参与均值和 Sxy,不能等同于删除。

常见错误

  • 测垂直于直线的距离。那是总最小二乘等不同问题,与 PCA 有联系,并把 x、y 更对称地处理。
  • 认为一元最小二乘必须迭代搜索。它有闭式解,迭代并非这组数据的必要步骤。
  • 混淆 SSE/MSE。本例相差九倍,报告误差必须说明口径。
  • 只看 MSE 判断模型是否合适。残差结构与任务要求同样重要;弯曲例的最小值 12 无法靠再调直线降低。
  • 将离群敏感归咎于求解器。平方损失本来就给大残差更大影响。
  • 认为整体平移 y 会改变斜率。中心化的 Sxy,Sxx 不变,变化由 c 吸收。
  • 把均值点当原点。默认恰好重合,P 移动后均值点改变,最优线随它移动。