实验
使用 ETS 和 ray 进行大规模预测 (M5)
预测 M5 数据集
在本 Notebook 中,我们将展示如何使用 StatsForecast
和 ray
在不到 6 分钟内预测数千个时间序列(M5 数据集)。此外,我们还将展示 StatsForecast
在时间性能和准确性方面优于使用 DataBricks 在 Spark 集群上运行的 Prophet
。
在此示例中,我们使用了由 11 个 m5.2xlarge 类型(8 核,32 GB RAM)实例组成的 ray 集群 (AWS)。
安装 StatsForecast 库
下载数据
该示例使用 M5 数据集。它包含 30,490
个底部时间序列。
unique_id | ds | y | |
---|---|---|---|
0 | FOODS_1_001_CA_1 | 2011-01-29 | 3.0 |
1 | FOODS_1_001_CA_1 | 2011-01-30 | 0.0 |
2 | FOODS_1_001_CA_1 | 2011-01-31 | 0.0 |
3 | FOODS_1_001_CA_1 | 2011-02-01 | 1.0 |
4 | FOODS_1_001_CA_1 | 2011-02-02 | 4.0 |
由于 M5 数据集包含间歇性时间序列,我们添加一个常数以避免训练阶段出现问题。稍后,我们将从预测结果中减去该常数。
训练模型
StatsForecast
接收一个模型列表来拟合每个时间序列。由于我们处理的是日数据,使用 7 作为季节性会有益。请注意,我们需要将 ray 地址传递给 ray_address
参数。
StatsForecast
和 ray
仅用时 5.48 分钟就训练了 30,490
个时间序列,而 Prophet 和 Spark 用时 18.23 分钟。
我们移除常数。
评估性能
M5 竞赛使用了加权均方根比例误差。您可以在此处找到有关该指标的详细信息。
wrmsse | |
---|---|
总计 | 0.677233 |
Level1 | 0.435558 |
Level2 | 0.522863 |
Level3 | 0.582109 |
Level4 | 0.488484 |
Level5 | 0.567825 |
Level6 | 0.587605 |
Level7 | 0.662774 |
Level8 | 0.647712 |
Level9 | 0.732107 |
Level10 | 1.013124 |
Level11 | 0.970465 |
Level12 | 0.916175 |
此外,StatsForecast
比 Prophet 更准确,因为整体 WMRSSE 为 0.68
,而 Prophet 获得的是 0.77
。