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

机器算法验证 估计 交叉验证 参考
2022-02-07 02:20:31

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

P1使用我们的样本进行训练时估计总体的预期损失

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

标准做法似乎是重复交叉验证,因为这减少了我们估计器的方差。

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

最好报告:

  • 我们的估计器的统计数据,例如它的置信区间、方差、均值等。

比报告:

  • 我们的估计器在原始样本的保留子集上的损失,因为:

    (i) 这将是一个单一的测量即使我们用 CV 选择我们的估计器

    (ii) 我们对这个单一测量的估计器将在一个小于我们初始样本的集合(例如 CV 集)上进行训练,因为我们必须为保留集腾出空间。这导致P1中的估计更加偏颇(悲观) 。

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

背景:

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

  • CV集,随后反复分为训练集和验证集。
  • 保留测试)集,仅在最后用于报告估计器的性能

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

嵌套 K 折叠与重复 K 折叠:

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

  • 对于相同的 K,重复 K-fold 比嵌套 K-fold 使用我们总样本的更大比例(即它导致较低的偏差)
  • 100 次迭代只会在嵌套的 K 倍(K = 10)中对我们的估计器进行 10 次测量,但在 K 倍中进行 100 次测量(更多的测量会导致P2的方差降低)

这个推理有什么问题?

4个回答

让我为已经在这里的好答案添加几点:

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

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

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

更好地报告“我们的估计器的统计数据,例如它的置信区间、方差、均值等。”

当然。但是,您需要注意这样一个事实,即您将无法(容易)仅通过交叉验证结果来估计置信区间。原因是,无论您重新采样多少,您查看的实际案例数量是有限的(通常相当少 - 否则您不会担心这些区别)。
参见例如Bengio, Y. 和 Grandvalet, Y.:No Unbiased Estimator of the Variance of K-Fold Cross-Validation Journal of Machine Learning Research, 2004, 5, 1089-1105

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

对于一些特殊情况,可以估计由于最终只测试真实案例而导致的方差,例如通过命中率、错误率、敏感性、特异性、预测值等比例来衡量分类器的性能: 它们遵循二项分布 不幸的是,这意味着它们有巨大的方差其中是模型的真实性能值,是观察到的,是分数分母中的样本大小。这具有nσ2(p^)=1np(1p)pp^np=0.5. 您还可以从观察开始计算置信区间。(@Frank Harrell 会评论说这些不是正确的评分规则,所以无论如何你都不应该使用它们——这与巨大的差异有关)。然而,恕我直言,它们对于推导保守界限很有用(有更好的评分规则,这些分数的不良行为是更好规则的最坏情况限制),
参见例如C. Beleites、R. Salzer 和 V. Sergo:使用部分类成员身份验证软分类模型:适用于星形细胞瘤组织分级的敏感性 & Co. 的扩展概念,Chemom。英特尔。实验室。系统,122(2013),12 - 22。

所以这让我扭转了你反对坚持的论点

  • 单独(必然)重新采样也不能很好地估计方差,
  • OTOH,如果您可以推断交叉验证估计的有限测试样本大小方差,那么也可以坚持下去。

我们对这个单一测量的估计器将在一个小于我们初始样本的集合(例如 CV 集)上进行训练,因为我们必须为保留集腾出空间。这导致 P1 中的估计更加偏颇(悲观)。

不一定(如果与 k-fold 相比)-但您必须权衡:小保留集(例如样本的 => 低偏差(≈与 k-fold cv 相同),高方差(> k 倍 cv,大约是 k 倍)。1k

在我看来,报告保留测试集是不好的做法,因为对 CV 样本的分析提供了更多信息。

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

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

对于相同的 K,重复 K-fold 比嵌套 K-fold 使用我们总样本的更大比例(即它导致较低的偏差)

我会说不:模型训练如何使用它的训练样本并不重要,只要代理模型和“真实”模型在相同的情况下使用它们方式。(我将超参数的内部交叉验证/估计视为模型设置的一部分)。 如果将经过训练(包括超参数优化)的代理模型与在固定超参数上训练的“the”模型进行比较,情况看起来会有所不同。个苹果推广到 1 个橙子。k1kn
k

100 次迭代只会在嵌套的 K 倍(K = 10)中对我们的估计器进行 10 次测量,但在 K 倍中进行 100 次测量(更多的测量会导致 P2 的方差降低)

这是否会产生影响取决于(代理)模型的不稳定性,见上文。对于稳定的模型,它是无关紧要的。无论您是进行 1000 次还是 100 次外部重复/迭代,都可能如此。


并且这篇论文绝对属于这个主题的阅读清单: Cawley, GC and Talbot, NLC On Over-fitting in Model Selection and Subsequent Selection Bias in Performance Evaluation, Journal of Machine Learning Research, 2010, 11, 2079-2107

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

@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 的训练和测试样本才能令人满意地工作。

这真的取决于你的模型构建过程,但我发现这篇论文很有帮助

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

此处讨论的症结在于,如果您根据用于估计其性能的相同事物来选择模型,则会出现显着的自由偏差(估计模型性能比实际情况更好)。因此,如果您通过查看交叉验证误差从一组可能的模型中选择模型,则不应使用交叉验证误差(或任何其他内部估计方法)来估计模型性能。

另一个有用的资源是

https://stats.stackexchange.com/a/27751/26589

这篇文章给出了一个清晰的例子,说明当所有数据都被“看到”时选择你的特征将导致模型性能的自由偏差(说你的模型会比实际表现更好)。

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

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

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