【问题标题】:Time series Python ARIMA (testing,training and forecasting past dates available in data)时间序列 Python ARIMA(测试、训练和预测数据中可用的过去日期)
【发布时间】:2017-12-07 04:25:48
【问题描述】:
我知道,将数据分为训练和测试提供了一种评估模型在处理看不见的数据时表现如何的方法。
我正在训练一个 ARIMA 模型,我有从 10 月 1 日到 11 月 22 日的每日数据。我有兴趣预测 12 月 14 日的一些指标。我是吗
- 对所有可用数据进行训练并使用 predict('2015-11-23','2015-12-14') 或
- 将数据拆分为训练和测试以获得性能指标,并使用在训练集(10 月 1 日至 11 月 7 日)上训练的模型,并进行包含测试数据以及未来日期的预测,例如预测('2015-11-8','2015-12-14')。
我希望我的问题是有道理的,如果你觉得这令人困惑,很高兴澄清。
谢谢!
【问题讨论】:
标签:
python
pandas
forecasting
【解决方案1】:
如果您使用所有数据进行训练,那么您将无法预测您对未见数据的泛化建模效果如何。这是不使用测试集的一个问题。
您将遇到的另一个问题是,除非您决定采用某种方式进行交叉验证,否则您将无法尝试不同的配置或模型超参数。
数据序列预测对于交叉验证特别棘手,但我会遵循 this post's 关于前向链接的建议。如果您有 6 周的数据,您可以按如下方式将数据拆分为折叠:
- 折叠 1:训练 [w1],测试 [w2]
- 折叠 2:训练 [w1 w2],测试 [w3]
- 折叠 3:训练 [w1 w2 w3],测试 [w4]
- 折叠 4:训练 [w1 w2 w3 w4],测试 [w5]
- 折叠 5:训练 [w1 w2 w3 w4 w5],测试 [w6]