Sklearn 的 TimeSeriesSplit是实现相当于 kfold 交叉验证的时间序列的有用方法。然而,它似乎只支持单步地平线,不支持多步地平线,例如它来自 [1, 2, 3, 4]
数据集,可用于分别创建以下训练集和测试集
[1, 2], [3]
[1, 2, 3], [4]
[1, 2, 3, 4], [5].
无法产生具有多步预测范围的东西。多步时间序列分割预测范围看起来像
[1, 2,], [3, 4]
[1, 2, 3], [4, 5]
[1, 2, 3, 4], [5, 6],
例如。
我想知道这是否有充分的理由?我能够实现我自己的 TimeSeriesSplit 版本,这样这不是问题,但是我是预测领域的新手。据我了解,使用这样的程序是统计上衡量模型准确性的最佳方法。我发现很好奇sklearn没有提供开箱即用的功能,并且想知道是否有原因以及我是否忽略了为什么具有如上所示的多步骤预测范围意味着我的方法的任何原因统计准确性评价的标准应该改变吗?
最佳答案
这是有原因的,但这不是一个“好的”原因。大多数已建立的预测方法都会在一步前进误差上训练模型,因为对于多步预测,它们将进行递归预测,而不是以任何方式进行直接预测(即,对于大多数预测方法来说,多时间序列分割是没有用的) )。
我怀疑这就是 sklearn 作者不打扰的原因。
如果您想使用 R 而不是 Python,tsCV() 函数会执行以下类型的时间序列分割:
[1, 2,], [4]
[1, 2, 3], [5]
[1, 2, 3, 4], [6]
但是,tsCV 并不返回时间序列分割本身,而是以时间序列 + 预测模型作为输入,并返回基于 CV 的误差矩阵。
我不知道它是否完全按照您想要的方式进行。
关于python - sklearn 的 TimeSeriesSplit 仅支持单步预测范围是否有原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53097277/