内部与外部交叉验证和模型选择


26

我的理解是,通过交叉验证和模型选择,我们尝试解决两件事:

P1。用我们的样本进行训练时估计人口的预期损失

P2。测量并报告我们对该估计的不确定性(方差,置信区间,偏差等)

标准做法似乎是进行反复交叉验证,因为这会减少我们估算器的差异。

但是,在报告和分析方面,我的理解是内部验证比外部验证要好,因为:

最好报告:

  • 我们的估算器的统计数据,例如,对整个样本(在本例中为CV样本)的置信区间,方差,均值等。

比报告:

  • 由于以下原因,我们在原始样本的保留子集上的估计量损失:

    (i)这将是一次测量即使我们使用CV选择估算器

    (ii)由于我们必须为保留集留出空间,因此我们将使用比原始样本小的集(例如CV集)来训练我们用于此单一测量的估计量。这导致P1中的估计更加偏颇(悲观)。

它是否正确?如果不是为什么?

背景:

很容易找到建议将样本分为两组的教科书:

  • CV集,随后,反复分为训练验证集。
  • 保持退出(测试)集,只在最后用来报告估计性能

我的问题是试图了解这种教科书方法的优点和优势,因为我们的目标是在本文开头真正解决问题P1P2。在我看来,报告保留测试集是一种不好的做法,因为对CV样本的分析会提供更多信息。

嵌套K折与重复K折:

原则上,可以将保留与常规K折相结合以获得 嵌套K折。这将使我们能够评估估计量的变异性,但在我看来,对于相同数量的总训练模型(总折数),重复K折将产生比嵌套K-误差更准确的估计量折。要看到这个:

  • 对于相同的K,重复的K折使用的总样本量要比嵌套K折的样本大(即,导致较低的偏差)
  • 100次迭代只会以嵌套K折(K = 10)给出估计值的10次测量,但是以K折为100次测量(更多的测量会导致P2的方差更低)

这个推理怎么了?


1
我已经对您的标题进行了调整,以使其更具体地符合您想知道的内容。我认为您更有可能通过这种方式获取所需的信息。如果您不同意,请随时将其更改。另请注意,由于编辑数量众多,该线程已自动变为CW。如果您不希望它成为CW,请对其进行标记以引起版主注意;(我认为)应该有可能扭转这种情况。
gung-恢复莫妮卡

1
谢谢@gung。我唯一关心的是,有些人可能会将保留CV2倍CV混为一谈,因此,我认为 Steyerberg03一样,内部CV与外部CV比较清楚
Amelio Vazquez-Reina

Answers:


20

让我为已经存在的不错的答案添加几点:

嵌套K折叠与重复K折叠:嵌套和重复K折叠是完全不同的东西,用于不同的目的。

  • 如您所知,如果要使用内部cv进行模型选择,则嵌套是好的。
  • 重复:恕我直言,您应该始终重复k折cv [请参见下文]。

因此,我建议重复任何嵌套的k折交叉验证

更好地报告“我们的估算器的统计数据,例如,对整个样本(在本例中为CV样本)的置信区间,方差,均值等。”

当然。但是,您需要意识到以下事实:仅凭交叉验证结果就无法(轻松)估计置信区间。原因是,无论您进行多少重采样,实际查看的案例数都是有限的(通常相当小-否则您就不必理会这些区别了)。
参见例如Bengio,Y.和Grandvalet,Y.:K折交叉验证方差的无偏估计器,机器学习研究学报,2004,5,1089-1105

但是,在某些情况下,您仍然可以估算方差:通过重复进行k倍交叉验证,您可以了解模型不稳定性是否确实起作用。而且,与不稳定性相关的方差实际上是可以通过重复交叉验证减少的方差的一部分。(如果模型非常稳定,则交叉验证的每个重复/迭代对于每种情况将具有完全相同的预测。但是,由于数据集的实际选择/组成,您仍然会有差异)。因此,重复k倍交叉验证的较低方差存在限制。进行越来越多的重复/迭代是没有意义的,因为最终只测试实际案例这一事实引起的差异不会受到影响。 ñ

在某些特殊情况下,最终只能测试实际案例的事实所导致的方差可以估算出来,例如,按命中率,错误率,敏感性,特异性,预测值等比例来衡量分类器的性能:它们遵循二项式分布不幸的是,这意味着它们具有巨大的方差其中是模型的真实性能值为观察值,为分数的分母中的样本大小。有最大值σ 2p= 1ñp p Ñp=0.5σ2p^=1个ñp1个-ppp^ñp=0.5。您还可以从观察开始计算置信区间。(@Frank Harrell将评论说这些不是正确的评分规则,因此无论如何您都不应使用它们-这与巨大的差异有关)。但是,恕我直言,它们对于推导保守范围很有用(有更好的评分规则,这些分数的不良行为是更好规则的最坏情况限制),
例如,参见C. Beleites,R。Salzer和V. Sergo:使用部分类成员资格的软分类模型的验证:Sensitivity&Co.的扩展概念应用于星形细胞瘤组织Chemom分级。智力 实验室 Syst。,122(2013),12-22。

因此,这使我可以扭转您对坚持的主张

  • 单独(必要)重新采样都不能给您很好的方差估计,
  • OTOH,如果您可以推断出交叉验证估计值的有限测试样本大小方差,那么也可以进行验证。

由于我们必须为保留集留出空间,因此我们将使用比初始样本小的集(例如CV集)来训练该单次测量的估计量。这导致P1中的估计更加偏颇(悲观)。

1个ķ

在我看来,报告保留测试集是一种不好的做法,因为对CV样本的分析更具参考价值。

