交叉验证技术中基于时间的拆分是什么意思?

what is meant by time based spliting in cross validation techniques?

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

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

正常交叉验证

您有一组数据点:

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

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

例如:

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

但是,这假设没有必要保持数据点的 o顺序。 您可以使用 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