试图理解 FB Prophet 交叉验证
Trying to Understand FB Prophet Cross Validation
我有一个包含 84 个月销售额(从 01/2013 到 12/2019)的数据集 - 只是几个月,而不是几天。
Month 01 | Sale 1
Month 02 | Sale 2
Month 03 | Sale 3
.... | ...
Month 84 | Sale 84
通过可视化,模型看起来非常适合...但我需要检查它....
所以我的理解是 cross val 不支持月份,所以我所做的是转换为使用天数(尽管我的原始 df 中没有日期信息)...
我想在前五年(60 个月)中尝试我的模型,并在剩下的 2 年(24 个月)中测试模型的预测效果....
所以我做了类似的事情:
cv_results = cross_validation( model = prophet, initial='1825 days', period='30 days', horizon = '60 days')
这有意义吗?
我没有得到截止日期和预测期的概念
我也为此苦苦挣扎了一段时间。但这是它的工作原理。初始模型将根据前 1,825 天的数据进行训练。它将预测接下来 60 天的数据(因为 horizon 设置为 60)。然后,该模型将在初始期间 + 期间(在本例中为 1,825 + 30 天)进行训练,并预测接下来的 60 天。它将继续这样,在训练数据中再添加 30 天,然后预测接下来的 60 天,直到没有足够的数据来执行此操作。
总而言之,period 是在 cross-validation 的每次迭代中向训练数据集添加多少数据,而 horizon 是它将预测多远。
设置如下:
- 数据点总数为700天
- 初始为365天
- 周期为10天
- 还有 20 天
在第 1 次迭代中,它将在第 1-365 天进行训练,并在第 366 到 385 天进行预测。
在第 2 次迭代中,它将在第 11-375 天进行训练,并在第 376 到 395 天进行预测,依此类推
我有一个包含 84 个月销售额(从 01/2013 到 12/2019)的数据集 - 只是几个月,而不是几天。
Month 01 | Sale 1
Month 02 | Sale 2
Month 03 | Sale 3
.... | ...
Month 84 | Sale 84
通过可视化,模型看起来非常适合...但我需要检查它....
所以我的理解是 cross val 不支持月份,所以我所做的是转换为使用天数(尽管我的原始 df 中没有日期信息)...
我想在前五年(60 个月)中尝试我的模型,并在剩下的 2 年(24 个月)中测试模型的预测效果....
所以我做了类似的事情:
cv_results = cross_validation( model = prophet, initial='1825 days', period='30 days', horizon = '60 days')
这有意义吗?
我没有得到截止日期和预测期的概念
我也为此苦苦挣扎了一段时间。但这是它的工作原理。初始模型将根据前 1,825 天的数据进行训练。它将预测接下来 60 天的数据(因为 horizon 设置为 60)。然后,该模型将在初始期间 + 期间(在本例中为 1,825 + 30 天)进行训练,并预测接下来的 60 天。它将继续这样,在训练数据中再添加 30 天,然后预测接下来的 60 天,直到没有足够的数据来执行此操作。
总而言之,period 是在 cross-validation 的每次迭代中向训练数据集添加多少数据,而 horizon 是它将预测多远。
设置如下:
- 数据点总数为700天
- 初始为365天
- 周期为10天
- 还有 20 天
在第 1 次迭代中,它将在第 1-365 天进行训练,并在第 366 到 385 天进行预测。 在第 2 次迭代中,它将在第 11-375 天进行训练,并在第 376 到 395 天进行预测,依此类推