1. 问题:预测不是“从整张表里找规律”
假设现在是时刻 。我们已经观察到截至 的数据,希望预测 到 的目标值:
这里:
- 是需要预测的 Target;
- 是回看历史的长度,即 Lookback Length;
- 是向未来预测的长度,即 Forecast Horizon;
- 是发起本次预测的时刻,即 Issue Time。
这个写法最重要的不是箭头,而是箭头两侧的信息边界:模型只能使用在 Issue Time 已经获得、或者在未来确定可知的信息。目标区间中的真实负荷当然未知;未来天气也不能因为离线数据表里已经存在,就被当成线上可直接获得的输入。
因此,时间序列预测首先是一个信息约束问题,然后才是一个模型问题。
2. 直觉:把每次预测看成站在时间轴上的一次决策
普通表格数据常被看作一组可以交换顺序的样本。时间序列不同:每个样本都对应一个明确的观察截止点,改变时间顺序会改变样本含义。
以 24 小时建筑负荷预测为例。假设我们在 4 月 1 日 00:00 发起预测,那么:
过去 现在 未来
──────────────────────────────────────│────────────────────────────
历史负荷、历史天气 Issue Time 24 小时真实负荷
│ (未知)
├── 日历信息 ✓ 已知
├── 天气预报 ✓ 可获得但有误差
└── 实测未来天气 ✗ 不可使用
同一张离线数据表里,历史天气和未来实测天气可能只是相邻的两列数值;但在真实预测时,它们属于完全不同的信息集合。前者已经发生,后者尚未发生。
我们把在时刻 真正可用的全部信息记为 。一个预测模型实际学习的是:
而一个更完整的概率预测问题,是学习未来目标在当前信息下的条件分布:
点预测、分位数和预测区间,都可以看作从这个条件分布中提取的不同答案。
3. 定义与形式化
3.1 Target、Feature 与 Covariate
Target 是最终要预测的变量。在贯穿案例中,Target 是每栋建筑的逐小时用电负荷 load。
Feature 是模型输入的统称。时间序列中特别需要区分不同特征在预测时是否可用,因此本系列进一步使用 Covariate 描述与目标共同变化的辅助变量。
按照可用时间和变化方式,输入变量可以分为四类:
| 类型 | 例子 | 在 Issue Time 的可用性 |
|---|---|---|
| 历史观测变量 | 历史负荷、历史气象数据、历史日历信息 | 只知道截至 的部分 |
| 已知未来变量 | 日历信息(小时、星期、节假日) | 可以确定未来整个 Horizon |
| 未来预测变量 | 未来气象数据、电价预测 | 可以获得预测值,但不能获得真实值 |
| 静态变量 | 建筑用途、建筑面积 | 不随时间变化 |
于是案例中的模型输入可以更完整地写成:
其中 表示建筑用途、面积等静态特征。
这个区分会直接影响后续实验是否可信。Building Data Genome Project 2 提供的是实测天气,而生产环境中未来可用的是天气预报。本系列不会把未来实测天气直接当作普通输入;在讨论天气协变量时,我们会显式模拟预报误差,并比较信息质量变化带来的影响。
3.2 Sampling Frequency
Sampling Frequency 表示序列相邻观测之间的时间间隔。逐小时负荷的频率是 1 小时,逐日销量的频率是 1 天。
频率不仅决定时间戳长什么样,也决定问题本身:
- 预测未来 24 个逐小时点,表示预测未来一天的负荷曲线;
- 预测未来 24 个逐日点,则表示预测未来 24 天;
- 把 15 分钟数据聚合成小时数据时,负荷应该求和还是求平均,取决于字段代表能量还是功率。
所以频率和时间戳语义必须在构造样本之前固定下来。Part 2 会专门处理时区、夏令时、重采样和时间对齐问题。
3.3 Lookback 与 Horizon
Lookback 决定模型一次查看多少历史,Horizon 决定模型一次预测多远。
在逐小时用电场景中:
Lookback = 168
Horizon = 24
表示使用过去 7 天的逐小时数据,预测未来 24 小时。这里的 168 只是便于理解的例子,不是尚未验证就确定的最优值。历史越长不一定越好:它可能带来更多周期信息,也可能增加噪声、计算量和过时模式。下一篇会通过 Sliding Window 进一步讨论 、 与 Stride 如何共同决定训练样本。
3.4 单变量、多变量与多序列
这些概念经常被混在一起:
- 单变量预测:只使用目标自身的历史预测目标,例如只用历史负荷预测未来负荷;
- 多变量输入预测:除目标历史外,还使用天气、日历等协变量;
- 多目标预测:同时预测多个目标变量;
- 多序列预测:对多栋建筑、多个门店或多个设备的序列进行预测。
本系列的主要任务是:单目标、多变量输入、多序列的预测问题。前期先选择少量建筑观察单条序列,Part 9 再扩展到共享参数的 Global Model。多序列不等于多变量,这两个维度需要分别设计。
3.5 单步预测与多步预测
当 时,模型只预测下一个时间点;当 时,模型执行多步预测。
多步预测并不只有一种实现方式。模型可以反复用上一步结果预测下一步,也可以为每个 Horizon 单独建模,还可以一次输出完整的未来序列。这些方式分别对应 Recursive、Direct 和 Multi-output 等策略,将在 1.3 中比较。
4. 点预测与概率预测
4.1 点预测回答什么?
点预测为未来每个时刻给出一个值:
t+1 98 kWh
t+2 101 kWh
...
t+24 112 kWh
但“给出一个值”仍然没有说明这个值在统计上代表什么。模型学到的是条件均值、条件中位数,还是其他位置,取决于优化目标。
在给定信息 的条件下,平方误差的总体风险最小化解是条件均值:
绝对误差的总体风险最小化解是条件中位数:
因此,用 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. 时间序列预测与普通监督学习有什么不同?
时间序列模型最终也可以使用输入 和标签 训练,但样本的生成和评估受到时间约束。
| 问题 | 普通表格任务中的常见做法 | 时间序列预测中的要求 |
|---|---|---|
| 样本顺序 | 常假设样本近似可交换 | 时间顺序决定信息是否可用 |
| 数据划分 | 经常随机划分 | 通常按时间先后划分 |
| 特征可用性 | 一列存在即可作为候选特征 | 必须确认 Issue Time 是否可获得 |
| 样本构造 | 每行通常是一条独立样本 | 滑动窗口之间可能高度重叠 |
| 数据分布 | 常假设训练与测试近似同分布 | 季节变化和漂移是常态 |
| 评估方式 | 一个总体指标可能足够 | 还需按 Horizon、场景和实体分析 |
这并不意味着所有时间序列都必须使用专用深度学习模型。经过正确构造的 Lag Feature、Rolling Statistics 和日历特征,同样可以交给线性模型或 LightGBM。真正不可省略的是时间边界,而不是某一种模型结构。
6. 用贯穿案例写出预测任务
现在可以把本系列的任务描述得更精确:
对每栋建筑,在每个 Issue Time,使用截至该时刻的历史逐小时负荷和天气观测、未来可知的日历特征、带有预报误差的未来天气信息,以及建筑静态属性,预测未来 24 小时的逐小时用电负荷。
当前确定的 Problem Specification 如下:
| 项目 | 定义 |
|---|---|
| Target | 建筑逐小时用电负荷 load |
| Sampling Frequency | 1 小时 |
| 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 如何决定每条样本的输入、标签、相关性和最终数据量。