迁移学习
迁移学习是指在大型数据集上预训练一个灵活的模型,然后几乎无需或只需少量额外训练即可将其用于其他数据的过程。它是机器学习 🧠 中最杰出的 🚀 成就之一,具有许多实际应用。
对于时间序列预测,这项技术可以让你获得闪电般快速的预测 ⚡,绕过精度和速度之间的权衡(对于类似的精度,比我们已有的快速 autoARIMA 快 30 多倍)。
本 notebook 演示了如何生成预训练模型并将其存储在检查点中,以便能够预测模型从未见过的新时间序列。
目录
1. 安装 NeuralForecast/DatasetsForecast
2. 加载 M4 数据
3. 实例化 NeuralForecast 核心,拟合并保存
4. 加载预训练模型并对 AirPassengers 进行预测
5. 评估结果
你可以使用 Google Colab 通过 GPU 运行这些实验。
1. 安装库
如果可用,此示例将自动在 GPU 上运行。确保 cuda 可用。(如果您需要将此投入生产的帮助,请发送电子邮件给我们或加入我们的社区,我们还提供完全托管的解决方案)
2. 加载 M4 数据
M4
类将自动下载完整的 M4 数据集并进行处理。
它返回三个 Dataframe:Y_df
包含目标变量的值,X_df
包含外部日历特征,S_df
包含每个时间序列的静态特征(M4 没有)。对于此示例,我们将只使用 Y_df
。
如果您想使用自己的数据,只需替换 Y_df
。请务必使用长格式,并且结构与我们的数据集相似。
unique_id | ds | y | |
---|---|---|---|
0 | M1 | 1970-01-01 00:00:00.000000001 | 8000.0 |
1 | M1 | 1970-01-01 00:00:00.000000002 | 8350.0 |
2 | M1 | 1970-01-01 00:00:00.000000003 | 8570.0 |
3 | M1 | 1970-01-01 00:00:00.000000004 | 7700.0 |
4 | M1 | 1970-01-01 00:00:00.000000005 | 7080.0 |
… | … | … | … |
11246406 | M9999 | 1970-01-01 00:00:00.000000083 | 4200.0 |
11246407 | M9999 | 1970-01-01 00:00:00.000000084 | 4300.0 |
11246408 | M9999 | 1970-01-01 00:00:00.000000085 | 3800.0 |
11246409 | M9999 | 1970-01-01 00:00:00.000000086 | 4400.0 |
11246410 | M9999 | 1970-01-01 00:00:00.000000087 | 4300.0 |
3. 模型训练和保存
使用 NeuralForecast.fit
方法,您可以训练一组模型以适应您的数据集。您只需定义模型的 input_size
和 horizon
。input_size
是模型将用于学习预测未来 h
步的历史观测值(滞后项)的数量。此外,您还可以修改模型的超参数以获得更好的精度。
使用 core.NeuralForecast.save
方法保存模型。此方法使用 PytorchLightning 的 save_checkpoint
函数。我们将 save_dataset
设置为 False
以仅保存模型。
4. 将 M4 迁移到 AirPassengers
我们使用 core.NeuralForecast.load
方法加载存储的模型,并使用 core.NeuralForecast.predict
函数预测 AirPassenger
。
unique_id | ds | NHITS | |
---|---|---|---|
0 | 1.0 | 1960-01-31 | 422.038757 |
1 | 1.0 | 1960-02-29 | 424.678040 |
2 | 1.0 | 1960-03-31 | 439.538879 |
3 | 1.0 | 1960-04-30 | 447.967072 |
4 | 1.0 | 1960-05-31 | 470.603333 |
5. 评估结果
我们使用平均绝对误差 (mae
) 评估预训练模型的预测结果。