除了计算能力的考虑之外,是否有任何理由相信增加交叉验证中的折叠数会导致更好的模型选择/验证(即折叠数越高越好)?
将论证推向极端,留一法交叉验证是否必然会导致比-折叠交叉验证?
关于这个问题的一些背景知识:我正在处理一个实例很少的问题(例如 10 个正例和 10 个负例),并且担心我的模型可能无法很好地概括/会在如此少的数据下过度拟合。
除了计算能力的考虑之外,是否有任何理由相信增加交叉验证中的折叠数会导致更好的模型选择/验证(即折叠数越高越好)?
将论证推向极端,留一法交叉验证是否必然会导致比-折叠交叉验证?
关于这个问题的一些背景知识:我正在处理一个实例很少的问题(例如 10 个正例和 10 个负例),并且担心我的模型可能无法很好地概括/会在如此少的数据下过度拟合。
留一法交叉验证通常不会导致比 K-fold 更好的性能,并且更有可能更差,因为它具有相对较高的方差(即,不同数据样本的值变化比k 折交叉验证)。这在模型选择标准中是不好的,因为这意味着模型选择标准可以通过仅利用特定数据样本中的随机变化的方式进行优化,而不是真正提高性能,即您更有可能过度拟合模型选择标准。在实践中使用留一法交叉验证的原因是,对于许多模型,它可以作为拟合模型的副产品非常便宜地进行评估。
如果计算开销不是主要问题,则更好的方法是执行重复的 k 折交叉验证,其中每次重复 k 折交叉验证过程,将不同的随机分区分成 k 个不相交的子集。这减少了方差。
如果你只有 20 种模式,你很可能会遇到模型选择标准的过度拟合,这是统计和机器学习中一个被忽视的陷阱(无耻插入:请参阅我关于该主题的论文)。您最好选择一个相对简单的模型,尽量不要过于激进地对其进行优化,或者采用贝叶斯方法并对所有模型选择进行平均,并根据它们的合理性加权。恕我直言,优化是统计中万恶之源,因此最好不要在不必要的情况下进行优化,并在进行时谨慎优化。
另请注意,如果您要执行模型选择,如果您还需要性能估计,则需要使用嵌套交叉验证之类的东西(即,您需要将模型选择视为模型拟合过程的一个组成部分并交叉验证以及)。
我想争辩说,选择适当数量的folds 很大程度上取决于学习曲线的形状和位置,主要是由于它对偏差的影响。这一论点延伸到留一法CV,主要取自《统计学习要素》一书,第 7.10 章,第 243 页。
关于影响的讨论关于方差,请参见此处
总而言之,如果在给定的训练集大小下学习曲线有相当大的斜率,五倍或十倍的交叉验证将高估真实的预测误差。这种偏差在实践中是否是一个缺点取决于目标。另一方面,留一法交叉验证具有低偏差但可能具有高方差。
为了直观地理解这个论点,请考虑以下玩具示例,其中我们将 4 次多项式拟合到嘈杂的正弦曲线:
直观地和视觉上,我们预计该模型由于过度拟合而在小型数据集上表现不佳。这种行为反映在我们绘制的学习曲线中均方误差与训练规模以及1 个标准差。请注意,我选择在此处绘制 1 - MSE 以重现 ESL 第 243 页中使用的插图
随着训练规模增加到 50 个观察值,模型的性能显着提高。例如,将数量进一步增加到 200 只带来很小的好处。考虑以下两种情况:
如果我们的训练集有 200 个观察值,折叠交叉验证将估计训练大小为 160 的性能,这与训练集大小 200 的性能几乎相同。因此,交叉验证不会受到太大的偏差和增加的影响更大的值不会带来太多好处(左图)
但是,如果训练集有观察,折叠交叉验证将估计模型在大小为 40 的训练集上的性能,并且从学习曲线来看,这将导致有偏差的结果。因此增加在这种情况下会倾向于减少偏差。(右手情节)。
您可以在此处找到此模拟的代码。方法如下:
另一种方法是在每次迭代时不对新数据集重新采样,而是每次都重新洗牌相同的数据集。这似乎给出了类似的结果。