使用训练阶段使用的完全相同的数据集进行交叉验证是不是很好?

Posted

技术标签:

【中文标题】使用训练阶段使用的完全相同的数据集进行交叉验证是不是很好?【英文标题】:Is it good to do Cross Validation with the exact same dataset that is used in training phase?使用训练阶段使用的完全相同的数据集进行交叉验证是否很好? 【发布时间】:2016-05-09 05:14:24 【问题描述】:

我正在使用 Weka API 来测试一些算法的性能。如果我想将数据集划分如下:

70% 用于培训 10% 用于验证 20% 用于测试

对于验证阶段,我应该对 10% 划分的新鲜数据使用交叉验证方法吗?还是对已经训练过的 70% 数据应用交叉验证更好?为什么?

【问题讨论】:

【参考方案1】:

这实际上是非常具体的问题,但总的来说 - 它取决于数据集的大小。如果您有大数据集,那么即使是子样本也具有代表性,因此您可以将所有内容拆分一次以进行训练/验证/测试,然后运行典型的优化和测试例程。另一方面,如果您的数据量相当小(约 1000 个样本),那么实际上测试和验证都需要 CV(或其他技术,例如 err 0.632)。这完全是关于获得的误差估计的统计显着性。如果数据很小 - 您需要生成多个实验 (CV) 以获得合理的估计量;如果您有 100,000 个样本,那么即使 10% 也足以用作有效的误差估计量。

【讨论】:

那么,你的意思是当数据集足够大时,对不同的数据(来自训练)进行验证总是更好? 我的意思是,如果它足够大,就足够在单独的验证集上执行一次。这纯粹是基于效率的推理。简单地说,您不会通过 CV 获得明显更好的结果,而且您​​将使用 10 倍以上的计算资源。

以上是关于使用训练阶段使用的完全相同的数据集进行交叉验证是不是很好?的主要内容,如果未能解决你的问题,请参考以下文章

PyTorch+sklearn划分训练集/验证集

深度学习入门比赛——街景字符识别

深度学习入门比赛——街景字符识别

Keras训练神经网络进行分类并进行交叉验证(Cross Validation)

R:训练数据集的 k 折交叉验证

交叉验证