能源需求预测
本教程基于能源消耗预测场景,我们将对区域内能源消耗进行为期 4 天的预测。
在此,我们使用 PJM 每小时能源消耗数据集 的一个子集,重点关注区域内消耗,即电力在同一输电区域内产生和消耗。该数据集包含从 2023 年 10 月 1 日到 2024 年 9 月 30 日的每小时数据,涵盖五个代表性区域,以捕捉每小时能源需求模式。
在此实验中,我们展示了仅用几行代码,TimeGPT 就比最先进的深度学习模型(如 N-HiTS)带来了显著的改进
- TimeGPT 的 MAE 比 N-HiTS 提高了 18.6%
- TimeGPT 的 sMAPE 比 N-HiTS 提高了 31.1%
- TimeGPT 在 4.3 秒内生成了预测结果,比使用 N-HiTS 进行训练和预测快了 90%。
以下教程详细探讨了重现这些结果的所有步骤,以便您可以在自己的项目中应用 TimeGPT。
初始设置
首先,我们加载本次实验所需的包。
当然,我们需要一个 NixtlaClient
实例来使用 TimeGPT。
👍 使用 Azure AI 端点
要使用 Azure AI 端点,请记住同时设置
base_url
参数
nixtla_client = NixtlaClient(base_url="you azure ai endpoint", api_key="your api_key")
读取数据
在此,我们加载流入能源传输时间序列。
unique_id | ds | y | |
---|---|---|---|
0 | AP-AP | 2023-10-01 04:00:00+00:00 | 4042.513 |
1 | AP-AP | 2023-10-01 05:00:00+00:00 | 3850.067 |
8784 | DOM-DOM | 2023-10-01 04:00:00+00:00 | 10732.435 |
8785 | DOM-DOM | 2023-10-01 05:00:00+00:00 | 10314.211 |
17568 | JC-JC | 2023-10-01 04:00:00+00:00 | 1825.101 |
17569 | JC-JC | 2023-10-01 05:00:00+00:00 | 1729.590 |
26352 | PN-PN | 2023-10-01 04:00:00+00:00 | 1454.666 |
26353 | PN-PN | 2023-10-01 05:00:00+00:00 | 1416.688 |
35136 | RTO-RTO | 2023-10-01 04:00:00+00:00 | 69139.393 |
35137 | RTO-RTO | 2023-10-01 05:00:00+00:00 | 66207.416 |
让我们绘制我们的时间序列图,看看它是什么样子。
我们可以看到所有时间序列中都有明显的季节性模式。看看 TimeGPT 如何处理这类数据将很有趣。
使用 TimeGPT 进行预测
拆分数据
第一步是拆分我们的数据。在此,我们定义一个输入 DataFrame 以提供给模型。我们还为测试集预留了最后 96 个时间步长,以便我们可以根据实际值评估 TimeGPT 的性能。
对于这种情况,我们使用 96 个时间步长的预测范围,这代表四天,我们使用 362 天的输入序列,即 8688 个时间步长。
预测
然后,我们只需调用 forecast
方法。在此,我们使用微调,并将平均绝对误差 (MAE) 指定为微调损失。此外,我们使用 timegpt-1-long-horizon
,因为我们正在预测未来两天,并且季节性周期是一天。
📘 Azure AI 中可用的模型
如果您正在使用 Azure AI 端点,请务必设置
model="azureai"
nixtla_client.forecast(..., model="azureai")
对于公共 API,我们支持两种模型:
timegpt-1
和timegpt-1-long-horizon
。默认情况下,使用
timegpt-1
。请参阅 本教程,了解如何以及何时使用timegpt-1-long-horizon
。
TimeGPT 在 4.3 秒内完成!我们现在可以绘制预测结果与测试集实际值对比图。
评估
现在我们有了预测结果,让我们评估一下模型的性能。
我们可以看到 TimeGPT 的 MAE 为 882.6,sMAPE 为 2%。
太好了!现在,让我们看看数据特定模型是否能做得更好。
使用 N-HiTS 进行预测
在此,我们使用 N-HiTS 模型,因为它训练速度非常快,并且在长序列预测任务上表现良好。要重现这些结果,请确保安装库 neuralforecast
。
定义训练集
训练集与 TimeGPT 的输入 DataFrame 不同,因为我们需要更多数据来训练数据特定模型。
请注意,数据集非常大,因此我们使用训练集的最后 362 天数据来拟合我们的模型。
使用 N-HiTS 进行预测
我们现在可以在训练集上拟合模型并进行预测。
太好了!请注意,N-HiTS 花费了 44 秒来执行训练和预测过程。现在,让我们评估一下该模型的性能。
评估
结论
TimeGPT 的 MAE 为 882.6,而 N-HiTS 的 MAE 为 1084.7,这意味着使用 TimeGPT 比我们的数据特定 N-HiTS 模型提高了 18.6%。TimeGPT 的 sMAPE 也提高了 31.1%。
此外,TimeGPT 花费 4.3 秒生成预测,而 N-HiTS 花费 44 秒拟合和预测。因此,在此场景下,TimeGPT 比使用 N-HiTS 快 90%。