简介
使用 HierarchialForecast
进行层级预测简介
您可以使用 Google Colab 通过 CPU 或 GPU 运行这些实验。
1. 层级时间序列
在许多应用中,一组时间序列是按层级组织的。例如,地理层级、产品或类别可以定义不同类型的聚合。
在这种情况下,通常要求预测者为所有分解和聚合系列提供预测。一个很自然的愿望是这些预测应该是“一致的”,即底层序列的预测值精确相加等于聚合序列的预测值。
上图显示了一个简单的层级结构,其中我们有四个底层序列、两个中间层序列和代表总聚合的顶层。其层级聚合或一致性约束如下:
]⊺幸运的是,这些约束可以用以下矩阵紧凑地表示
其中 将底层序列聚合到上层,而 是单位矩阵。层级序列的表示形式如下:
为了可视化一个示例,在图 2 中,可以将层级时间序列结构中的层级视为代表不同的地理聚合。例如,在图 2 中,顶层是一个国家内序列的总聚合,中间层是其州,底层是其区域。
2. 层级预测
为了实现“一致性”,大多数针对层级预测挑战的统计解决方案都采用了两阶段的预测修正过程。
-
首先,我们获得一组基础预测
-
然后,我们将它们修正为一致的预测 。
大多数层级预测修正方法可以通过以下变换来表示
HierarchicalForecast 库提供了一系列 Python 预测修正方法、数据集、评估和可视化工具。其可用的预测修正方法包括 BottomUp
、TopDown
、MiddleOut
、MinTrace
、ERM
。其概率一致性方法包括 Normality
、Bootstrap
、PERMBU
。
3. 最小示例
数据处理
我们将创建一个合成数据集,以说明图 1 所示的层级时间序列结构。
我们将创建一个包含四个底层序列的两层结构,其中序列的聚合关系显而易见。
ds | 顶层 | 中间层 | 底层 | y | |
---|---|---|---|---|---|
0 | 2000-01-01 | 澳大利亚 | 州 1 | r1 | 10 |
1 | 2000-02-01 | 澳大利亚 | 州 1 | r1 | 20 |
8 | 2000-01-01 | 澳大利亚 | 州 1 | r2 | 10 |
9 | 2000-02-01 | 澳大利亚 | 州 1 | r2 | 20 |
16 | 2000-01-01 | 澳大利亚 | 州 2 | r3 | 100 |
17 | 2000-02-01 | 澳大利亚 | 州 2 | r3 | 200 |
24 | 2000-01-01 | 澳大利亚 | 州 2 | r4 | 100 |
25 | 2000-02-01 | 澳大利亚 | 州 2 | r4 | 200 |
之前介绍的层级序列 被捕获在 Y_hier_df
数据框中。
聚合约束矩阵 被捕获在 S_df
数据框中。
最后,tags
包含 Y_hier_df
中的一个列表,用于构成每个层级,例如 tags['top_level']
包含 Australia
的聚合序列索引。
唯一ID | ds | y | |
---|---|---|---|
0 | 澳大利亚 | 2000-01-01 | 220 |
1 | 澳大利亚 | 2000-02-01 | 440 |
8 | 澳大利亚/州1 | 2000-01-01 | 20 |
9 | 澳大利亚/州1 | 2000-02-01 | 40 |
16 | 澳大利亚/州2 | 2000-01-01 | 200 |
17 | 澳大利亚/州2 | 2000-02-01 | 400 |
24 | 澳大利亚/州1/r1 | 2000-01-01 | 10 |
25 | 澳大利亚/州1/r1 | 2000-02-01 | 20 |
32 | 澳大利亚/州1/r2 | 2000-01-01 | 10 |
33 | 澳大利亚/州1/r2 | 2000-02-01 | 20 |
40 | 澳大利亚/州2/r3 | 2000-01-01 | 100 |
41 | 澳大利亚/州2/r3 | 2000-02-01 | 200 |
48 | 澳大利亚/州2/r4 | 2000-01-01 | 100 |
49 | 澳大利亚/州2/r4 | 2000-02-01 | 200 |
唯一ID | 澳大利亚/州1/r1 | 澳大利亚/州1/r2 | 澳大利亚/州2/r3 | 澳大利亚/州2/r4 | |
---|---|---|---|---|---|
0 | 澳大利亚 | 1.0 | 1.0 | 1.0 | 1.0 |
1 | 澳大利亚/州1 | 1.0 | 1.0 | 0.0 | 0.0 |
2 | 澳大利亚/州2 | 0.0 | 0.0 | 1.0 | 1.0 |
3 | 澳大利亚/州1/r1 | 1.0 | 0.0 | 0.0 | 0.0 |
4 | 澳大利亚/州1/r2 | 0.0 | 1.0 | 0.0 | 0.0 |
5 | 澳大利亚/州2/r3 | 0.0 | 0.0 | 1.0 | 0.0 |
6 | 澳大利亚/州2/r4 | 0.0 | 0.0 | 0.0 | 1.0 |
基础预测
接下来,我们使用 naive
模型计算每个时间序列的基础预测。请注意,Y_hat_df
包含预测结果,但它们并不一致。
预测修正
唯一ID | ds | 朴素法 | 朴素法/自下而上 | |
---|---|---|---|---|
0 | 澳大利亚 | 2000-05-01 | 880.0 | 880.0 |
1 | 澳大利亚 | 2000-06-01 | 880.0 | 880.0 |
4 | 澳大利亚/州1 | 2000-05-01 | 80.0 | 80.0 |
5 | 澳大利亚/州1 | 2000-06-01 | 80.0 | 80.0 |
8 | 澳大利亚/州2 | 2000-05-01 | 800.0 | 800.0 |
9 | 澳大利亚/州2 | 2000-06-01 | 800.0 | 800.0 |
12 | 澳大利亚/州1/r1 | 2000-05-01 | 40.0 | 40.0 |
13 | 澳大利亚/州1/r1 | 2000-06-01 | 40.0 | 40.0 |
16 | 澳大利亚/州1/r2 | 2000-05-01 | 40.0 | 40.0 |
17 | 澳大利亚/州1/r2 | 2000-06-01 | 40.0 | 40.0 |
20 | 澳大利亚/州2/r3 | 2000-05-01 | 400.0 | 400.0 |
21 | 澳大利亚/州2/r3 | 2000-06-01 | 400.0 | 400.0 |
24 | 澳大利亚/州2/r4 | 2000-05-01 | 400.0 | 400.0 |
25 | 澳大利亚/州2/r4 | 2000-06-01 | 400.0 | 400.0 |
参考文献
- Hyndman, R.J., & Athanasopoulos, G. (2021). “Forecasting: principles and practice, 3rd edition: Chapter 11: Forecasting hierarchical and grouped series.”. OTexts: Melbourne, Australia. OTexts.com/fpp3 Accessed on July 2022.
- Orcutt, G.H., Watts, H.W., & Edwards, J.B.(1968). Data aggregation and information loss. The American Economic Review, 58 , 773(787).
- Disaggregation methods to expedite product line forecasting. Journal of Forecasting, 9 , 233–254. doi:10.1002/for.3980090304.
- Wickramasuriya, S. L., Athanasopoulos, G., & Hyndman, R. J. (2019). “Optimal forecast reconciliation for hierarchical and grouped time series through trace minimization”. Journal of the American Statistical Association, 114 , 804–819. doi:10.1080/01621459.2018.1448825.
- Ben Taieb, S., & Koo, B. (2019). Regularized regression for hierarchical forecasting without unbiasedness conditions. In Proceedings of the 25th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining KDD ’19 (p. 1337(1347). New York, NY, USA: Association for Computing Machinery.