首页 > 解决方案 > 交叉验证技术中基于时间的分割是什么意思?

问题描述

我对数据集中的每条记录都有一个时间戳。

我听说过基于时间的吐痰,但对此一无所知。

标签: machine-learningdata-sciencecross-validation

解决方案


正常的交叉验证

您有一组数据点:

data_points = [2, 4, 5, 8, 6, 9]

然后,如果您进行 2 倍拆分,您的数据点将被随机分配到 2 个不同的组。

例如:

split_1 = [2, 5, 9]
split_2 = [3, 8, 6]

但是,这假设不需要保留数据点的顺序。您可以使用 训练模型split_1并使用 进行测试split_2

基于时间的分裂

然而,这个假设对于时间序列预测并不总是正确的。

例如,给定相同的数据点:

data_points = [2, 4, 5, 8, 6, 9]

可能是按时间安排的。

然后你可以有一个模型来预测下一个数字,它回顾 3 个时间步长。(例如,预测 之后的数字9,它将[8, 6, 9]作为输入。这意味着数据点出现的顺序很重要。因此,为了测试您的模型,您不能随机拆分数据点。它们似乎需要保留

因此,如果您进行 2 倍拆分,您可以获得以下拆分:

split_1 = [2, 4, 5, 8]
split_2 = [5, 8, 6, 9]

执行

Sklearn 有一个基于时间的交叉验证的实现:TimeSeriesSplit


推荐阅读