时间序列的滑动窗口验证

机器算法验证 时间序列 数据挖掘 快速矿工
2022-04-01 07:45:06

我有一个关于滑动窗口验证的广泛问题。具体来说,我正在考虑使用 Rapid Miner 使用该系列的“滞后”值和其他协变量来预测金融系列的未来值。我一直在用这个软件中的窗口运算符进行试验,并滞后值以准备建模。我感到困惑,并怀疑这是一个一般过程,而不仅仅是以 Rapid Miner 为中心的东西,因此我在这里问它,是滑动窗口训练/评估过程。

  1. 有没有人推荐学习滑动窗口过程以在时间序列上构建数据挖掘模型的资源?

  2. 特别是在构建模型时,我我理解 k 个实例用于训练模型(例如 SVM),并且该模型的性能是通过预测接下来的 m 个记录来确定的。然后,窗口向前滑动一些量,接下来的 k 个记录用于训练,并对后续的 m 个记录进行评估。这一直持续到数据结束。

我的理解正确吗?

如何构建最终模型以用于未来数据?它是否总是在最后 k 条记录上重新训练,而这些最后 k 条记录仅用于创建最终模型?

1个回答

您对滑动窗口分析的理解通常是正确的。您可能会发现将模型验证过程与实际预测分开会很有帮助。在模型验证中,您使用个实例来训练预测“向前迈出一步”的模型。确保您的每个个实例仅使用在该特定时间可用的信息。这可能很微妙,因为很容易意外地窥视未来并污染您的样本外测试。kk

例如,您可能不小心在特征选择中使用了整个时间序列历史,然后在每一步都使用这些特征来测试模型。这是作弊,会让你高估准确性。这在Elements of Statistical Learning中提到,但在滑动窗口时间序列上下文之外。

如果您的一些自变量是资产收益,也很容易意外地污染未来信息。天到天的资产回报来测试天。在这种情况下,我也污染了样本外测试。相反,我想用最多天用一个步骤进行测试t=21t=28t=21t=21t=28

当您验证了模型并对参数和特征选择感到满意后,您通常会使用所有数据进行训练并预测实际的未来。