随机重排数据点时创建交叉验证索引?

我有一个数据集,其中列对应于特征(预测变量),行对应于数据点。这些数据点是以结构化的方式提取的,即它们是有序的。我将使用Matlab中的crossvalindcvpartition来进行分层交叉验证。

如果我使用上述函数,是否还需要先随机重排数据点(行)?


回答:

这些函数会在内部对数据进行洗牌,正如你在文档中所见

Indices = crossvalind(‘Kfold’, N, K) 返回用于N个观测值的K折交叉验证的随机生成索引。Indices包含等量(或大致等量)的从1到K的整数,这些整数定义了将N个观测值划分为K个不相交子集的分区。重复调用会返回不同的随机生成分区。如果省略,K默认为5。在K折交叉验证中,使用K-1折进行训练,最后一折用于评估。这个过程重复K次,每次留下不同的折用于评估。

然而,如果你的数据在这种意义上是结构化的,即第i个对象包含关于第i+1个对象的一些信息,那么你应该考虑不同的分割方式。例如,如果你的数据实际上是(局部)时间序列,典型的随机交叉验证不是有效的估计技术。为什么?因为如果你的数据实际上包含了群集,其中知道至少一个元素的值,就有很高的概率估计出其余元素的值,那么在应用交叉验证后你最终得到的实际上是预测这些群集内部能力的估计。因此,如果在实际使用你的模型时,你期望得到一个全新的群集——你选择的模型在那里可能是完全随机的。换句话说,如果你的数据具有某种内部群集结构(或时间序列),你的分割应该覆盖这一特征,通过在群集上进行分割(因此你不是进行K个随机点的分割,而是进行K个随机群集的分割,等等)。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注