sklearn的TimeSeriesSplit只支持单步预测范围,这是为什么?

2024-09-28 21:15:57 发布

您现在位置:Python中文网/ 问答频道 /正文

Sklearn的TimeSeriesSplit是实现时间序列等价的kfold交叉验证的有用方法。然而,它似乎只支持单步水平,而不支持多步水平,例如,它来自[1, 2, 3, 4]的数据集,它可以分别用于创建以下列车和测试集

[1, 2],       [3]
[1, 2, 3],    [4]
[1, 2, 3, 4], [5].

它不能生产的是具有多步预测范围的东西。一个多步骤的时间序列分割预测范围看起来像

^{pr2}$

例如。在

我想知道这是否有充分的理由?我能够实现我自己的TimeSeriesSplit版本,这样就不会有问题,但是我对预测领域还是新手。我的理解是,使用这样一个程序在统计学上是衡量模型准确性的最佳方法。如果我不想知道为什么我的统计方法被忽略了,那么为什么我要在这里找到一个关于预测的准确度的方法呢?在


Tags: 数据方法版本时间水平步骤序列sklearn
2条回答

我用同一个交叉验证器在一个折叠中有一个以上的样本。但在他们的例子here中,他们只有5个样本和5个折叠,因此每个样本一个。相反,here它们已经显示出每一次有多个样本。在

您的建议不符合sklearn对交叉验证器的定义,因为折叠必须是独立的。从这个意义上说,要小心——如果你使用这种私下实现的方案——你在评估中的度量值将是相关的。在

这是有原因的,但这不是一个“好”的原因。大多数已建立的预测方法都是根据一步预测误差训练模型,因为对于多步预测,它们将进行递归预测而不是任何方式的直接预测(即,对于大多数预测方法,多时间序列分割没有用)。在

我想这就是为什么sklearn的作者不费心。在

如果要使用R而不是Python,tsCV()函数将执行以下类型的时间序列拆分

[1, 2,],      [4]
[1, 2, 3],    [5]
[1, 2, 3, 4], [6]

然而,tsCV本身并不返回时间序列分割,而是以时间序列+预测模型作为输入,返回基于CV的误差矩阵。在

我不知道它到底是不是按照你想要的方式来做。在

相关问题 更多 >