Answers:
简而言之:通过验证模型。验证的主要原因是断言没有发生过拟合并估计广义模型的性能。
首先,让我们看一下实际的过度拟合。通常通过最小化训练集上的某些损失函数来训练模型以适合数据集。但是,存在一个限制,即最小化此训练误差将不再有益于模型的真实性能,而只会最小化特定数据集上的误差。从本质上讲,这意味着该模型过于紧密地适合于训练集中的特定数据点,试图对源自噪声的数据中的模式进行建模。这个概念称为过拟合。下面显示了过度拟合的示例,在该示例中您可以看到黑色的训练集,而背景中的实际人口则显示出更大的训练集。在此图中,您可以看到蓝色模型太紧贴训练集,无法对潜在的噪声建模。
为了判断模型是否过度拟合,我们需要估计模型在未来数据上的广义误差(或性能),并将其与训练集上的性能进行比较。可以通过几种不同的方法来估计此错误。
估计广义性能的最直接方法是将数据集分为三个部分:训练集,验证集和测试集。训练集用于训练模型以拟合数据,验证集用于测量模型之间的性能差异,以选择最佳模型,而测试集则断言模型选择过程未过度拟合第一个模型两套。
要估算过度拟合的数量,只需最后评估您对测试集感兴趣的指标,然后将其与您在训练集上的表现进行比较即可。您提到了ROC,但在我看来,您还应该查看其他指标,例如石棉分数或校准图,以确保模型性能。当然这取决于您的问题。有很多指标,但是这不是重点。
这种方法非常普遍且受人尊敬,但对数据可用性提出了很高的要求。如果数据集太小,则很可能会损失很多性能,并且结果将对拆分有偏见。
避免浪费大量数据进行验证和测试的一种方法是使用交叉验证(CV),该方法使用与训练模型相同的数据来估计广义性能。交叉验证的思想是将数据集分成一定数量的子集,然后依次使用这些子集作为支持的测试集,同时使用其余数据来训练模型。在所有折叠中对度量进行平均将为您提供模型性能的估计。然后通常使用所有数据来训练最终模型。
但是,CV估计并非没有偏见。但是,使用的折叠次数越多,偏差就越小,但相反,您得到的方差就更大。
正如在数据集拆分中一样,我们可以估算模型的性能,并估算过拟合,您只需将CV中的指标与评估培训集上的指标所获得的指标进行比较即可。
引导程序背后的想法类似于CV,但是我们没有将数据集分成多个部分,而是通过重复从整个数据集中绘制训练集并替换并在这些引导程序样本中的每一个上执行完整的训练阶段,在训练中引入了随机性。
引导程序验证的最简单形式只是评估训练集中未找到的样本(即遗漏的样本)的指标,然后对所有重复进行平均。
该方法将为您提供模型性能的估计值,在大多数情况下,模型性能的偏差要小于CV。再次,将其与您的训练集性能进行比较,您会得到过度拟合。
有一些方法可以改进引导程序验证。已知.632+方法在考虑过度拟合的情况下,可以对通用模型的性能给出更好,更可靠的估计。(如果您有兴趣,可以阅读原始文章:交叉验证的改进:632+ Bootstrap方法)
我希望这回答了你的问题。如果您对模型验证感兴趣,我建议您阅读《统计学习的要素:数据挖掘,推理和预测》一书中有关验证的部分,该书可在线免费获得。
这是估算过度拟合程度的方法:
这是一个示例:
Trefferrate =命中率(正确分类的百分比),Variablenzahl =变量数(=模型复杂度)
符号:。重新替换,+超参数优化器的内部留一法估计,o外部交叉验证独立于患者级别
这适用于ROC或绩效指标,例如Brier的得分,敏感性,特异性,...
*我不建议在此处使用.632或.632+引导程序:它们已经混入了重新替换错误:无论如何,您以后都可以通过重新替换和超出引导的估计来计算它们。
过度拟合只是考虑统计参数的直接结果,因此将获得的结果作为有用的信息,而无需检查是否不是以随机方式获得的。因此,为了估计过度拟合的存在,我们必须在与真实数据库等效但具有随机生成值的数据库上使用该算法,多次重复此操作,我们可以估计以随机方式获得相等或更好结果的可能性。如果这个可能性很高,那么我们很可能处于过度拟合的情况。例如,四阶多项式在平面上具有5个随机点的相关性为1的概率为100%,因此这种相关性是无用的,并且我们处于过度拟合的情况。