交叉验证如何克服过度拟合问题?


Answers:


23

我暂时无法想到足够明确的解释,因此我将其留给其他人;然而,交叉验证并不能完全克服模型选择中的过度拟合问题,而只是减少了交叉验证。交叉验证错误的方差可以忽略不计,尤其是在数据集较小的情况下;换句话说,根据您使用的特定数据样本,您会得到略有不同的值。这意味着,如果您在模型选择上有很多自由度(例如,从中可以选择一个小的子集的许多功能,许多要调整的超参数,许多可以选择的模型),则可以过度拟合交叉验证条件因为模型是通过利用这种随机变化的方式进行调整的,而不是真正改善性能的方式,最终您会得到一个性能不佳的模型。有关此的讨论,请参见Cawley和Talbot,“关于模型选择中的过拟合和性能评估中的后续选择偏差”,JMLR,第1卷。2010年11月,第2079−2107页

可悲的是,当数据集较小时,交叉验证最有可能使您失望,这恰恰是最需要交叉验证的时候。请注意,k折交叉验证通常比留一法交叉验证更可靠,因为它具有较低的方差,但对于某些模型而言可能更昂贵(这就是为什么LOOCV有时用于模型选择的原因,即使差异很大)。


1
我曾经有一个想法是交叉验证只是对数据应用了一个不同的(隐式)模型。您当然可以使用CV的“表兄弟”(非参数自举)(基于浓度参数为0的Dirichlet过程模型)显示此信息。
概率

有趣的主意。我的观点是(对于我感兴趣的模型)参数和超参数的分离是计算而不是逻辑的;超参数仍然是需要拟合数据的参数,并且使用交叉验证间接执行此操作并不会真正改变它。在五月的最后一篇论文中,我研究了使用训练准则来调整内核模型的通常超参数,并添加了一个附加的正则化项以避免过度拟合模型选择准则(LOOCV),并且效果很好。
迪克兰有袋博物馆,2015年

1
为什么k折CV比留一法更昂贵?我的经验(和我的直觉)则相反。由于在k倍CV中我们要进行k个测试,因此在L1O中的任何地方,我们都进行N(>> k)个测试,并且由于矩阵求逆,训练部分通常会花费更长的时间,所以L1O不是昂贵的选择吗?
jeff 2015年

1
对于广泛的模型(例如线性回归),只需花费很少的额外费用,就可以将模型拟合到整个数据集的副产品进行(或近似处理)。我将编辑答案以使其更清楚。
迪克兰有袋动物

我对遗忘式留白的理解是,它是k倍CV,这是k倍CV的最佳形式,但计算量最大,其中k =数据集大小。
Daniel Winterstein

10

我的回答比严格更直观,但也许会有所帮助...

据我了解,过度拟合是基于使用相同数据进行的训练和测试而选择模型的结果,您拥有灵活的拟合机制:对数据样本的拟合非常紧密,以至于拟合噪声,离群值和所有其他差异。

将数据拆分为训练和测试集可防止您这样做。但是静态拆分无法有效地使用您的数据,拆分本身可能是一个问题。交叉验证可保持“不向训练数据完全适合训练数据”的优势,同时还能尽可能有效地利用您拥有的数据(即,所有数据都已使用作为培训和测试数据,但不能同时进行)。

如果您具有灵活的拟合机制,则需要限制模型的选择,以使其不偏爱“完美”而复杂的拟合。您可以使用AIC,BIC或其他直接惩罚拟合复杂度的惩罚方法来执行此操作,也可以使用CV来执行。(或者您可以通过使用不太灵活的拟合方法来做到这一点,这就是线性模型很好的原因之一。)

另一种看待它的方式是学习是关于泛化的,而过于紧密的拟合在某种意义上是无法泛化的。通过改变您所学的知识和所测的知识,与仅学习特定问题的答案相比,您的归纳更好。


3

从贝叶斯的角度来看,我不确定交叉验证会做“正确的”贝叶斯分析对比较模型没有做的事情。但是我不是100%肯定会这样做。

中号一种中号d一世

P中号一种|d一世P中号|d一世=P中号一种|一世P中号|一世×Pd|中号一种一世Pd|中号一世

Pd|中号一种一世

Pd|中号一种一世=Pdθ一种|中号一种一世dθ一种=Pθ一种|中号一种一世Pd|中号一种θ一种一世dθ一种

这称为先验预测分布。它基本上说出了模型对实际观察到的数据的预测效果如何,这正是交叉验证所做的工作,其中“先验”被替换为“培训”模型,“数据”被替换为“测试”数据。因此,如果模型B预测的数据优于模型A,则其后验概率相对于模型A会增加。由此看来,贝叶斯定理实际上将使用所有数据而不是子集进行交叉验证。但是,我对此并不完全相信-好像我们一无所获。

该方法的另一个优点是,它具有内置的“ occam剃刀”,由每个模型的先验分布的归一化常数之比给出。

但是,交叉验证对于可怕的旧“其他”或有时称为“模型规范化”似乎很有价值。我对这个“别的东西”是否重要感到不安,因为这似乎很重要-但是当它显然重要时,它却使您完全瘫痪了。只是让您头疼的事情,但您无能为力-除了思考“其他”可能是什么,然后在模型中进行尝试(这样它就不再是“其他”的一部分) 。

而且,当上述积分非常困难时,交叉验证是一种实际进行贝叶斯分析的方法。交叉验证对任何人​​都“有意义”-它是“机械的”而不是“数学的”。因此,很容易理解发生了什么。而且,这似乎也使您专注于模型的重要部分-做出良好的预测。


2
模型规范问题是关键。在模型错误指定的情况下,贝叶斯方法(尤其是证据最大化的“穷人”贝叶斯算法)的性能非常差,而交叉验证似乎几乎一直都很好。假设(先验)为“正确”时的收益通常比“错误”时的惩罚要小得多,因此,交叉验证平均会获胜(因为它几乎没有做出任何假设)。虽然这在智力上还不如现在令人满意!; o)
Dikran Marsupial 2011年

1
@dikran-有趣。我不太确定我是否同意你的意思。因此,您说如果模型是不确定的,那么使用同一模型进行交叉验证是否比使用贝叶斯定理更好?我想看一个例子。
概率

@probabiltyislogic我认为这不是一个特别新的发现,Rasmussen和Williams在其出色的《高斯过程》一书的第118页中提到了这一点(尽管它实际上是对Grace Wahba的样条专着中的类似评论的引用)。本质上,边际似然是在给定模型假设的情况下数据的概率,而XVAL可能性是在不考虑模型假设的情况下对数据概率的估计,因此在假设无效时更为可靠。适当的经验研究将是有用的。
Dikran有袋动物2011年

@probabilityislogic,我应该补充一点,我喜欢贝叶斯方法进行模型选择,但实际上我几乎总是使用交叉验证,因为它通常提供的结果(统计上)与贝叶斯方法相同或更好。
Dikran Marsupial

X一世ÿ一世X一世pÿ一世|X一世θÿpX一世|θX。第二项对可能性的贡献更大,因此,如果模型在那里做得很好并在预测中咬合,则边际可能性将不会在意。
JMS
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.