普通英语的交叉验证?


Answers:


54

请考虑以下情况:

我想乘地铁去我的办公室。我的计划是坐汽车,在地铁上停车,然后乘火车去我的办公室。我的目标是每天早上8.15赶火车,以便我能按时到达办公室。我需要做出以下决定:(a)我需要离开家的时间,以及(b)我开车去车站的路线。

在上面的示例中,我有两个参数(即离开家的时间和到达车站的路线),我需要选择这些参数,以便在8.15 am之前到达车站。

为了解决上述问题,我可以在星期一,星期三和星期五尝试不同的“参数”集(即出发时间和路线的不同组合),以查看哪种组合是“最佳”组合。我的想法是,一旦我确定了最佳组合,就可以每天使用它,以实现自己的目标。

过度拟合的问题

上述方法的问题在于我可能会过拟合,这实际上意味着我确定的最佳组合在某种意义上可能是周一,周三和周五唯一的,并且该组合可能不适用于周二和周四。如果在搜索时间和路线的最佳组合时,我可能会利用过度拟合的方式来开发周一/周三/周五的交通状况的某些方面,而周二和周四则不会发生这种情况。

过度拟合的一种解决方案:交叉验证

交叉验证是过度拟合的一种解决方案。这个想法是,一旦我们确定了参数的最佳组合(在我们的时间和路线中),我们就可以在不同的上下文中测试该组参数的性能。因此,我们可能还希望对Tue和Thu进行测试,以确保我们的选择在那些日子里同样有效。

将类比扩展到统计

在统计上,我们有一个类似的问题。我们经常使用一组有限的数据来估计未知的未知参数。如果我们过度拟合,那么我们的参数估计值将对现有数据非常有效,但不适用于在其他情况下使用它们的情况。因此,交叉验证通过向我们证明参数估计值并不是我们用来估计它们的数据所独有的,可以避免上述过度拟合的问题。

当然,交叉验证并不是完美的。回到地铁的例子,可能会发生这样的情况,即使经过交叉验证,由于各种问题(例如,施工,交通量随时间变化等),我们最好的参数选择也可能在一个月之内无法正常工作。


2
从技术上讲,这是保持验证,但是可以想象将地铁示例扩展到交叉验证上下文。如果有帮助,我将重新编写示例,并将其余文本专门用于交叉验证。

@srikant ..单词“过度拟合”一词暗示我某些事情“过度”完成,意味着..超出要求。是否没有变量?抱歉,我已经多次听到过拟合这个词,并希望借此机会与您联系。
ayush biyani

1
我认为可以通过添加倍数的概念来改善此答案,这是CV与保持测试之间的差异的关键。在示例中(使用缩写M表示星期一,使用T表示星期二,...,使用R表示星期四,...):因此,您看一下TWRF以获得最佳组合,看看它在M上如何工作,然后在MWRF上看看如何运作因此,每天都将四次用作问题的一部分,并且一次用作对问题的检查,但绝不将其用作同一轮中的问题和检查。
韦恩

43

我认为最好用以下图片对此进行描述(在这种情况下,显示k倍交叉验证):

替代文字

交叉验证是一种用于防止预测模型过度拟合的技术,特别是在数据量可能受到限制的情况下。在交叉验证中,您需要对数据进行固定数量的折叠(或分区),对每个折叠进行分析,然后对总体误差估计值求平均。


2
似乎在本网站其他地方的讨论中,k折叠交叉验证只是交叉验证的一种类型,描述它并不能完成描述什么是交叉验证的一般工作。
russellpierce

3
@drknexus:不错,但是我提到这是k折,我想提供一个可视化的过程以帮助解释它。
Shane 2010年

快速说明:是否nfold = 4表示测试集为25%;nfold = 5表示测试集为20%;nfold = 10表示测试集为10%,依此类推:nfold = n表示100 / n%进入测试集?
johnjps111


6

假设您调查了一些过程;您已经收集了一些描述它的数据,并且已经建立了一个模型(统计或ML都无关紧要)。但是现在,如何判断是否可以?它可能非常适合基于其构建的数据,因此没有人会相信您的模型如此出色以至于您认为。
第一个想法是分离数据的一个子集,并使用它来测试您的方法对其余数据的模型构建。现在的结果绝对是不需要过度拟合的,尽管如此(特别是对于小集合),您可能(不幸)幸运了,并且绘制(更少)更简单的案例进行测试,使其(更困难)更容易预测……而且您的准确性/误差/优度估计对于模型比较/优化没有用,因为您可能对其分布一无所知。
如有疑问,请使用蛮力,因此只需复制上面的过程,收集很少的准确性/错误/善意估计值并将它们取平均值即可,从而获得交叉验证。在更好的估计中,您还将获得直方图,因此您将能够近似分布或执行一些非参数检验。
就是这样;测试序列拆分的详细信息是导致CV类型不同的原因,但除了极少数情况和较小的强度差异外,它们相当等效。确实,这是一个巨大的优势,因为它使它成为了防弹公平的方法。很难欺骗它。


3

由于在训练时您无权访问测试数据,并且希望模型在看不见的测试数据上表现出色,因此您可以通过重复采样一小部分样本来“假装”可以访问某些测试数据。您的训练数据,请在训练模型时按住该集合,然后将保留的集合视为测试数据的代理(并选择对保留的数据提供最佳性能的模型参数)。您希望通过从训练数据中随机采样各个子集,使它们看起来像测试数据(就平均行为而言),因此,学习到的模型参数也将对测试数据同样有用(例如,您的模型很好地概括了看不见的数据)。

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.