交叉验证(统计)

比较五个分类模型的交叉验证精度和假阴性(高估)的百分比。气泡的大小代表交叉验证精度的标准偏差(十倍)。
k折的跨验证图。

交叉验证,有时称为旋转估计样本外测试,是各种相似的模型验证技术中的任何一种,用于评估统计分析结果如何推广到独立数据集。交叉验证包括使用数据的不同部分测试和训练不同迭代模型的重新采样和样品分裂方法。它通常用于预测目标的设置,并希望估算预测模型在实践中的准确性。它也可以用于评估拟合模型的质量及其参数的稳定性。

在预测问题中,通常给出一个模型的数据集,该数据集在其中运行培训(训练数据集),以及对模型进行了测试的未知数据(或第一个可见数据)的数据集(称为验证数据集测试,放)。交叉验证的目的是测试该模型预测未用于估算它的新数据的能力,以标记过度拟合选择偏置等问题,并深入了解该模型将如何推广到独立数据集( IE,一个未知数据集,例如来自真正的问题)。

一轮交叉验证涉及将数据样本划分互补子集,对一个子集(称为训练集)进行分析,并验证对另一个子集的分析(称为验证集测试集)。为了降低可变性,在大多数方法中,使用不同的分区进行多个回合的交叉验证,并且在整个回合中合并了验证结果(例如平均),以估算模型的预测性能。

总而言之,交叉验证结合了(平均)适应性度量,以预测更准确地估计模型预测性能。

动机

假设一个具有一个或多个未知参数的模型,以及可以适合模型的数据集(训练数据集)。拟合过程优化了模型参数,以使模型尽可能符合训练数据。如果独立的验证数据样本是从与培训数据相同的人群中获取的,则通常结果证明该模型不符合验证数据,并且符合培训数据。这种差异的大小可能很大,尤其是当训练数据集的大小很小时,或者模型中的参数数量很大时。交叉验证是估计这种效果大小的一种方式。

示例:线性回归

在线性回归中,存在实际响应值n p-维矢量协变量x 1 ,..., x n 。向量X i的组件表示为x i 1 ,..., x ip 。如果使用最小二乘超平面ŷ = a + βt x形式拟合功能( x iy i 1≤i≤n ,则可以使用平均平方误差来评估拟合( MSE)。给定的估计参数值Aβ的MSE在训练集( X IY I1≤i≤n定义为:

如果正确指定了模型,则可以在温和的假设下显示训练集的预期值为n -p -p -1)/( n + p + 1)<1)<1)对于验证集(预期值是在培训集的分布上进行的)。因此,在训练集上进行的拟合模型和计算的MSE将导致对模型对独立数据集的拟合程度的乐观偏见。该偏见的估计值称为拟合的样本估计值,而交叉验证估计值是样本外估计值。

由于在线性回归中,可以直接计算因子( n -p- p - 1)/( n + p + 1),在该因素中,训练MSE在假设模型规范是有效的假设下低估了验证MSE,交叉验证可以可以用于检查模型是否已过度拟合,在这种情况下,验证集中的MSE将大大超过其预期值。 (在线性回归的上下文中,交叉验证也很有用,因为它可用于选择最佳的正规成本函数。)

一般案例

在大多数其他回归程序(例如逻辑回归)中,没有简单的公式来计算预期的样本外拟合。因此,交叉验证是一种通常适用的方法,可以使用数值计算代替理论分析来预测模型的性能。

类型

可以区分两种类型的交叉验证:详尽和非排量交叉验证。

详尽的交叉验证

详尽的交叉验证方法是交叉验证方法,它以将原始样本分为训练和验证集的所有可能方法学习和测试。

放置P交叉验证

保留 - P -OUT交叉验证( LPO CV )涉及使用P观测作为验证集,其余观测值作为训练集。在所有方法上重复此方法,以在P观测和训练集的验证集中切割原始样本。

LPO交叉验证需要培训并验证模型时间,其中n是原始样本中的观察数,以及二项式系数。对于P > 1,对于中等大的N ,LPO CV在计算上可能不可行。例如, n = 100和p = 30,

已建议将一种与P = 2的LPO交叉验证变体,称为“放出”交叉验证,作为一种几乎无偏见的方法,用于估计二进制分类器的ROC曲线下的面积。

一对一的交叉验证

当n = 8观测值时,剩余的交叉验证(LOOCV)的例证。总共将对8种型号进行培训和测试。

保留一个- out交叉验证( LOOCV )是与p = 1的保留交叉验证的特殊情况。该过程看起来类似于折刀。但是,通过交叉验证,一个人在剩余样本上计算一个统计量,而jackknifing则仅计算仅从保留样品中的统计量。

