这是完全可能的,而且也是将过去的标签列作为特征包含在内的良好实践,但这取决于你的问题:你想解释一下标签吗only with other功能(故意),或者您想考虑other和你的过去的标签列获得预测的下一个标签,作为一种在不使用时间序列的情况下向模型添加时间序列字符的方式?
时间顺序并不重要,只要在转到预测集时所有此类每月列在时间上一致地移动相同的时间即可。模型并不关心是否只是同一列类型的一月和二月,对于模型来说,每个特征都是孤立的。
示例:您可以在各种特征上完美运行随机森林模型,包括它们过去的标签列,这些标签列一次又一次重复相同的列类型,仅代表不同的月份。任何月份的列都可以作为机器学习模型中的独立新特征来处理,唯一的重要性是将所有这些每月列移动完全相同的周期以达到一致的预测集。换句话说,当您从一月至六月的训练集转换为二月至七月的预测集时,显然您应该避免用三月列替换一月,当然,您必须用二月替换一月。
更新202301:模型名称为“walk-forward”
此模型设置称为“向前行走”,请参阅为什么过时验证没有变得更加普遍? https://towardsdatascience.com/why-isnt-out-of-time-validation-more-ubiquitous-7397098c4ab6--> 选项 3 几乎在页面底部。
我从评论中得到这个将时间序列数据拆分为训练/测试/验证集 https://stats.stackexchange.com/a/346958/287262.
下面仅显示训练集和测试集。它写的是“验证集”,但众所周知,这会到处混淆,请参阅测试数据集和验证数据集有什么区别? https://machinelearningmastery.com/difference-test-validation-datasets/,并且它必须是默认理解中的测试集。
因此,用正确的措辞来说,它是:
这应该是及时成为特征的标签的最佳模型。
“前进”模型中的验证集?
正如您在模型中看到的,由于测试数据不需要验证集must在时间上“向前”有偏差,这就是预测“时间上的一步”的整个想法,并且任何验证集都必须处于相同的有偏差的人工未来中 - 这在训练时已经是过去了,但是模型不知道这一点。
默认情况下,验证会在前进过程中进行,无需进行所需的数据集分割,此时模型一次又一次地学习以预测未来,并且输出指标可以相互比较。由于该模型是为了预测有时间偏差的未来,因此无需证明这一点或人造未来如何有偏差以及“被时间过度训练”。该模型的目的是在人工未来中进行验证并预测真实的未来仅作为最后一步。
但是,为什么不在这之上仍然有一个验证集,至少如果它只是一个小的 k 倍验证呢?如果测试集在较小的时间窗口内发生了一些强烈的变化,但这些变化仍然需要预测或至少暗示,但也不应该在每个训练步骤中过度训练,那么它就可以发挥作用。验证集将达到其中一些时间窗口,并可能显示模型是否能够足够好地处理它们。除 k 倍之外的任何其他方法都会过多地缩小模型的功效。在训练过程中从测试集中获取的信息越多,它对未来的预测就越少。
Wrap up:
尝试一下,如有疑问,请将验证放在一边,并在“前进”期间通过检查模型随时间的指标来判断模型。该模型与其他模型不同。
因此,最终,您可以(但不必)从测试集中拆分 k 折验证。那看起来像:
在预测了许多已知的未来之后,时间的最后一步就是对未知未来的预测。
这也回答了.