1. 问题:预测不是“从整张表里找规律”

假设现在是时刻 tt。我们已经观察到截至 tt 的数据,希望预测 t+1t+1 到 t+Ht+H 的目标值:

yt−L+1:t⟶y^t+1:t+H. y_{t-L+1:t} \longrightarrow \hat{y}_{t+1:t+H}.

这里:

  • yy 是需要预测的 Target;
  • LL 是回看历史的长度,即 Lookback Length;
  • HH 是向未来预测的长度,即 Forecast Horizon;
  • tt 是发起本次预测的时刻,即 Issue Time。

这个写法最重要的不是箭头,而是箭头两侧的信息边界:模型只能使用在 Issue Time 已经获得、或者在未来确定可知的信息。目标区间中的真实负荷当然未知;未来天气也不能因为离线数据表里已经存在,就被当成线上可直接获得的输入。

因此,时间序列预测首先是一个信息约束问题,然后才是一个模型问题。

2. 直觉:把每次预测看成站在时间轴上的一次决策

普通表格数据常被看作一组可以交换顺序的样本。时间序列不同:每个样本都对应一个明确的观察截止点,改变时间顺序会改变样本含义。

以 24 小时建筑负荷预测为例。假设我们在 4 月 1 日 00:00 发起预测,那么:

过去                                  现在                  未来
──────────────────────────────────────│────────────────────────────
历史负荷、历史天气                    Issue Time           24 小时真实负荷
                                      │                     (未知)
                                      ├── 日历信息          ✓ 已知
                                      ├── 天气预报          ✓ 可获得但有误差
                                      └── 实测未来天气      ✗ 不可使用

同一张离线数据表里,历史天气和未来实测天气可能只是相邻的两列数值;但在真实预测时,它们属于完全不同的信息集合。前者已经发生,后者尚未发生。

我们把在时刻 tt 真正可用的全部信息记为 It\mathcal I_t。一个预测模型实际学习的是:

Y^t+1:t+H=fθ(It). \hat{Y}_{t+1:t+H} = f_\theta(\mathcal I_t).

而一个更完整的概率预测问题,是学习未来目标在当前信息下的条件分布:

p ⁣(Yt+1:t+H∣It). p\!\left(Y_{t+1:t+H}\mid \mathcal I_t\right).

点预测、分位数和预测区间,都可以看作从这个条件分布中提取的不同答案。

3. 定义与形式化

3.1 Target、Feature 与 Covariate

Target 是最终要预测的变量。在贯穿案例中,Target 是每栋建筑的逐小时用电负荷 load。

Feature 是模型输入的统称。时间序列中特别需要区分不同特征在预测时是否可用,因此本系列进一步使用 Covariate 描述与目标共同变化的辅助变量。

按照可用时间和变化方式,输入变量可以分为四类:

类型例子在 Issue Time 的可用性
历史观测变量历史负荷、历史气象数据、历史日历信息只知道截至 tt 的部分
已知未来变量日历信息(小时、星期、节假日)可以确定未来整个 Horizon
未来预测变量未来气象数据、电价预测可以获得预测值,但不能获得真实值
静态变量建筑用途、建筑面积不随时间变化

于是案例中的模型输入可以更完整地写成:

Y^t+1:t+H=fθ ⁣(Yt−L+1:t,Xt−L+1:tpast,Xt+1:t+Hknown,Xt+1:t+Hforecast,S), \hat{Y}_{t+1:t+H} = f_\theta\!\left( Y_{t-L+1:t}, X^{\text{past}}_{t-L+1:t}, X^{\text{known}}_{t+1:t+H}, X^{\text{forecast}}_{t+1:t+H}, S \right),

其中 SS 表示建筑用途、面积等静态特征。

这个区分会直接影响后续实验是否可信。Building Data Genome Project 2 提供的是实测天气,而生产环境中未来可用的是天气预报。本系列不会把未来实测天气直接当作普通输入;在讨论天气协变量时,我们会显式模拟预报误差,并比较信息质量变化带来的影响。

3.2 Sampling Frequency