与LPO交叉验证相比,LOO交叉验证需要更少的计算时间通过而不是 。然而, 通过可能仍然需要大量的计算时间,在这种情况下,其他方法(例如K-折叠验证)可能更合适。

伪代码算法:

输入:

x,{长度为n的x值的向量

y,{长度为n的vector,带有预期结果的y值}

插值(x_in,y_in,x_out),{用x_in-y_in pairs培训模型后X_OUT的估计值}

输出:

err,{预测错误的估计}

脚步:

 err ← 0
 for i ← 1, ..., N do
   // define the cross-validation subsets
   x_in ← (x[1], ..., x[i − 1], x[i + 1], ..., x[N])
   y_in ← (y[1], ..., y[i − 1], y[i + 1], ..., y[N])
   x_out ← x[i]
   y_out ← interpolate(x_in, y_in, x_out)
   err ← err + (y[i] − y_out)^2
 end for
 err ← err/N

非排量交叉验证

非排量交叉验证方法并未计算所有分裂原始样本的方式。这些方法是休假交叉验证的近似值。

k倍交叉验证

当n = 12观测值和k = 3时,k折的交叉验证的插图。

k倍交叉验证中,原始样品被随机分配到k相等大小的子样本中,通常称为“折叠”。在K子样本中,将单个子样本保留为测试模型的验证数据,其余的K -1子样本被用作训练数据。然后重复跨验验过程的k时间,每个k子样本都准确地用作验证数据。然后可以将K结果取平均值以产生单个估计。该方法比重复的随机子采样的优点(请参见下文),所有观察结果均用于训练和验证,并且每个观察结果都用于精确验证一次。通常使用10倍的交叉验证,但通常K仍然是一个未固定的参数。

例如,设置k = 2导致2倍交叉验证。在2倍的交叉验证中,我们将数据集随机地将数据集随机地将两个集合d 0d 1换成两个集合,因此两个集合均相等(通常是通过将数据阵列换成然后将其拆分为两部分来实现)。然后,我们在D 0上进行训练,并在D 1上进行验证,然后在D 1上进行训练,并在D 0上进行验证。

k = n (观察次数)时, k倍交叉验证等效于丢弃的交叉验证。

分层的k倍交叉验证中,选择了分区,以使所有分区中的平均响应值大致相等。在二进制分类的情况下,这意味着每个分区包含两种类型标签的比例大致相同。

重复的交叉验证中,数据将数据随机分为K分区几次。因此,模型的性能可以平均进行几次跑步,但这在实践中很少是可取的。

当考虑许多不同的统计或机器学习模型时,贪婪的K折线交叉验证可快速识别最有前途的候选模型。

保留方法

在保留方法中,我们将数据点随机分配给两个集合D 0D 1 ,通常称为训练集和测试集。每个集合的大小都是任意的,尽管通常测试集小于训练集。然后,我们在D 0上训练(构建模型),并在D 1上测试(评估其性能)。

在典型的交叉验证中,将多种模型测试的结果平均在一起。相反,隔离的保留方法涉及一次运行。应该谨慎使用它,因为如果没有这样的平均多次运行,就可以实现高度误导的结果。一个人的预测准确性( F * )的指标往往会不稳定,因为它不会通过多次迭代来平滑(见下文)。同样,各种预测变量(例如,回归系数的值)扮演的特定作用的指标往往是不稳定的。

尽管保留方法可以被构架为“最简单的交叉验证”,但许多来源将保留分类为一种简单验证的类型,而不是简单或退化的交叉验证形式。

重复随机子采样验证

该方法(也称为蒙特卡洛交叉验证)将数据集的多个随机分配在培训和验证数据中创建。对于每个这样的分裂,模型都适合训练数据,并使用验证数据评估预测精度。然后将结果取平均值。该方法的优点(超过k倍交叉验证)是,训练/验证拆分的比例不取决于迭代次数(即,分区的数量)。该方法的缺点是,在验证子样本中永远不会选择某些观察结果,而其他观察结果可能多次选择。换句话说,验证子集可能重叠。该方法还表现出蒙特卡洛的变化,这意味着如果分析以不同的随机分裂重复分析,则结果将有所不同。

随机拆分的数量接近无穷大,重复随机亚采样验证的结果趋向于离开P-P-out交叉验证。

在该方法的分层变体中,随机样品的生成以使得训练和测试集中的平均响应值(即回归中的因变量)相等的方式。如果响应是二分法,并且数据中两个响应值的表示不平衡,则这是特别有用的。

应用重复随机子采样的方法是RANSAC

嵌套交叉验证

当使用交叉验证同时选择最佳的超参数集并进行误差估计(以及对概括能力的评估)时,需要进行嵌套的交叉验证。存在许多变体。至少可以区分两个变体:

k*l折交叉验证

这是一个真正的嵌套变体,包含K集的外环和L集的内部环。总数据集分为K集。一一选择一组作为(外部)测试集,然后将K -1组合组合到相应的外部训练集中。每个K集都重复这一点。每个外部训练集进一步细分为L集。一一选择一个集合作为内部测试(验证)集,将L -1组组合到相应的内部训练集中。每个L集都重复这一点。内部训练集用于拟合模型参数,而外部测试集则用作验证集,以提供对模型拟合的无偏评估。通常,对于许多不同的超参数(甚至不同的模型类型),对此进行了重复,并且验证集用于确定此内部训练集的最佳超参数集(和模型类型)。此后,使用内部交叉验证的最佳超参数组合的整个外部训练组适合整个外部训练组。然后使用外部测试集评估该模型的性能。

k折与验证和测试集的交叉验证

L = K -1时,这是一种K*l折叠验证的类型。单个k折交叉验证与验证集和测试集一起使用。总数据集分为K集。一一选择一组作为测试集。然后,剩下的集合中之一用作验证集,另一个k -2组用作训练集,直到评估所有可能的组合为止。与K*l折的交叉验证类似,训练集用于模型拟合,验证集用于每个超参数集的模型评估。最后,对于选定的参数集,测试集用于使用最佳参数集评估模型。在这里,可以使用两个变体:评估在训练集上训练的模型,或评估适合培训和验证集合的新模型。

拟合度量

交叉验证的目的是估计模型对数据集的预期拟合水平,该数据集与用于训练模型的数据无关。它可用于估计适合数据和模型的任何拟合定量度量。例如,对于二进制分类问题,验证集中的每种情况都可以正确或错误地预测。在这种情况下,错误分类错误率可用于汇总拟合度,尽管还可以使用其他措施,例如阳性预测值。当预测的值连续分布时,可以使用平均平方误差均方根误差中值绝对偏差来汇总错误。

使用先前的信息

当用户应用交叉验证以选择良好的配置时 ,然后他们可能想平衡交叉验证的选择与自己对配置的估计。通过这种方式,当样本量很小时,他们可以试图应对交叉验证的波动,并包括先前研究中的相关信息。例如,在预测组合练习中,可以应用交叉验证来估计分配给每个预测的权重。由于很难击败简单的同等权力预测,因此可以添加罚款以使其与同等的重量偏离。或者,如果应用交叉验证将单个权重分配给观测值,则可以惩罚与同等权重的偏差,以避免浪费潜在的相关信息。 Hoornweg(2018)展示了如何调整参数可以定义以便用户可以直观地在交叉验证的准确性和坚持参考参数的简单性之间平衡这是用户定义的。

如果表示可能选择的候选配置,那么要最小化的损失函数可以定义为

相对准确性可以量化为 ,使候选人的平均平方错误是相对于用户指定的 。相对简单项衡量的数量偏离相对于最大偏差量 。因此,相对简单性可以指定为 , 在哪里对应于具有最高允许偏差的价值 。和 ,用户确定参考参数相对于交叉验证的影响高。

可以为多种配置添加相对简单术语通过将损失函数指定为

Hoornweg(2018)表明,具有这种精确度的损失功能也可以用于直观地定义收缩估计器,例如(自适应)Lasso和Bayesian / Ridge回归。单击套索以示例。

统计特性

假设我们选择一个拟合F的度量,并使用交叉验证来产生模型的预期拟合EF的估计值,以从与培训数据相同的人群绘制的独立数据集。如果我们想像在相同分布之后采样多个独立的训练集,则F *的结果值将有所不同。 F *的统计特性是由于这种变化而产生的。

f *的差异可能很大。因此,如果根据交叉验证的结果比较了两个统计程序,则具有更好估计性能的过程实际上可能并不是两个过程中的更好的(即,它可能没有EF的更好值)。围绕交叉验证估计的构建置信区间已经取得了一些进展,但这被认为是一个困难的问题。

计算问题

只要可以提供所研究的预测方法的实现,大多数形式的交叉验证才能直接实施。特别是,预测方法可以是“黑匣子” - 无需访问其实现的内部。如果预测方法的训练昂贵,则交叉验证可能非常慢,因为必须反复进行训练。在某些情况下,例如最小二乘内核回归,可以通过预先计算训练中需要反复的某些值或使用快速“更新规则”(例如Sherman-Morrison Formula)来显著加强交叉验证。但是,必须谨慎地保留培训程序验证设置的“完全盲目”,否则可能会产生偏见。加速交叉验证的一个极端例子发生在线性回归中,其中交叉验证的结果具有封闭形式的表达式,称为正方形的预测残差误差总和)。

