我什么时候应该使用验证而不是交叉验证

机器算法验证 机器学习 交叉验证 模型选择 验证 样本外
2022-03-15 10:20:05

我知道 CV 的诞生是在缺乏训练数据时验证模型的一种方式,但我的理解是,交叉验证通常比只使用一个验证集更好,因为这提供了更公正的模型选择步骤由于验证数据的选择过程,减少了模型结果的随机性。

除了增加计算费用之外,与正常验证相比,交叉验证还有其他缺点吗?可以肯定地说,如果计算复杂性不是问题,那么交叉验证总是比仅仅使用普通验证更好吗?

2个回答

在缺乏训练数据的情况下,交叉验证作为一种替代方法是一种轻描淡写的说法。除非您的样本量非常大,否则不同随机拆分的验证性能可能会有很大差异。

交叉验证受此影响较小,因为它考虑了多重折叠的结果。更好的是对多次交叉验证进行平均,每次都有不同的随机分成k折叠。

您认为的普通验证实际上只是单折交叉验证。您可能有意使用的示例k=1多次折叠包括:

  • 你买不起k>1计算;
  • 例如,您拥有数百万条记录,并且可以自信地随机拆分数据;
  • 您正在执行外部验证,并希望证明您的模型在模型从未见过的源数据上仍然表现良好。

在后者的情况下,如果您包含来自多个培训来源的数据(例如来自不同机构、研究或数据库的数据),您的模型可能会更好地概括。但是,如果您使用所有来源进行训练,您仍然无法真正估计新来源的性能。

CV 的另一个缺点(除了Frans Rodenburg 的出色答案中的那些)是样本之间存在依赖关系时,例如在时间序列中。在这种情况下,您可以拆分为 train/valid,这样没有训练数据依赖于任何验证数据。(例如,在时间序列的情况下,您的验证数据具有较晚的时间戳。)