概率预测
量化不确定性
概率预测是量化目标变量未来不确定性的自然解答。此任务需要对以下条件预测分布进行建模:
我们将展示如何使用 NeuralForecast
,通过结合经典的 长短期记忆网络 (LSTM) 和 神经层次插值网络 (NHITS) 以及 多分位数损失函数 (MQLoss) 来解决此任务。
在本笔记中,我们将:
1. 安装 NeuralForecast 库
2. 探索 M4 小时数据。
3. 训练 LSTM 和 NHITS 模型
4. 可视化 LSTM/NHITS 预测区间。
您可以使用 Google Colab 的 GPU 来运行这些实验。
1. 安装 NeuralForecast
实用函数
下面定义的辅助函数 plot_grid
将有助于绘制不同的时间序列和不同模型的预测。
2. 加载 M4 数据
为了测试目的,我们将使用来自 M4 竞赛的小时数据集。
在此示例中,我们将使用一部分数据以避免等待时间过长。您可以根据需要修改序列数量。
3. 模型训练
core.NeuralForecast
提供了我们 PyTorch 模型集合的高级接口。NeuralForecast
通过 models=[LSTM(...), NHITS(...)]
列表实例化,并针对预测任务进行配置。
horizon
参数控制预测提前的步数,在此示例中为提前 48 小时(2 天)。- 使用
levels=[80,90]
的MQLoss
将网络的输出专门用于 80% 和 90% 的预测区间。 max_steps=2000
控制网络训练的持续时间。
有关更多网络实例化详情,请查阅其文档。
库中的所有模型都是全局的,这意味着 Y_train_df
中的所有时间序列都会在共享优化过程中用于训练一个共享参数的单一模型。这是深度学习模型在预测文献中最常见的实践,被称为“交叉学习”。
unique_id | ds | LSTM-median | LSTM-lo-90 | LSTM-lo-80 | LSTM-hi-80 | LSTM-hi-90 | NHITS-median | NHITS-lo-90 | NHITS-lo-80 | NHITS-hi-80 | NHITS-hi-90 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | H1 | 701 | 650.919861 | 526.705933 | 551.696289 | 748.392456 | 777.889526 | 615.786743 | 582.732117 | 584.717468 | 640.011841 | 647.147034 |
1 | H1 | 702 | 547.724487 | 439.353394 | 463.725464 | 638.429626 | 663.398987 | 569.632324 | 524.486023 | 522.324402 | 578.411560 | 594.515076 |
2 | H1 | 703 | 514.851074 | 421.289917 | 443.166443 | 589.451782 | 608.560425 | 518.858887 | 503.183411 | 501.016968 | 536.081543 | 549.701050 |
3 | H1 | 704 | 485.141418 | 403.336914 | 421.090546 | 547.966492 | 567.057800 | 495.627869 | 476.579742 | 468.514069 | 498.171600 | 527.931091 |
4 | H1 | 705 | 462.695831 | 383.011108 | 399.126282 | 522.579224 | 543.981750 | 481.584534 | 468.134857 | 472.723450 | 496.198975 | 513.859985 |
4. 绘制预测结果
在此,我们通过绘制预测区间来结束分析,并验证 LSTM
和 NHITS
都取得了出色的结果。
考虑输出 [NHITS-lo-90.0
, NHITS-hi-90.0]
,它代表了 NHITS
网络的 80% 预测区间;其下限表示第 5 百分位数(或 0.05 分位数),而其上限表示第 95 百分位数(或 0.95 分位数)。对于训练良好的模型,我们期望目标值有 90% 的时间落在此区间内。
LSTM
NHITS
参考文献
- Roger Koenker 和 Gilbert Basset (1978). Regression Quantiles, Econometrica.
- Jeffrey L. Elman (1990). “Finding Structure in Time”.
- Cristian Challu, Kin G. Olivares, Boris N. Oreshkin, Federico Garza, Max Mergenthaler-Canseco, Artur Dubrawski (2021). NHITS: Neural Hierarchical Interpolation for Time Series Forecasting. 已在 AAAI 2023 接收。