Sampling Frequency 表示序列相邻观测之间的时间间隔。逐小时负荷的频率是 1 小时,逐日销量的频率是 1 天。

频率不仅决定时间戳长什么样,也决定问题本身:

  • 预测未来 24 个逐小时点,表示预测未来一天的负荷曲线;
  • 预测未来 24 个逐日点,则表示预测未来 24 天;
  • 把 15 分钟数据聚合成小时数据时,负荷应该求和还是求平均,取决于字段代表能量还是功率。

所以频率和时间戳语义必须在构造样本之前固定下来。Part 2 会专门处理时区、夏令时、重采样和时间对齐问题。

3.3 Lookback 与 Horizon

Lookback LL 决定模型一次查看多少历史,Horizon HH 决定模型一次预测多远。

在逐小时用电场景中:

Lookback = 168
Horizon  = 24

表示使用过去 7 天的逐小时数据,预测未来 24 小时。这里的 168 只是便于理解的例子,不是尚未验证就确定的最优值。历史越长不一定越好:它可能带来更多周期信息,也可能增加噪声、计算量和过时模式。下一篇会通过 Sliding Window 进一步讨论 LL、HH 与 Stride 如何共同决定训练样本。

3.4 单变量、多变量与多序列

这些概念经常被混在一起:

  • 单变量预测:只使用目标自身的历史预测目标,例如只用历史负荷预测未来负荷;
  • 多变量输入预测:除目标历史外,还使用天气、日历等协变量;
  • 多目标预测:同时预测多个目标变量;
  • 多序列预测:对多栋建筑、多个门店或多个设备的序列进行预测。

本系列的主要任务是:单目标、多变量输入、多序列的预测问题。前期先选择少量建筑观察单条序列,Part 9 再扩展到共享参数的 Global Model。多序列不等于多变量,这两个维度需要分别设计。

3.5 单步预测与多步预测

当 H=1H=1 时,模型只预测下一个时间点;当 H>1H>1 时,模型执行多步预测。

多步预测并不只有一种实现方式。模型可以反复用上一步结果预测下一步,也可以为每个 Horizon 单独建模,还可以一次输出完整的未来序列。这些方式分别对应 Recursive、Direct 和 Multi-output 等策略,将在 1.3 中比较。

4. 点预测与概率预测

4.1 点预测回答什么?

点预测为未来每个时刻给出一个值:

t+1   98 kWh
t+2  101 kWh
...
t+24 112 kWh

但“给出一个值”仍然没有说明这个值在统计上代表什么。模型学到的是条件均值、条件中位数,还是其他位置,取决于优化目标。

在给定信息 It\mathcal I_t 的条件下,平方误差的总体风险最小化解是条件均值:

arg⁡min⁡aE ⁣[(Y−a)2∣It]=E ⁣[Y∣It]. \arg\min_a \mathbb E\!\left[(Y-a)^2\mid\mathcal I_t\right]= \mathbb E\!\left[Y\mid\mathcal I_t\right].

绝对误差的总体风险最小化解是条件中位数:

arg⁡min⁡aE ⁣[∣Y−a∣∣It]∈Median⁡ ⁣(Y∣It). \arg\min_a \mathbb E\!\left[|Y-a|\mid\mathcal I_t\right] \in \operatorname{Median}\!\left(Y\mid\mathcal I_t\right).

因此,用 MSE 训练的点预测倾向于估计条件均值,用 MAE 训练则倾向于估计条件中位数。当未来分布偏斜、存在尖峰或具有不同业务代价时,两者可能明显不同。“最可能的值”并不是所有点预测的统一含义。

4.2 概率预测增加了什么?

概率预测不仅给出中心位置,还描述不确定性。例如:

P10 =  85 kWh
P50 = 100 kWh
P90 = 118 kWh

它可以回答:未来负荷大致落在哪个范围,预测有多不确定,以及低估和高估风险应该如何权衡。

点预测和概率预测不是互相替代的两类任务。更自然的关系是:

未来条件分布
   ├── 条件均值        → MSE 点预测
   ├── 条件中位数      → MAE 点预测
   ├── 条件分位数      → P10 / P50 / P90
   └── 预测区间与概率  → 风险决策

