如何使用Facebook Prophet选择初始值、周期、时间跨度和截断值?

5

我的数据集中有约23300个小时级的数据点,我尝试使用Facebook Prophet进行预测。 为了微调超参数,可以使用交叉验证:

from fbprophet.diagnostics import cross_validation

整个流程如下: https://facebook.github.io/prophet/docs/diagnostics.html 使用cross_validation时需要指定initialperiodhorizon
df_cv = cross_validation(m, initial='xxx', period='xxx', horizon = 'xxx')

我现在想知道如何在我的情况下配置这三个值?如所述,我拥有大约23,300个小时数据点。我应该将其中一部分作为视野,或者正确的数据分数是否那么重要?我可以采取任何看起来合适的值吗?

此外,“cutoffs”也已按如下定义:

cutoffs = pd.to_datetime(['2013-02-15', '2013-08-15', '2014-02-15'])
df_cv2 = cross_validation(m, cutoffs=cutoffs, horizon='365 days')

这些是否应该像上面一样平均分布,还是可以根据个人喜好单独设置?

1个回答

6
  • initial是第一个训练期。这是开始训练所需的最小数据量。
  • horizon是您希望评估预测的时间长度。假设一个零售商正在构建他们的模型,以便他们可以预测未来一个月的销售额。在此处设置为30天的horizon会很有意义,因此他们可以在相同的参数设置上评估他们的模型。
  • period是每个fold之间的时间量。它可以大于horizon或小于horizon,甚至等于horizon。
  • cutoffs是每个horizon开头的日期。

您可以通过查看这张图片来了解这些术语 -

enter image description here credits: Forecasting Time Series Data with Facebook Prophet by Greg Rafferty

假设一个零售商想要一个能够预测下一个月每天销售额的模型,并且他们计划在每个季度初运行该模型。他们有3年的数据。

那么他们会将初始训练数据设置为2年。他们想要预测下一个月的销售额,因此将horizon设置为30天。他们计划每个商业季度运行一次模型,所以将period设置为90天。这也显示在上图中。

让我们将这些参数应用于我们的模型:

df_cv = cross_validation(model,
                     horizon='30 days',
                     period='90 days',
                     initial='730 days')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接