交叉验证是帮助机器学习模型选择最优超参数的有用程序。它对于较小的数据集特别有用,因为这些数据集没有足够的数据来创建具有代表性的训练集、验证集和测试集。
简单地说,交叉验证将单个训练数据集拆分为训练和测试数据集的多个子集。
最简单的形式是k-fold交叉验证,它将训练集拆分为k个较小的集合。对于每个分割,使用k-1个集合的训练数据训练模型。然后使用剩余数据对模型进行验证。然后,对于每一次拆分,模型都会在剩余集合上打分。分数是各部分的平均值。
然而,这种超参数调整方法不适用于时间序列预测!
下图说明了为什么标准k折交叉验证(以及其他非时间数据分割)不适用于时间序列机器学习。该图显示了分为五个窗口的单变量序列,并指示序列中的哪些日期指定给哪个折。

-
预测/测试数据出现在训练数据之前。在0号窗口中,测试数据出现在训练数据之前!
-
数据泄漏。在窗口2–4中,某些训练数据出现在测试数据之后。这是有问题的,因为模型能够预见“未来”。
-
一序列的空白。在窗口2–4中,由于测试数据取自序列的中间部分,因此训练序列中存在差距。
本文主要介绍sktime提供的类“窗口拆分器”如何实现序列数据交叉验证。
有关使用sktime进行预测的更多详细信息,包括模型选择和调整,请参阅此处的sktime预测教程:https://www.sktime.org/en/latest/examples/01_forecasting.html
内容中包含的图片若涉及版权问题,请及时与我们联系删除
评论
沙发等你来抢