努力理解fbprophet库中交叉验证函数的参数
Struggling to understand the parameters of the cross validation function in fbprophet library
基本上我有 780 个(每日)观察值,我想从中训练 80% 的数据,其余 20% 用于交叉验证。
因此我明白我将使用 :
df_cv = cross_validation(m, initial='624 days', horizon='156 days')
其中初始日期对应于我想训练和水平观察的第一个 nº 我想用于交叉验证的剩余 nº 观察。
我想我没有正确应用它,因为它似乎是一个截止日期,我不太明白它的用途。
我如何才能实现我的目标,即使用最初 80% 的观察来训练数据,最后 20% 用于交叉验证?
提前致谢
截止日期用于确定第一次验证迭代时训练数据集中的内容(截止前)以及将预测的内容(截止后)。如果您想使用 80% 作为训练数据,并且想要进行交叉验证,则不能将 horizon 值设置为数据的 20%,因为这将只允许进行一次验证。您将需要一个较小的数字用于 horizon,因为它决定了每次迭代预测的天数。对于每个有序的验证迭代,FBProphet 将在截止点和截止点 + horizon 之间进行预测,然后添加周期以获得下一个截止点。这是一个例子:
800 天总数据集
initial = 624 == 训练数据集的大小
horizon = 20 == 要预测的尺寸
period = 10(默认 = horizon 的 1/2)== 截止日期之间的间隔为增量
第 1 次迭代:训练 1-624,预测 625-644
第二次迭代:训练 11-634,预测 635-654
第三次迭代:训练 21-644,预测 645-664
因此最后的 20% 可用于不同时间范围的交叉验证
基本上我有 780 个(每日)观察值,我想从中训练 80% 的数据,其余 20% 用于交叉验证。 因此我明白我将使用 :
df_cv = cross_validation(m, initial='624 days', horizon='156 days')
其中初始日期对应于我想训练和水平观察的第一个 nº 我想用于交叉验证的剩余 nº 观察。
我想我没有正确应用它,因为它似乎是一个截止日期,我不太明白它的用途。
我如何才能实现我的目标,即使用最初 80% 的观察来训练数据,最后 20% 用于交叉验证?
提前致谢
截止日期用于确定第一次验证迭代时训练数据集中的内容(截止前)以及将预测的内容(截止后)。如果您想使用 80% 作为训练数据,并且想要进行交叉验证,则不能将 horizon 值设置为数据的 20%,因为这将只允许进行一次验证。您将需要一个较小的数字用于 horizon,因为它决定了每次迭代预测的天数。对于每个有序的验证迭代,FBProphet 将在截止点和截止点 + horizon 之间进行预测,然后添加周期以获得下一个截止点。这是一个例子:
800 天总数据集
initial = 624 == 训练数据集的大小
horizon = 20 == 要预测的尺寸
period = 10(默认 = horizon 的 1/2)== 截止日期之间的间隔为增量
第 1 次迭代:训练 1-624,预测 625-644
第二次迭代:训练 11-634,预测 635-654
第三次迭代:训练 21-644,预测 645-664
因此最后的 20% 可用于不同时间范围的交叉验证