Answers:
主要原因是k折交叉验证估算器的方差比单个保留集估算器的方差低,如果可用数据量有限,这可能非常重要。如果您有一个单一的保留集,其中90%的数据用于训练,而10%的数据用于测试,则测试集非常小,因此不同数据样本的性能估算值会有很大差异,或针对数据的不同分区来形成训练和测试集。k倍验证通过对k个不同的分区求平均值来减少这种差异,因此性能估计对数据的分区不太敏感。您可以通过重复的k倍交叉验证来走得更远,在交叉验证中,交叉验证是使用数据的不同分区来形成k个子集,
但是请注意,模型拟合过程的所有步骤(模型选择,特征选择等)必须在交叉验证过程的每一步中独立执行,否则最终的性能估计将产生偏差。
[根据评论编辑]
我认为如果使用CV结果在多个模型中进行选择会出现问题。
CV允许您使用整个数据集来训练和测试一种模型/方法,同时能够合理地了解其概括性。但是,如果要比较多个模型,我的直觉是模型比较会用CV为您提供的额外训练测试隔离级别,因此最终结果将不是对所选模型准确性的合理估计。
因此,我想如果您创建多个模型并基于其CV选择一个模型,那么您对所发现的内容会过于乐观。需要另一个验证集来查看获胜者的综合程度。
根据我的经验,主要原因通常是您没有足够的样本。
在我的领域(生物/医学样品的分类)中,有时将测试集分开放置,但通常只包含少数情况。在那种情况下,置信区间通常太宽而无用。
重复/迭代交叉验证或引导外验证的另一个优点是,您可以构建一堆“代理”模型。假定它们相等。如果不是,则模式不稳定。实际上,您可以通过比较代理模型本身或不同代理模型针对同一案例做出的预测来衡量这种不稳定性(相对于交换一些训练案例)。
Esbensen&Geladi的这篇论文很好地讨论了交叉验证的一些局限性。
您可以解决其中的大多数问题,但是重采样验证无法解决的一个重要问题是漂移,它与mbq的观点有关:
唯一的例外是时间序列和其他数据,其中对象顺序很重要
漂移意味着例如仪器的响应/真实校准随时间缓慢变化。因此,未知案例的泛化误差可能与未来未知案例的泛化误差不同。如果在验证过程中发现漂移,则会出现诸如“每天/每周/ ...重做校准”之类的说明,但这需要在训练数据之后系统地获取测试集。
(如果您按照实验计划进行实验,则可以进行“特殊”拆分,考虑到采集时间,但是通常这并不能覆盖您想要进行漂移检测所需的时间)