时序预测常用衡量指标
# RSE(Relative Squared Error,标准化平方误差)
def RSE(pred, true):
return np.sqrt(np.sum((true - pred) ** 2)) / np.sqrt(np.sum((true - true.mean()) ** 2))
1
2
2
含义: 衡量预测误差与真实数据自身方差之间的比值。相当于对RMSE进行了标准化,使其具有无量纲的特性。
公式:
其中:
- 是真实值, 是预测值
- 是真实值的均值
# MAE(Mean Absolute Error,平均绝对误差)
def MAE(pred, true):
return np.mean(np.abs(pred - true))
1
2
2
含义: 衡量平均每个预测值与真实值的绝对差异。
公式:
# MSE(Mean Squared Error,均方误差)
def MSE(pred, true):
return np.mean((pred - true) ** 2)
1
2
2
含义: 衡量平均预测误差的平方,放大了较大误差的影响。
公式:
# RMSE(Root Mean Squared Error,均方根误差)
def RMSE(pred, true):
return np.sqrt(MSE(pred, true))
1
2
2
含义: MSE的平方根,单位和原始数据一致,解释性更强。
公式:
# MAPE(Mean Absolute Percentage Error,平均绝对百分比误差)
def MAPE(pred, true):
return np.mean(np.abs((pred - true) / true))
1
2
2
含义: 衡量预测误差相对于真实值的百分比。对真实值为0的数据不适用。
公式:
# MSPE(Mean Squared Percentage Error,平均平方百分比误差)
def MSPE(pred, true):
return np.mean(np.square((pred - true) / true))
1
2
2
含义: MAPE的平方版本,同样对较大相对误差更敏感。
公式:
# CORR(Correlation,皮尔逊相关系数)
def CORR(pred, true):
u = ((true - true.mean(0)) * (pred - pred.mean(0))).sum(0)
d = np.sqrt(((true - true.mean(0)) ** 2 * (pred - pred.mean(0)) ** 2).sum(0))
d += 1e-12
return 0.01*(u / d).mean(-1)
1
2
3
4
5
2
3
4
5
含义: 衡量预测值和真实值之间的线性相关性。值越接近1表示相关性越强。
公式(简化):
其中 表示变量的维度(例如多变量时间序列中的每一个维度),加入 0.01
是人为缩放调整。
# metric 函数(汇总多个指标)
def metric(pred, true):
mae = MAE(pred, true)
mse = MSE(pred, true)
rmse = RMSE(pred, true)
mape = MAPE(pred, true)
mspe = MSPE(pred, true)
rse = RSE(pred, true)
corr = CORR(pred, true)
return mae, mse, rmse, mape, mspe, rse, corr
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
该函数将上述所有指标组合起来,输出一个指标元组,常用于模型评估时统一计算多个性能指标。
上次更新: 2025/07/22, 15:24:25