9.3 MAE、RMSE 与决定系数
回归模型输出连续预测,因此不存在一项简单的“答对/答错”计数。评估要汇总一整组残差分布;合理汇总方式取决于真实决策怎样看待普通偏差、严重偏差、误差方向以及相对基线的表现。
让残差成本决定使用 MAE 还是 RMSE
对 个留出样本,残差为 。平均绝对误差(Mean Absolute Error, MAE)定义为:
MAE 与目标单位相同。MAE 为 4.2 分钟,表示在当前评估集中,预测绝对偏差平均为 4.2 分钟;它不表示每笔订单都恰好错 4.2 分钟,而且会丢失高估/低估方向。
均方根误差(Root Mean Squared Error, RMSE)定义为:
平方让大残差获得超比例影响,开平方再把结果带回目标单位。若严重错误的运营成本超线性增长,或要与模型的平方损失目标保持一致,RMSE 很合适;但它不会自动比 MAE “更准确”。
例如残差为 ,最后一笔订单对绝对误差总和贡献 18,对平方误差总和却贡献 324。逐行贡献图能直观看出两种指标的不同价值偏好。
from sklearn.metrics import (
mean_absolute_error,
root_mean_squared_error,
)
mae_minutes = mean_absolute_error(y_valid, y_pred)
rmse_minutes = root_mean_squared_error(y_valid, y_pred)比较候选模型时,必须使用完全相同的留出行、目标定义和样本权重。一个平均数之外,还应报告残差分布或有用分位数。两个模型可以有相同 MAE,其中一个全是普通小错,另一个却藏着危险失败长尾。
通过均值基线解释 ,再拆解切片
决定系数(coefficient of determination) 会把模型平方误差与“始终预测当前评估目标均值”的参照规则比较。先定义:
以及
于是:
这条尺度有几个关键位置:
| 在当前评估集中的含义 | |
|---|---|
| 预测与真实目标完全相同 | |
| 平方误差等于真实均值基线 | |
| 小于 | 预测比该均值基线更差 |
负 不表示预测值为负; 也不等于“准确率 72%”。它表示按当前公式,模型相对评估均值基线减少了 72% 的平方误差。 没有单位,而且目标人群的离散程度改变时,即使 MAE 相近,它也可能明显变化。
from sklearn.metrics import r2_score
r2 = r2_score(y_valid, y_pred)总体指标像地图平均值,部署却发生在具体位置。应建立逐行预测表,并至少检查:
- 保留高估/低估方向的平均残差;
- 声明过的地区、时段或客户组中的 MAE 与 RMSE;
- 不同目标分位或预测分位中的残差;
- 每个切片的样本量与不确定性。
重要切片与最小样本数应在打开最终测试集之前确定。否则,反复搜寻“有趣子群”也会变成测试集选择。小切片更适合作为继续收集数据的线索,而不是自动重建模型的理由。
scikit-learn 的交叉验证中,损失常使用 neg_mean_absolute_error 之类的 scorer 名称,因为选择接口统一假定“越大越好”。展示误差时,要把返回负值还原为正误差,并保留完整折数组,而不是只报均值。
指标回答“错了多少”,却不回答“以什么形状犯错”。9.4 节会把验证曲线、系数路径与残差图组合起来,选择正则化并诊断平均数掩盖的问题。