将时间序列数据拆分为训练/测试/验证集

机器算法验证 时间序列 交叉验证 验证
2022-02-03 05:43:28

将时间序列数据拆分为训练/测试/验证集的最佳方法是什么,验证集将用于超参数调整?

我们有 3 年的每日销售数据,我们的计划是使用 2015-2016 作为训练数据,然后从 2017 年的数据中随机抽取 10 周作为验证集,从 2017 年的数据中再抽取 10 周作为验证集测试集。然后,我们将在测试和验证集中的每一天向前走。

3个回答

您应该使用基于时间的拆分来避免前瞻偏差。按时间顺序训练/验证/测试。

测试集应该是数据的最新部分。您需要在生产环境中模拟一种情况,在训练模型之后,您需要评估模型创建之后的数据。因此,您用于验证和训练的随机抽样并不是一个好主意。

我认为利用时间序列数据进行训练/验证/测试/预测的最完整方法是:

在此处输入图像描述

图片是否自我解释?如果没有,请发表评论,我会添加更多文字...

您可以创建更多这样的集合,而不是只创建一组训练/验证集。

例如,第一个训练集可以是 6 个月的数据(2015 年第一学期),然后验证集是接下来的三个月(2015 年 7 月至 8 月)。第二个训练集将是第一个训练集和验证集的组合。验证集是接下来的三个月(2015 年 9 月至 10 月)。等等。

这是 K-Fold 交叉验证的一种变体,其中训练集是先前训练集和验证集的组合。