时序预测

看曲线向前走:先预测,再逐小时核对。

此刻

怎么做

会骗你

文字版:时序预测在做什么

这一页用的是加州电网 2023 至 2025 年的真实用电负荷记录:模型在 2023–2024 年的数据上训练,然后回放 2025 年的逐日预测——先预测一整天,再逐小时揭晓真实值,让你看着误差一点点累积起来。

画面上正在发生什么

三条线要分清:已知历史、提前做出的预测、后来真实发生的值。预测是在这一天开始之前做出的,之后不再修改;实际值逐小时出现,两条线之间的竖直距离就是这一小时的误差。

切换三种方法看差别:「直接沿用昨天」是最朴素的基线,它在平稳的日子里表现意外地不差——这正是它的意义所在,任何复杂模型都必须先赢过它才算有价值。XGBoost 用历史负荷加上日历规律(星期几、是否节假日、小时)预测,页面标注它在完整测试期的平均误差是 2.94%。拖动时间轴挑节假日或天气转折的日子,会看到所有方法的误差都明显变大。

什么时候它会骗你

  • 时序数据绝不能随机划分。训练集必须整段早于测试集。随机打乱后再划分,等于让模型用未来的数据预测过去,成绩会好得离谱,上线立刻原形毕露。
  • 赢不过「沿用昨天」的模型没有价值。很多时序问题有强烈的日周期和周周期,朴素基线本身就很强。报告一个模型的误差时必须同时报出基线的误差,否则那个数字无法判断好坏。
  • 平均误差掩盖了最该关心的时刻。2.94% 是整个测试期的平均。而电力调度真正在意的恰恰是极端高峰那几天——那些天的误差往往远大于平均值。评估时要单独看极端情形,不能只看总平均。
  • 用未来才知道的特征,就是穿越。预测明天的负荷时,明天的实际气温是拿不到的,能用的只有天气预报。拿实测气温训练出来的模型在回测里很漂亮,实际用不了。

常见问题

时间序列预测怎样评估才算正确?
用按时间前推的切分:训练段永远早于验证段,滚动向前重复多次,取误差平均。同时必须报出朴素基线(如沿用昨天、沿用上周同一天)的误差作为对照,并分别看平稳期和极端期的表现。
LSTM 一定比 XGBoost 强吗?
不一定。在有明确日历规律、特征可以显式构造的负荷预测这类任务上,梯度提升树常常与深度模型相当甚至更好,而且训练更快、更容易解释。深度序列模型的优势更多体现在长序列依赖复杂、难以手工构造特征的场景。
MAPE 这个百分比误差有什么坑?
当真实值接近零时,百分比会被放大到失真;而且它对高估和低估的惩罚不对称。电力负荷这类数值始终远离零的场景用它还算合适,但对可能接近零的序列(如某些商品的日销量)应改用 MAE 或 RMSE。

本页使用美国 EIA 公布的加州区域真实负荷记录,模型用 2023–2024 年数据训练、回放 2025 年逐日预测;2.94% 为该模型在完整测试期的平均误差,不代表其他地区或其他时期的表现。

作者与维护:覃秉丰 · 关于覃秉丰 · 引用本页讲解

继续学习