You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多步时间序列预测与真实值的标准MAE评估方法咨询

时间序列多步预测的MAE标准计算方式

问题场景

我正在做股票价格的时间序列预测任务,测试集包含65个观测样本,每个样本需要预测未来20天的价格,最终预测值和真实值都是形状为(65, 20)的数组。现在需要计算MAE评估指标,疑惑标准计算方式是只取前20个预测值和真实值对比,还是有其他正确方式?

标准计算逻辑

MAE的核心是所有对应预测-真实值对的绝对误差的平均值,针对多步预测场景:

  • 每个测试样本对应20步预测,总共有65*20=1300个预测-真实值对
  • 需要把所有这些对应值一一匹配,计算每个的绝对差,再求整体平均值,这才是能反映模型整体多步预测性能的标准MAE

代码实现对比与修正

你当前代码的问题

你的现有代码中:

preds= preds[0:,1]
trues= trues[0:,1]

这一步只提取了每个样本的第2步预测值和真实值(数组索引从0开始),相当于只计算了单步(第2天)的MAE,完全丢失了其他19步的误差信息,无法全面评估模型性能。

正确的实现方式

参考其他开发者的思路,需要先将二维数组展平为一维,让所有预测值和真实值一一对应,再计算MAE:

import numpy as np
from sklearn.metrics import mean_absolute_error

# 1. 重塑数组到(65,20)的形状
preds = np.array(np.reshape(predictions, (65, 20)))
trues = np.array(np.reshape(values, (65, 20)))

# 2. 逆标准化(如果之前做了数据标准化处理)
preds = mm.inverse_transform(preds)
trues = mm.inverse_transform(trues)

# 3. 展平数组,将所有预测-真实值对对齐
preds_flat = preds.ravel()  # 等价于np.concatenate(preds, axis=0)
trues_flat = trues.ravel()

# 4. 计算标准MAE
mae = mean_absolute_error(trues_flat, preds_flat)
print(f"整体多步预测MAE: {mae}")

扩展:分步骤计算MAE

如果需要查看每一步(第1天到第20天)的单独MAE,也可以按列计算:

# 按时间步计算每一步的MAE
step_mae = []
for step in range(20):
    step_mae.append(mean_absolute_error(trues[:, step], preds[:, step]))

# 打印每一步结果
for idx, mae_val in enumerate(step_mae, 1):
    print(f"第{idx}天预测MAE: {mae_val:.4f}")

内容的提问来源于stack exchange,提问作者Mouna Ahmen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 15:27:23