通常是的。但是,也要记住,有些重要类型的错误(例如漂移)无法通过重采样验证来测量/检测。
参见例如Esbensen,KH和Geladi,P。正确验证的原理:使用和滥用重新采样进行验证,化学计量学报,2010,24,168-187

但在我看来,对于相同数量的总训练模型(总数的折叠数),重复的K折叠将产生比嵌套K折叠更不失真,更准确的估计量。要看到这个:

对于相同的K,重复的K折使用的总样本量要比嵌套K折的样本大(即,导致较低的偏差)

我对此表示拒绝:模型训练如何使用其无关紧要ķ-1个ķñ
ķ

100次迭代只会以嵌套K折(K = 10)给出估计值的10次测量,但以K折为100次测量(更多的测量会导致P2的方差更低)

这是否有所不同取决于(替代)模型的不稳定性,请参见上文。对于稳定模型,这是无关紧要的。因此,可能是您执行1000次还是100次外部重复/迭代。


这篇文章绝对属于该主题的阅读清单: Cawley,GC和Talbot,NLC关于模型选择中的过拟合和性能评估中的后续选择偏差,机器学习研究学报,2010,11,2079-2107


6

解释这一点的关键参考是:

@ARTICLE{pic90,
  author = {Picard, R. R. and Berk, K. N.},
  year = 1990,
  title = {Data splitting},
  journal = The American Statistician,
  volume = 44,
  pages = {140-147}
}

也可以看看:

@Article{mic05pre,
  author =       {Michiels, Stefan and Koscielny, Serge and Hill, Catherine},
  title =        {Prediction of cancer outcome with microarrays: a
multiple random validation strategy},
  journal =      {Lancet},
  year =         2005,
  volume =       365,
  pages =        {488-492},
  annote =       {comment on
p. 454; validation;microarray;bioinformatics;machine learning;nearest
centroid;severe problems with data splitting;high variability of list
of genes;problems with published studies;nice results for effect of
training sample size on misclassification error;nice use of confidence
intervals on accuracy estimates;unstable molecular signatures;high
instability due to dependence on selection of training sample}
}

在我自己的工作中,我发现数据拆分需要训练和测试样本量接近10,000才能令人满意地工作。


弗兰克-这些都是很棒的资源。我想知道这些信息与@Dan在其答案中提供的信息有何关系。也许我误解了这一点,但看起来社区对此问题意见分歧。
Amelio Vazquez-Reina

我没有时间阅读第一篇,但至于第二篇,我快速浏览了一下,似乎与我的论文所说的完全一样。仔细查看“统计分析”部分,您将看到它们描述了与Dikran在我上面链接的文章中描述的相同的特征选择过程。我猜想他们研究的人没有那样做,这就是为什么他们发现“由于验证不充分,与我们自己的分析相比,我们选择的研究发表了过于乐观的结果”。我认为没有分歧。
Dan L

4

这确实取决于您的模型构建过程,但是我发现本文很有帮助

http://www.biomedcentral.com/content/pdf/1471-2105-7-91.pdf

此处讨论的症结在于,如果您基于用于估计模型性能的同一因素来选择模型,则会发生重大的自由偏差(估计模型性能要比实际更好)。因此,如果要通过查看交叉验证误差从一组可能的模型中选择模型,则不应使用交叉验证误差(或任何其他内部估计方法)来估计模型性能。

另一个有用的资源是

/stats//a/27751/26589

这篇文章提供了一个清晰的示例,说明了在“看到”所有数据时如何选择功能会导致模型性能出现较大偏差(例如,模型的性能将比实际更好)。

如果您希望我提供一个更具体的示例,也许您可​​以对所构建模型的类型进行一般性描述(您拥有多少数据,从中选择多少功能,实际模型等)。


谢谢你丹。这都很有趣。为简单起见,我们可以假设我们正在尝试估计用于二进制分类(<〜10个参数)的SVM的内核参数(例如RBF内核),并且我们正在处理来自大量样本的100个样本(例如20个阳性)。
Amelio Vazquez-Reina

几个简单的问题。1)构建SVM时,是允许您自己选择10个参数的一个子集,还是始终使用您所使用的所有参数?2)您是否考虑过不同的内核或模型(物流,随机森林等)?3)您使用什么软件/软件包?内置的交叉验证实现各不相同,我想知道您将使用哪个。
Dan L

谢谢@Dan-我对模型和参数进行了网格搜索(即,通过网格搜索,内核和参数是不同的)。对于网格搜索中的每个实验,我都会执行CV(重复的K折交叉验证)。我正在使用scikit-learn。
2013年

1
谢谢@丹。我想我剩下的关于嵌套交叉验证的唯一问题是如何选择模型(因为在外循环的每一折中都得到了不同的模型)。对于我来说,选择在此外循环中得分最高的模型似乎并不合理,因为每次折叠的获胜模型都是根据数据集的不同部分进行衡量的。
阿梅里奥·瓦兹克斯·雷纳

1
假设您有3个外部折痕。这意味着您将运行整个模型构建过程3次,从而为您提供三个不同的模型。最后,您无需使用任何这些模型-要获得最终模型,请对所有数据运行整个模型构建过程(可能的独立评估集除外)。看来这会导致过度拟合,但是如果您的模型构建策略过度拟合,那么它也应该在外部交叉验证中过度拟合,从而导致适当更高的误差估计。
Dan L

2

我认为您的理解是正确的,通过使用单个保留测试集获得的损失估算器通常具有较高的方差。通过执行K折交叉验证之类的操作,您可以更准确地了解损失以及损失的分布情况。

通常需要权衡取舍,CV折数越多,您的估算就越好,但是需要更多的计算时间。


谢谢。我在OP中添加了背景资料,以进一步阐明我的问题。
Amelio Vazquez-Reina
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.