回归指标:MSE、MAE 与 R²
当模型预测的是一个数字而不是一个标签,你衡量的是它错得有多大。MSE、MAE 和 R² 各自回答关于这些误差的不同问题。
分类问的是「哪一类」。回归问的是「多少」——一个价格、一个温度、一个送达时间。这里没有对错,只有你偏了多远。回归指标就是把预测与真实之间的距离汇总起来的各种方式。
每个预测都会产生一个残差:error = actual − predicted。模型预测一套房子卖 $420k,实际卖了 $450k,残差就是 $30k。每个样本有一个残差,下面每个指标都是把这一堆残差变成一个数。
MAE:老实的平均误差
**平均绝对误差(MAE)**是绝对残差的平均值:
MAE = mean(|actual − predicted|)
如果 MAE 是 $18k,你的预测平均偏了 $18k。事情就这么简单——MAE 与目标值同单位,念出来跟大白话一样。+$30k 的残差和 −$30k 的残差各自贡献 $30k。
MAE 对所有误差一视同仁地按比例计:错 $40k 恰好是错 $20k 的两倍。这让它对离群值稳健。一套定价离谱的豪宅对 MAE 的推动就是它自身那么大,不会更多,所以 MAE 能很好地描述典型情况。
MSE 与 RMSE:惩罚离谱的错误
**均方误差(MSE)**对平方后的残差取平均:
MSE = mean((actual − predicted)²)
取平方有两个作用。一是消掉符号(正负不会相互抵消),二是让大误差占的分量不成比例——错 $40k 的贡献是错 $20k 的四倍,不是两倍。MSE 极其在意大误差。
麻烦在于单位:房价的 MSE 单位是「美元的平方」,读起来毫无意义。所以大家开个平方根:RMSE = √MSE,回到美元单位,可以直接和 MAE 比。
两者之间的差距有诊断价值。因为 RMSE 会放大大的误差,RMSE 恒 ≥ MAE,两者差距大说明有几个大离群值拖长了尾部。RMSE ≈ MAE 说明误差大小比较均匀。
按哪种情况更疼来选。如果错一次 $100k 远比错十次 $10k 更糟——在风险、库存、产能这类场景里常常如此——就用 MSE/RMSE,它会惩罚罕见的灾难。如果每一块钱的误差都同样糟糕,MAE 才贴合你的现实。
R²:你比最笨的基线强吗
MAE 和 RMSE 是绝对量——$18k 算不算好,取决于价格区间。**R²(决定系数)**把它变成相对量:拿你的模型和最懒的预测器比,也就是永远猜平均值。
R² = 1 − (模型的平方误差 / 猜平均值者的平方误差)
- R² = 1:预测完美,零误差。
- R² = 0:你的模型不比一直猜平均值强。
- R² < 0:你的模型比猜平均值还差——是的,这会发生,通常出现在模型没训练过的数据上。
R² 为 0.85,意思是猜平均值者留下的目标方差,模型解释了其中 85%。它的优点是无单位、跨问题可解释:房价的 R² 和气温的 R² 处在同一个 0 到 1 的尺度上。
陷阱在于:加入特征时 R² 从不下降,哪怕加的是无用的随机特征,因为旋钮多了只会更贴合训练数据。所以在比较输入数量不同的模型时,对多余特征加以惩罚的调整 R²才是老实的做法——这也是为什么训练集上的 R² 几乎一文不值。要在留出的测试数据上报告它。
一起报告
没有哪个单一数字够用,原因和在分类里一样。一个实用的默认做法:用 RMSE 或 MAE 报告以真实单位表示的误差,用 R² 说明模型是否胜过那个平凡基线。如果 RMSE 明显高于 MAE,把这一点说出来——它意味着离群值,而离群值往往正是真实产品风险所在。另外永远画一张残差对预测值的图:指标只做概括,图才能看出误差是随机噪声(好),还是模型漏掉的某种规律(可修)。
要点回顾
- 回归衡量的是残差(
actual − predicted)的大小,不是对与错。 - MAE 是以真实单位表示的平均误差——对离群值稳健,所有误差按比例计。
- MSE/RMSE 对误差取平方,所以离谱的错误会主导结果;当罕见的大误差才是真正的危险时用它。RMSE 恒 ≥ MAE,差距大说明有离群值。
- R² 是相对量:1 为完美,0 是与猜平均值打平,负数说明还不如它。比较特征数量不同的模型时用调整 R²,而且一定要在留出数据上算。
- 报告一个误差指标加 R²,再画残差图,抓住被单个数字掩盖的规律。
下一篇: 文本生成指标