局限性和滥用

交叉验证仅在验证集和训练集从同一人群中得出,并且只有控制人类偏见时才能产生有意义的结果。

在预测建模的许多应用中,随着时间的推移,研究系统的结构会不断发展(即它是“非平稳”)。这两者都可以引入培训和验证集之间的系统差异。例如,如果在一定五年内对数据进行了预测股票价值的模型进行培训,则将随后的五年期视为来自同一人群的抽签是不现实的。作为另一个例子,假设开发了一个模型来预测个人在明年内被诊断出患有特定疾病的风险。如果使用仅涉及特定人群(例如年轻人或男性)的研究的数据对模型进行了培训,但随后将其应用于一般人群,则训练集的交叉验证结果可能与实际预测性能有很大不同。

在许多应用程序中,模型也可能错误地指定并随建模者偏见和/或任意选择而变化。当发生这种情况时,可能会有一种幻想,即系统在外部样本中发生变化,而原因是该模型错过了关键的预测指标和/或包括混杂的预测指标。新的证据是,交叉验证本身并不是对外部有效性的预测,而一种被称为“掉期抽样”的实验验证形式可以控制人类偏见,可以更能预测外部有效性。这是这项大型MAQC-II在30,000个模型中的大型研究所定义的,交换抽样融合了交叉验证,其意义是在独立培训和验证样本中测试了预测。然而,在这些独立样本和彼此视而不见的建模者之间也开发了模型。当这些模型在这些交换训练和验证样本中开发的这些模型中存在不匹配时,MAQC-II表明,这将比传统的交叉验证更能预测外部预测有效性。