本系列前半部分先用点预测建立数据、模型和评估体系,Part 8 再扩展到 Quantile Forecasting、Prediction Interval 和 Conformal Prediction。

5. 时间序列预测与普通监督学习有什么不同?

时间序列模型最终也可以使用输入 XX 和标签 YY 训练,但样本的生成和评估受到时间约束。

问题普通表格任务中的常见做法时间序列预测中的要求
样本顺序常假设样本近似可交换时间顺序决定信息是否可用
数据划分经常随机划分通常按时间先后划分
特征可用性一列存在即可作为候选特征必须确认 Issue Time 是否可获得
样本构造每行通常是一条独立样本滑动窗口之间可能高度重叠
数据分布常假设训练与测试近似同分布季节变化和漂移是常态
评估方式一个总体指标可能足够还需按 Horizon、场景和实体分析

这并不意味着所有时间序列都必须使用专用深度学习模型。经过正确构造的 Lag Feature、Rolling Statistics 和日历特征,同样可以交给线性模型或 LightGBM。真正不可省略的是时间边界,而不是某一种模型结构。

6. 用贯穿案例写出预测任务

现在可以把本系列的任务描述得更精确:

对每栋建筑,在每个 Issue Time,使用截至该时刻的历史逐小时负荷和天气观测、未来可知的日历特征、带有预报误差的未来天气信息,以及建筑静态属性,预测未来 24 小时的逐小时用电负荷。

当前确定的 Problem Specification 如下:

项目定义
Target建筑逐小时用电负荷 load
Sampling Frequency1 小时
Forecast Horizon未来 24 小时
Input历史负荷、天气、日历和建筑静态属性
Output前期以点预测为主,Part 8 扩展到概率预测
Entity单栋建筑起步,后续扩展到多建筑 Global Model
Lookback在 1.2 中结合周期与实验确定
Forecast Strategy在 1.3 中比较后确定

这份定义还不是最终实验配置,但它已经划定了后续工作的边界:任何训练样本、特征和评估结果,都必须能够还原到某个真实 Issue Time,并遵守当时的信息可用性。

7. 常见误解

误解一:数据表里有未来特征,就可以直接使用

离线数据集记录了后来发生的事实,不代表预测时已经知道这些事实。未来实测天气、由完整未来窗口计算的统计量,或者使用全量数据拟合的标准化参数,都可能造成泄漏。

误解二:预测就是把曲线向右延长

稳定趋势只是时间序列的一种结构。真实序列还可能包含周期、节假日效应、突变、外生变量影响和分布漂移。不同结构需要不同的输入、Baseline 和评估方式。

误解三:输入变量多就是“多变量预测”

输入变量数量、预测目标数量和序列实体数量是三个不同维度。天气协变量不会让单目标负荷预测自动变成多目标预测,多栋建筑也不等于一个多变量序列。

误解四:模型输出的点就是未来最可能的值

点预测的统计含义由损失函数决定。MSE 对应条件均值,MAE 对应条件中位数;它们都不必然等于概率密度最高的位置。

误解五:先选模型,再考虑数据划分和指标

如果训练和测试之间发生泄漏,再复杂的模型也只是在利用错误信息。这个系列会先固定数据预算和评估协议,再让所有模型在同一套规则下比较。

8. 与后续内容的关系

这一篇确定了预测问题的语言和边界,后续内容会依次补全尚未确定的部分:

  • 1.2:如何用 Lookback、Horizon 和 Stride 构造 Sliding Window;
  • 1.3:Recursive、Direct 与 Multi-output 多步预测策略如何选择;
  • Part 2:时间戳、缺失值、异常值和时间特征如何处理;
  • Part 3:如何划分数据、选择指标并系统检查数据泄漏;
  • Part 6:不同协变量在训练和推理阶段如何对齐;
  • Part 8:如何从点预测扩展到概率预测与风险决策。

9. 下一篇

问题定义清楚后,原始长序列仍然不能直接变成监督学习样本。下一篇将从 Sliding Window 开始,讨论 Lookback、Horizon 与 Stride 如何决定每条样本的输入、标签、相关性和最终数据量。