python - 如何使用 Facebook Prophet 选择初始、期间、范围和截止值?

标签 python hour facebook-prophet

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

from fbprophet.diagnostics import cross_validation

整个过程如下: https://facebook.github.io/prophet/docs/diagnostics.html

使用cross_validation需要指定initialperiodhorizo​​n:

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')

这些 cutoffs 是否应该像上面那样均匀分布,或者我们可以像有人喜欢的那样单独设置 cutoffs 吗?

最佳答案

  • initial 是第一个训练期。这是最低限度 开始训练所需的数据量。
  • horizo​​n 是您要评估预测的时间长度 超过。假设一家零售店正在建立他们的模型 他们可以预测下个月的销售额。地平线设置为 30 days 在这里是有意义的,所以他们正在评估他们的模型 在他们希望使用它的相同参数设置上。
  • period 是每次折叠之间的时间量。它可以是 大于或小于地平线,甚至等于地平线。
  • cutoffs 是每个地平线开始的日期。

您可以通过查看此图像来理解这些术语 -

enter image description here 学分:预测时间 系列数据与 Greg Rafferty 的 Facebook 先知

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

然后,他们会将初始训练数据设置为 2 年。他们想预测 下个月的销售,因此将时间跨度设置为 30 天。他们计划运行该模型 每个业务季度,因此将期限设置为 90 天。 也显示在上图中。

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

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

关于python - 如何使用 Facebook Prophet 选择初始、期间、范围和截止值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66278305/

相关文章:

php - 如何获得小时和最近的小时?

pandas - Facebook NeuralProphet - 生成模型文件

python - 使用Python从html文件中提取字符串(beautifulsoup?)

python - 如何将 Pandas 数据框中的字符串值替换为整数?

python - 使用cv2.HoughLines()的效果是错误的

python - 根据内部子元素过滤父 <div> 元素 [Python]

swift 中的 DatePicker 问题

php - 添加 24 小时投票系统时遇到问题?

python-3.x - Python fbprophet - 每年从 plot_components() 导出值

pandas - Facebook-Prophet 每月数据交叉验证 - 解决方法 : Pandas timedelta does not support Month and Years