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