fbprophet 交叉验证的工作原理

数据挖掘 时间序列 交叉验证 预测
2021-09-20 12:08:39

我面临一些问题,以了解 cross_validation 函数在 fbprophet 包中的工作原理。

我有一个 68 天(仅工作日)的时间序列,按 15 分钟和某个指标分组:

00:00 5 00:15 2 00:30 10 等 23:45 26

而且我真的不知道如何设置我的 cross_validation 功能。

我知道初始参数是训练数据,但是 period 和 horizo​​n 是什么?

我有 6528 行,我想预测第二天所以我的月经是 96?因为一天 = 15 分钟的 96 步。

请您解释一下我必须如何填写周期和水平参数。Facebook Prophet 的官方文档不是很懂。

非常感谢。

1个回答

想想你将如何自己验证模型。你可以在过去的数据上训练它,在现在之前停止,然后让模型预测你已经有数据的时期。这样您就可以检查它的准确性(通过肉眼或使用错误指标,如 MAE、MAPE、RMSE 等),并进行相应调整。

cross_validation只是自动化这个过程。您提供的第一个参数是您的训练模型m(不是数据)。然后,您还给出了预测范围- 您想要预测的频率(在您的情况下'15min',假设 Python)。然后,您可以给出一个初始值(在开始测试之前训练多长时间)和一个周期(停止并进行预测的频率)。如果你不给它们,Prophet 将分配默认值 initial = 3 * horizo​​n,并且每半个 Horizo​​n 就截断一次。然后,您将进行一系列长时间的验证,每次都预测并计算错误(为此,您可以使用其他fbprophet.diagnostics工具performance_metrics)。这有点类似于非时间序列机器学习中的 k 折交叉验证。

这方面的文档实际上非常好。另请参阅此博客文章以获取 Python 示例。