🎯 选型核心: 不同指标反映预测误差的不同维度,选择合适指标能更准确评估模型在业务场景中的表现。
📐 MAE 平均误差
定义: \( \text{MAE} = \frac{1}{n}\sum_{i=1}^{n} |y_i - \hat{y}_i| \)
✅ 适用场景: 误差量级稳定,无异常极值;需要直观解释平均偏差。
👍 优点 直观易懂,对异常值不敏感,单位一致
👎 缺点 无法反映误差方向,对大误差惩罚不足
🔲 MSE 均方误差
定义: \( \text{MSE} = \frac{1}{n}\sum_{i=1}^{n} (y_i - \hat{y}_i)^2 \)
✅ 适用场景: 需要放大较大误差(如风险敏感场景);数学可微。
👍 优点 对大误差惩罚大,可导便于优化
👎 缺点 量纲平方,可解释性差;受异常值影响大
📏 RMSE 均方根误差
定义: \( \text{RMSE} = \sqrt{\frac{1}{n}\sum_{i=1}^{n} (y_i - \hat{y}_i)^2} \)
✅ 适用场景: 需要与原单位一致的误差度量,兼顾大误差惩罚。
👍 优点 量纲一致,对大误差敏感,广泛使用
👎 缺点 仍受异常值影响,比MAE更敏感
📈 MAPE 平均百分比误差
定义: \( \text{MAPE} = \frac{100\%}{n}\sum_{i=1}^{n} \left|\frac{y_i - \hat{y}_i}{y_i}\right| \)
✅ 适用场景: 需要相对误差,适合不同量级序列对比。
👍 优点 无量纲,可跨序列比较,解释直观
👎 缺点 当 \(y_i=0\) 时无定义;对低值敏感
⚖️ sMAPE 对称MAPE
定义: \( \text{sMAPE} = \frac{200\%}{n}\sum_{i=1}^{n} \frac{|y_i - \hat{y}_i|}{|y_i|+|\hat{y}_i|} \)
✅ 适用场景: 避免MAPE对低值过度敏感,处理零值更稳定。
👍 优点 对称、有界(0~200%),处理零值较好
👎 缺点 当真实值和预测值都为零时仍不稳定;解释略复杂
🔄 MASE 平均尺度误差
定义: \( \text{MASE} = \frac{\frac{1}{n}\sum|y_i - \hat{y}_i|}{\frac{1}{n-1}\sum_{i=2}^{n}|y_i - y_{i-1}|} \)
✅ 适用场景: 季节性/趋势数据,与简单基准(naive)对比。
👍 优点 尺度无关,可跨系列比较,对零值鲁棒
👎 缺点 分母为0时失效;对季节性周期敏感
📌 Python 快速计算参考
import numpy as np
def mae(y_true, y_pred): return np.mean(np.abs(y_true - y_pred))
def mse(y_true, y_pred): return np.mean((y_true - y_pred) ** 2)
def rmse(y_true, y_pred): return np.sqrt(mse(y_true, y_pred))
def mape(y_true, y_pred):
return np.mean(np.abs((y_true - y_pred) / np.maximum(y_true, 1e-8))) * 100
def smape(y_true, y_pred):
denom = np.abs(y_true) + np.abs(y_pred)
denom = np.where(denom == 0, 1e-8, denom) # 避免除零
return np.mean(2 * np.abs(y_true - y_pred) / denom) * 100
def mase(y_true, y_pred, y_hist=None):
# y_hist 为历史序列用于计算naive尺度
if y_hist is None:
y_hist = y_true # 简化示例
naive_scale = np.mean(np.abs(np.diff(y_hist)))
return np.mean(np.abs(y_true - y_pred)) / max(naive_scale, 1e-8)
📋 六项指标综合对比 适用场景 & 核心权衡
| 指标 | 量纲 | 对异常值敏感度 | 跨序列可比性 | 零值处理 | 推荐场景 |
| MAE | 同原始 | 低 | 否 | 鲁棒 | 基准评估,业务解释 |
| MSE | 平方 | 高 | 否 | 鲁棒 | 优化目标,风险惩罚 |
| RMSE | 同原始 | 较高 | 否 | 鲁棒 | 工程应用,综合度量 |
| MAPE | 百分比 | 中等 | 是 | 失效 | 销售预测,同比分析 |
| sMAPE | 百分比 | 中等 | 是 | 较稳定 | 需求波动大,含零值 |
| MASE | 无量纲 | 低 | 是 | 鲁棒 | 季节性序列,模型对比 |
🧠 选型小贴士
- 业务可解释优先 → MAE / RMSE
- 需要放大风险 → MSE / RMSE
- 跨品类对比 → MAPE / sMAPE (注意零值)
- 季节性数据 & 基准对比 → MASE
- 组合使用:RMSE + MAE + sMAPE 覆盖多数场景