上一篇把连续的负荷记录切成了历史窗口和未来标签。本系列要求一次预测未来 24 小时,但一个模型未必必须一次输出 24 个值。同样的输入与目标,可以对应几种不同的预测策略。
这些策略决定模型如何训练、如何推理,以及第 1 小时的误差会不会影响第 24 小时。本篇先建立比较框架;具体模型要在统一验证协议下再做选择。
1. 问题:从一个窗口得到 24 个预测值
设时刻 已知的历史窗口及协变量为 ,预测长度为 。我们希望得到:
关键问题是:预测 时,要不要先使用模型刚预测出的 ?预测不同步长,应该共享同一个模型吗?输出 24 个值时,要不要共同学习整条曲线?
2. 直觉:三种组织预测的方法
Recursive 历史 → 下一小时 → 下一小时 → … → 第 24 小时
Direct 历史 ─┬→ 第 1 小时
├→ 第 2 小时
└→ 第 24 小时
Multi-output 历史 → [第 1 小时,…,第 24 小时]
三者可以使用同一份历史信息,但训练目标、模型数量和推理过程不同。不存在对所有数据都最优的一种策略:相关研究指出,递推与直接预测的比较涉及模型偏差和估计方差的取舍,结果会随数据、模型和预测长度变化。
3. Recursive:训练一步,反复向前滚动
递推策略先训练一个单步预测器:
其中 表示该步合法可用的协变量。预测下一步时,将 作为新的历史负荷放回窗口:
如此重复,直到获得 个预测值。对于负荷序列,天气预报和日历特征也要随着预测步长取对应时刻的值;不能把未来真实负荷或真实天气放入递推窗口。
Recursive 的优点是只训练一个单步模型,Horizon 变化时也可以继续递推。代价是要顺序执行多次预测,而且早期错误可能影响后续输入,造成误差传播。模型训练时通常看到真实历史,推理时逐渐看到自己的预测,这种输入分布差异也可能使长步预测变差。不过,误差不一定每一步都同方向累加;实际影响取决于序列动态和模型行为。
4. Direct:每个预测步长单独建模
Direct 为每个 训练一个预测器:
例如, 的模型专门预测下一小时, 的模型专门预测一天后的同一小时。所有模型都站在同一个 Issue Time ,不能给 的模型额外提供 到 的真实负荷。
Direct 不会在推理时把较早的预测重新喂给后续模型,因此没有 Recursive 特有的预测反馈链。它允许不同 Horizon 学到不同关系,但 时通常需要训练和管理 24 个模型。如果各步独立训练,得到的 24 个预测值也未必自然形成平滑、协调的曲线。
“每个步长一个模型”是本篇讨论的标准 Direct 形式。工程上也可以训练一个共享参数的模型,把 Horizon 编号作为输入;这种实现共享参数,但仍需明确每个步长的训练目标和推理信息边界。
5. Multi-output:一次预测整条未来曲线
Multi-output(也常称 MIMO)让一个模型直接输出长度为 的向量:
训练标签也是完整的未来 24 小时。常见损失可以先对每个预测步长计算误差,再求平均:
也可以对关键时段加权,但权重应由业务目标和验证设计决定,不能看到测试结果后再调整。
Multi-output 只训练一个模型,推理时通常一次得到完整预测向量,也没有逐步回灌导致的误差传播。共享表示和联合训练可以让不同 Horizon 互相提供信息;不过,这不保证预测曲线一定平滑或符合物理约束。模型容量、输出头和损失函数仍会影响各步之间的协调程度。多输出预测研究讨论了它相对独立单输出预测的特点。
6. Seq2Seq 在哪里?
Seq2Seq(Sequence-to-Sequence)描述的是模型结构:编码器读取历史序列,解码器产生未来序列。它与上面的预测策略并非完全平行的分类。
- 自回归解码器逐步生成未来值,生成时可能使用之前的预测,具有 Recursive 式的误差反馈;
- 并行解码器一次输出全部 Horizon,更接近 Multi-output;
- 使用 Teacher Forcing 的自回归模型,训练时可输入真实前一步,推理时却只能输入前一步预测,因此需要专门检查训练与推理的差异。
因此,看到“Seq2Seq 模型”这个名字,还需要追问它究竟如何解码、如何使用未来协变量,以及训练和推理时分别把什么放入解码器。
7. 放在一起比较
| 策略 | 典型模型数量 | 推理方式 | 主要优势 | 主要代价 |
|---|---|---|---|---|
| Recursive | 1 个单步模型 | 顺序预测 次 | 训练目标简单,可复用单步模型 | 早期误差可能向后传播,推理串行 |
| Direct | 通常 个模型 | 各 Horizon 独立预测 | 避免预测反馈,可针对步长建模 | 训练和维护成本高,各步未必协调 |
| Multi-output | 1 个多输出模型 | 一次输出 步 | 联合学习整条曲线,推理调用少 | 输出维度随 Horizon 变化,质量依赖联合建模设计 |
表中是典型实现,不是速度或精度排名。例如一个大型 Multi-output 网络的一次推理,未必比 24 个极小的 Direct 模型更省计算;Direct 的模型也可以并行推理。实际成本需要在同一硬件上测量。
贯穿案例的选择方式
本系列会先把 Seasonal Naive 纳入共同基线,再在可比条件下试验至少一种 Direct 或 Recursive 实现,以及一种 Multi-output 实现。对未来 24 小时负荷,不能只看总体 MAE:还应检查 、、、 的误差,以及峰值时段和整日总电量的误差。
比较时保持数据划分、可用协变量、调参预算和评估 Issue Time 一致,并记录训练时间、推理时间和模型数量。先用验证集选择方案,测试集只报告最终结果。只有这样,差异才更可能来自策略本身,而不是信息泄漏或实验资源不对等。
8. 常见错误
把真实未来值放入递推窗口
离线评估时,如果预测 使用了真实 ,测到的是拥有额外未来信息的结果,不是上线时的 Recursive 预测。必须把上一步预测值回灌,或明确说明评估的是另一个任务。
认为 Direct 不会有长步误差
Direct 避免了预测反馈链,但较远 Horizon 本身仍更难预测。它可能因远期信号弱、样本有限或模型估计不稳定而产生更大误差。
认为 Multi-output 一定学到了时序依赖
共享一次前向计算不等于输出之间自动满足合理的日内形状。需要检查逐小时误差、峰值位置和曲线形态,必要时设计显式约束或结构。
只用一次总体分数选策略
一个整体 MAE 可能掩盖“前 6 小时准确、后 18 小时失准”的模型。多步策略应按 Horizon 画误差曲线,并结合业务关心的时段判断。
9. 本文产出与下一步
至此,Part 1 的预测问题可以写成一个待验证的 Problem Specification:目标是建筑逐小时负荷,预测长度为 24,窗口必须遵守 Issue Time 的信息边界;Lookback 和多步策略是验证集上的设计变量;点预测的损失函数还需与希望估计的统计目标一致。
我们尚未用 BDG2 跑出策略对比,因此这里不宣称哪一种方法更好。接下来进入 Part 2,先确保时间戳、缺失值、异常值和特征都被正确处理;随后在 Part 3 固定评估协议,再让 Part 4 的 Baseline 和后续深度模型在同一规则下比较。
参考资料
- Ben Taieb 与 Hyndman,《Boosting multi-step autoregressive forecasts》:Recursive 与 Direct 的偏差和方差取舍。
- Ben Taieb、Sorjamaa 与 Bontempi,《Multiple-output modeling for multi-step-ahead time series forecasting》:多输出预测的研究与比较。
- Hyndman 与 Athanasopoulos,《Forecasting: Principles and Practice》,5.10 Time series cross-validation:按预测步长评估滚动预测。