TATECHATLAS
◎ 简体中文
数学与模型

Compare a time-series forecast with a seasonal baseline

构建上一季节的参考,在后来的观测值上进行评估,并区分日历对齐与泄漏和缺失数据的区别。

本文内容

A seasonal baseline predicts an observation using the value from the corresponding earlier season. For regularly spaced monthly observations with annual seasonality, the reference is twelve observations earlier. Compare your model and baseline on the same later dates using only information available at each forecast origin. A low training error alone does not establish that a model improves on this simple reference。

选择与任务相匹配的参考

整体均值忽略了数值在重复周期中所处的位置。当需求可靠地在月份之间不同时,去年的对应月份可以作为更有信息量的参考。这是一个需要评估的假设,而不是证明每个系列都是季节性的。

从观测时间表和实际过程中选择周期。对于完整的月度系列,12 行代表一年。在每日数据中有 12 行或表格中有缺失月份描述的是不同的间隔。基线应与预测目标匹配,而不是与方便的数组长度匹配。

保持时间索引规则明确

按时间顺序排列观测值,检查重复时间戳、间隔和单位。在 pandas 中,按周期移动值与按频率移动索引是不同的。对于滞后参考,数值必须与它们预测的未来日期对齐。

不要静默地使用后来的值来填充间隔,因为这可能会泄露在预测起点不可用的信息。如果系列不规则,请明确对齐匹配的日历周期或选择其他参考。关于缺失观测值的决定应一致地应用于模型和基线。

一个小月度示例

此示例使用 Python 的标准库和二十四个合成的等间距月度观测值。前 12 个值代表一年,接下来的 12 个值高出两个单位。这些是说明性数据,而非测量值或性能证据。

对于第二年,12 个观测值的滞后预测第一年的值。此数据集中第一个位置没有 earlier season,因此不能用此基线对其进行评分。永远不要用 future observations 替换那些缺失的参考。

# Illustrative monthly observations, January through December twice.
values = [10, 12, 15, 18, 20, 22, 21, 19, 17, 14, 12, 11]
values += [value + 2 for value in values]
period = 12
actual = values[period:]
predicted = values[:-period]
mae = sum(abs(a - p) for a, p in zip(actual, predicted)) / len(actual)
print(predicted[:3])
print(mae)
# Expected illustrative output:
# [10, 12, 15]
# 2.0

用原始单位解释错误

这里每个预测都偏离两个单位,所以说明性均方绝对误差为 2.0。这段算术仅描述了所提供的玩具数据。它对看不见的真实系列或两个单位是否可接受一无所知。

在相同的目标日期和相同的单位上评估您的模型。按季节以及总体比较错误:平均值可能会掩藏关键月份的重复失败。记录因缺失有效目标或滞后参考而被排除的观测值。

将过去与未来分开

随机的 train/test 拆分可能会将未来观测值放入训练集,而较早的日期出现在评估中。对于预测,使用时间顺序评估。在每个起点,使用仅在该起点可用的信息构建特征并拟合任何预处理。

TimeSeriesSplit 默认提供后续时间有序的训练和测试窗口,训练集不断增长。其可比较的持续时间假设观测值等间距。选择 test_size 和任何间隔以匹配任务;库不会为您确定业务预测horizon。

区分单步和多步预测

在滚动评估中,一个在一个起点不可用的值可能在下一个起点之前已知。一次性发布多个未来月份的预测具有不同的信息集。不要把多步预测当作每个中间实际值已经到达来评估。

只有在相关起点已知被引用的观测值时,季节性滞后才可用。对于超过一个季节周期的horizon,某些直接滞后引用指向预测区间,并需要定义的策略。在比较错误之前陈述该策略,而不是在看到目标后再选择策略。

检查基线成功或失败的原因

水平变化、趋势、节日移动或业务流程改变可能会使去年成为一个糟糕的预测器。检查有日期标记的残差和已知事件。在不寻常的窗口击败基线是较弱的证据,不如在多个代表性的后来的窗口中改进。

在基线表现不佳时,与 last-observation 或其他简单基线进行比较。保持相同的评估日期。避免在最终保留期间对许多模型进行调优,直到它实际上变成另一个训练集为止。

决定额外模型是否有用

当模型在相关错误度量上在后来的数据上足以改进以证明其维护和运营成本时,更复杂的模型就是有用的。指定什么很重要:典型绝对错误、大错、特定季节或高估与低估的成本。

部署后保留基线作为参考。数据过程的变化可能会使 earlier advantage 消失。监控可比较的错误支持具体决定在不发明性能保证的情况下保留、修订或简化模型。

检查清单

  • Confirm a regular time index and a justified seasonal period.
  • Use only observations known at each forecast origin.
  • Score model and baseline on identical later targets.
  • State the forecast horizon and missing-data policy.

A seasonal baseline needs earlier matching observations and sufficiently stable repetition. It does not establish causal relationships, guarantee accuracy or automatically handle structural breaks, irregular timestamps or multi-step horizons.

参考来源

  1. pandas: time series ↗
  2. scikit-learn: TimeSeriesSplit ↗
返回顶部 ↑