我的数据集中有大约 23300 个每小时的数据点,我尝试使用 Facebook Prophet 进行预测。 要微调超参数,可以使用交叉验证:
from fbprophet.diagnostics import cross_validation
整个过程如下: https://facebook.github.io/prophet/docs/diagnostics.html
使用cross_validation
需要指定initial
、period
和horizon
:
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
是第一个训练期。这是最低限度 开始训练所需的数据量。horizon
是您要评估预测的时间长度 超过。假设一家零售店正在建立他们的模型 他们可以预测下个月的销售额。地平线设置为 30 days 在这里是有意义的,所以他们正在评估他们的模型 在他们希望使用它的相同参数设置上。period
是每次折叠之间的时间量。它可以是 大于或小于地平线,甚至等于地平线。cutoffs
是每个地平线开始的日期。
您可以通过查看此图像来理解这些术语 -
学分:预测时间 系列数据与 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/