2. 回归问题评价:MSE、MAE、R²、RMSE
回归模型训练完了,怎么知道它好不好?
这个问题,我刚开始做机器学习时也困惑过。看着 loss 曲线往下走,心里没底。后来带我的老工程师说了一句话,我一直记着:「评价指标就是模型的照妖镜,选错了,你连模型在撒谎都看不出来。」
这一章,我们就来聊聊回归任务里最常用的四个评价函数。我会把每个指标的数学含义、直觉理解、适用场景,以及我在项目中踩过的坑,一次性讲清楚。
2.1 均方误差(MSE)——最常用的「大误差惩罚者」
MSE 的定义很简单:
MSE = (1/n) * Σ(y_i - ŷ_i)²
说白了,就是每个样本的真实值和预测值之差,先平方,再求平均。
为什么用平方?
因为平方放大了大误差。一个误差为 10 的样本,平方后贡献 100;而一个误差为 1 的样本,只贡献 1。这意味着 MSE 会「盯着」那些预测得很离谱的样本。
MSE 的缺点也很明显:
- 量纲是平方单位,比如房价预测中,MSE 的单位是「万元²」,解释性差。
- 对异常值过于敏感,一个坏点就能把指标拉崩。
2.2 均方根误差(RMSE)——MSE 的「可解释版本」
RMSE 就是给 MSE 开个根号:
RMSE = sqrt(MSE) = sqrt((1/n) * Σ(y_i - ŷ_i)²)
为什么要开根号?
为了让量纲回到原始单位。如果房价的单位是「万元」,MSE 是「万元²」,RMSE 就是「万元」。这样你就能直接说:「模型的平均预测误差大约是 5 万元。」
RMSE vs MSE:
| 对比维度 | MSE | RMSE |
|---|---|---|
| 量纲 | 原始单位的平方 | 与原始单位一致 |
| 可解释性 | 较差 | 较好 |
| 数学性质 | 处处可导,优化方便 | 处处可导,优化方便 |
| 推荐场景 | 作为损失函数 | 作为汇报指标 |
2.3 平均绝对误差(MAE)——对异常值「免疫」的稳健指标
MAE 的计算更直观:
MAE = (1/n) * Σ|y_i - ŷ_i|
就是所有误差的绝对值,求平均。
MAE 和 MSE 最大的区别是什么?
MAE 对每个样本的误差「一视同仁」。一个误差为 10 的样本,贡献 10;一个误差为 1 的样本,贡献 1。它不会像 MSE 那样放大异常值的影响。
- 你的数据里有很多异常值,你不想让它们主导评价结果。
- 你更关心「典型误差」的大小,而不是「极端误差」。
- 你希望指标的单位和原始数据一致,方便向业务方解释。
但 MAE 也有自己的问题:
- 在 y=0 处不可导,梯度下降时需要注意处理。
- 对同样的数据,MAE 通常比 RMSE 小(因为平方放大了大误差),所以不要拿 MAE 和 RMSE 直接比大小。
2.4 R² 决定系数——模型「解释了多少方差」
前面三个指标都是有量纲的,R² 不一样,它是一个无量纲的分数,范围通常在 0 到 1 之间。
R² = 1 - (SS_res / SS_tot)
其中:
SS_res = Σ(y_i - ŷ_i)² (残差平方和)
SS_tot = Σ(y_i - ȳ)² (总平方和,ȳ 是 y 的均值)
怎么理解 R²?
想象一下,如果你没有任何特征,只能用平均值 ȳ 来预测所有样本,那你的误差就是 SS_tot。现在你用了模型,误差降到了 SS_res。R² 衡量的是:你的模型比「瞎猜平均值」好了多少?
- R² = 1: 完美拟合,模型解释了全部方差。
- R² = 0: 模型和猜平均值一样差。
- R² < 0: 模型比猜平均值还差,说明模型有问题(过拟合、特征选择错误等)。
R² 的适用场景:
- 你想比较不同量纲的模型(比如一个预测房价,一个预测温度)。
- 你想向非技术人员解释模型效果(「我们的模型能解释 85% 的波动」)。
- 你需要在不同数据集之间对比模型(但要注意,R² 对数据方差敏感,方差大的数据更容易得到高 R²)。
2.5 一张图看懂四个指标的关系
下面这张 SVG 图,把四个指标的核心逻辑和适用场景串在了一起。我建议你多看几遍,面试时经常被问到。
2.6 实战建议:如何组合使用这四个指标
在实际项目中,我从来不会只看一个指标。我的标准流程是这样的:
- 训练阶段: 用 MSE 作为损失函数,因为它处处可导,梯度下降稳定。
- 验证阶段: 同时监控 RMSE 和 MAE。如果 RMSE / MAE 的比值大于 1.5,说明存在异常值,需要检查数据。
- 最终评估: 汇报 R² 给业务方,同时给出 RMSE 的具体数值,让他们有直观感受。
- 模型对比: 用 R² 比较不同量纲的模型,用 RMSE 比较同量纲的模型。
2.7 小结
这一章我们聊了四个回归评价指标:
- MSE: 平方误差,放大异常值,适合做损失函数。
- RMSE: MSE 开根号,量纲可解释,适合汇报。
- MAE: 绝对误差,对异常值鲁棒,反映典型误差。
- R²: 无量纲,解释方差比例,适合跨模型对比。