交换抽样成功的原因是对模型构建中人类偏见的内置控制。除了对可能因这些混乱的建模者效应而导致可能因建模者而变化的预测过多信心,这些预测外,这些是其他可能被滥用的交叉验证的方式:

  • 通过执行初始分析以使用整个数据集确定最有用的功能- 如果建模过程需要特征选择或模型调整,则必须在每个训练集中重复此功能。否则,预测肯定会向上偏见。如果使用交叉验证来确定要使用的功能,则必须在每个训练集上进行特征选择的内部交叉验证
  • 使用整个数据集执行均值中心,重新缩放,降低降低,离群删除或任何其他数据依赖性预处理。虽然在实践中非常普遍,但已显示出将偏见引入交叉验证估计值中。
  • 通过允许某些培训数据还包括在测试集中 - 由于数据集中的“孪生”可能会发生,从而在数据集中存在一些完全相同或几乎相同的样本。在某种程度上,即使在完全独立的培训和验证样本中,孪生也总是发生。这是因为某些训练样本观察结果将具有几乎相同的预测因子值与验证样品观测值。其中一些将在训练和验证中相同方向上的目标水平更好地与目标水平更好,而实际上是由外部有效性差的混杂预测变量驱动的。如果从k倍集中选择了这种交叉验证的模型,则将在人工确认偏见中起作用,并确定已验证了这种模型。这就是为什么需要补充传统的交叉验证的原因,以控制人类偏见和混淆模型规范,例如交换抽样和前瞻性研究。

时间序列模型的交叉验证

由于数据的顺序很重要,因此对于时间序列模型,交叉验证可能是有问题的。一种更合适的方法可能是使用滚动交叉验证。

但是,如果通过单个摘要统计量来描述性能,则有可能使用Politis和Romano描述为固定引导程序的方法。引导程序的统计量需要接受时间序列的间隔,并返回其上的摘要统计信息。对固定引导程序的调用需要指定适当的平均间隔长度。

申请

交叉验证可用于比较不同预测建模程序的性能。例如,假设我们对光学字符识别感兴趣,并且我们正在考虑使用支持向量机(SVM)或K -Neart最邻居(KNN)来预测手写字符的图像中的真实字符。使用交叉验证,我们可以从相应的错误分类字符的分数方面获得经验估计来比较这两种方法。相反,样本中的估计值将不代表关注数量(即概括误差)。

交叉验证也可以用于变量选择。假设我们正在使用20种蛋白质表达水平来预测癌症患者是否会对药物反应。一个实际的目标是确定应使用20个功能的哪个子集来生成最佳的预测模型。对于大多数建模过程,如果我们使用样本中错误率比较功能子集,则使用所有20个功能时将发生最佳性能。但是,在交叉验证下,最合适的模型通常仅包含一部分,这些功能被认为是真正有益的。

医学统计数据的最新发展是其在荟萃分析中的使用。它构成了验证统计量,VN的基础,用于测试荟萃分析摘要估计值的统计有效性。它在荟萃分析中也以更常规的意义使用,以估算荟萃分析结果的可能预测误差。

也可以看看