努力理解fbprophet库中交叉验证函数的参数

ge0*_*rge 4 machine-learning prediction python-3.x cross-validation facebook-prophet

基本上我有 780 个(每天)观察,我想从中训练 80% 的数据,剩下的 20% 用于交叉验证。因此我明白我将使用:

df_cv = cross_validation(m, initial='624 days', horizon='156 days')
Run Code Online (Sandbox Code Playgroud)

其中初始日期对应于我想训练和观察我想用于交叉验证的剩余观察值的第一个观察值。

我想我没有正确应用它,因为它似乎是一个截止日期,我真的不明白这是为了什么。

我怎样才能实现我的目标,即使用最初的 80% 的观察来训练数据,最后 20% 进行交叉验证?

先感谢您

Don*_*d S 8

截止日期用于确定第一次验证迭代时训练数据集中的内容(截止前)以及将预测的内容(截止后)。如果您想使用 80% 作为训练数据,并且想要进行交叉验证,则不能将水平值设置为数据的 20%,因为这样只能进行一次验证。您将需要一个较小的数字来用于范围,因为它决定了您每次迭代预测的天数。对于每个有序的验证迭代,FBProphet 将在截止点和截止点 + 范围之间进行预测,然后添加周期以获得下一个截止点。下面是一个例子:

800 天总数据集
初始 = 624 == 训练数据集
范围的大小 = 20 == 预测
周期的大小= 10(默认 = 范围的 1/2)== 截止日期之间的间距作为增量

第一次迭代:训练 1-624,预测 625-644
第二次迭代:训练 11-634,预测 635-654
第三次迭代:训练 21-644,预测 645-664

所以最后 20% 可以用于不同时间范围的交叉验证