python - sklearn 的 TimeSeriesSplit 仅支持单步预测范围是否有原因?

标签 python scikit-learn time-series forecasting forecast

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/

相关文章:

python - 根据缺失条件在 Pandas 中创建代理行

python - 多个时间轴的通用分辨率

r - 为缺失数据插入行并进行插值

python - 生成在 PostgreSQL 表索引中运行良好的自然主键值的图像哈希算法?

Python参数不带$符号,如何实现?

python - Sklearn LogisticRegressionCV 的类似数组的输入

python - 当我尝试将 scikit-learn 模型与 1 个以上的功能相匹配时,出现此错误 "ValueError: Found input variables with inconsistent numbers of samples"

python - Python 中不常见功能级别的一种热门编码

python - 如何计算 pandas 中事件之间的时间

python - pygame运行一段时间后不断崩溃