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