Cross-validation

0、介绍

Berrar D. Cross-Validation[J]. 2019.

交叉验证是一种数据重采样方法,以评估预测模型的泛化能力和防止过拟合。与 bootstrap 一样,交叉验证也属于蒙特卡罗方法的家族。本文介绍了交叉验证及其相关的重采样方法。 

从概念上讲,预测模型 f() 是基于数据集 D 为一个案例分配一个类标签的规则,即 f(x_{i}, D)=\hat{y}_{i} ,其中 \hat{y}_{i} 是案例 x_{i} 的预测类标签。在机器学习中,这种模型的构造被表示为监督学习。 

在监督学习中的一个中心问题是关于结果模型的准确性。这里的一个关键问题是过拟合。例如,考虑一个单变量回归问题,我们希望从基于n个观测点  (x_{i},y_{i}) 预测因变量y,i=1...n。我们可以使用n−1的多项式来完美地拟合通过这些点的曲线,然后使用曲线来推断 x_{i+1} 对应的 y_{i+1} 。

这条曲线很可能与手头的数据过度拟合。它不仅反映了因变量和自变量之间的关系,而且它还模拟了数据集中的固有噪声。另一方面,一个更简单的模型,如最小二乘线,受固有噪声的影响较小,但它可能也不能很好地捕捉变量之间的关系,因此这种模型欠拟合过拟合和未拟合的模型都不能很好地泛化,一个主要的挑战是在过拟合和过拟合之间找到正确的平衡

我们如何评估一个模型的泛化能力?理想情况下,我们将使用新数据来评估该模型,这些数据来自于与我们用来构建模型的数据相同的群体。

1、基本概念和符号

总的数据集:D_{learn}。使用随机子抽样方法从学习集中生成训练集 D_{train} 和测试集 D_{test} 。

基于重复子抽样的模型评估意味着将一个学习函数应用于多个数据子集,所得到的模型 \hat{f}_{j} 随后在其他子集(即测试集或验证集)上进行评估,这些子集在训练中没有使用。模型在这些子集上实现的性能的平均值是对最终模型 f(x,D_{learn}) 性能的估计。

f()的预测模型估计了案例 x_{i} 的目标 y_{i} 为 f(x_{i}) = \hat{y}_{i} 。损失函数:\mathcal{L}\left(y_{i}, \hat{y}_{i}\right)

我们现在可以计算两个不同的误差,训练误差和测试误差。训练误差告诉我们一些关于对训练集的拟合程度;而测试误差是对真实预测误差的估计,这个估计量化了模型的泛化能力。

 1.1 Single hold-out random subsampling

它从测试集的学习集中随机抽取一些样本,而其余的样本构成训练集。通常,测试集包含约10%到30%的可用案例,而训练集包含约90%到70%的案例。

1.2 k-fold random subsampling

Single hold-out random subsampling 重复训练 k 次而成。将学习函数应用于每个训练集,然后将得到的模型应用于相应的测试集。性能被估计为所有 k 个测试集的平均值。
任何一对训练集和测试集都是不相交的:D_{\text {train }, j} \cap D_{\text {test }, j}=\emptyset
然而,任何给定的两个训练集或两个测试集当然都可能会重叠。

1.3 k-fold cross-validation

交叉验证类似于重复随机子抽样方法,但抽样的方式是没有两个测试集重叠。在k倍交叉验证中,可用的学习集被划分为 k 个大小近似相等的不相交子集。

10-fold cross-validation数据集被随机分成10个不相交的子集,每个子集包含(大约)10%的数据。该模型在训练集上进行训练,然后应用于验证集。
在 k 个验证集上的 k 个性能度量的平均值是交叉验证的性能。
cross-validation通常涉及分层随机抽样。有 n 个+80和 n 个−20。如果不进行随机抽样,那么很有可能一些验证集只包含阳性情况(或仅包含阴性情况)。然而,通过分层, 10-fold cross-validation 中的每个验证集保证包含大约8个阳性病例和2个阴性病例,从而反映了学习集中的类比率。

1.4 Leave-one-out cross-validation

即代表将数据集分为 n 份,每次取出一个数据作为测试集的唯一元素,其他 n-1 个数据都作为训练集用于训练模型和调参。结果就是训练 n 个模型,每次都能得到一个 MSE 。取其平均就是最终的 test MSE 。

LOOCV 中的测试误差近似是真实预测误差的无偏估计,但它有很大的方差。对于大 n ,LOOCV 的计算成本也可能非常高

在一个包含 n = 25 个案例的数据集中进行了说明。反过来,每个案例都作为单一的保留测试用例。该模型使用其余 n−1 个案例建立。

 1.5 Jackknife

Leave-one-out cross-validation 非常类似于一种相关的方法,称为 Jackknife 。从本质上,这两种方法的目标是不同的。采用 Leave-one-out cross-validation 来估计预测模型的泛化能力。相比之下,Jackknife 用于估计一个统计量, \hat{\theta} 的偏差或方差。

jackknife的流程如下:
  • 将样本统计量\hat{\theta}作为可用样例 x_{1}, x_{2}, \ldots, x_{n} 的函数来计算,即 \hat{\theta}=t\left(x_{1}, x_{2}, \ldots x_{n}\right) ,其中t()是一个统计函数。
  • 对于所有 i=1 . . n ,省略第 i^{th} 个样例,对其余的 n−1 样例应用相同的统计函数t(),得到\hat{\theta}_{i}=t\left(x_{1}, x_{2}, x_{i-1}, x_{i+1}, \ldots x_{n}\right)。(注:索引i的意思是第i种情况没有被使用)
  • 统计量 \hat{\theta} 的 Jackknife  估计是所有 \hat{\theta}_{i} 的平均值,即 \overline{\hat{\theta}}=\frac{1}{n} \sum_{i=1}^{n} \hat{\theta}_{i} 。
  •  \hat{\theta}的偏差和方差的 jackknife 估计是:

\begin{aligned} \operatorname{bias}(\hat{\theta}) &=(n-1)(\overline{\hat{\theta}}-\hat{\theta}) \\ \operatorname{Var}(\hat{\theta}) &=\frac{n-1}{n} \sum_{i=1}^{n}\left(\hat{\theta}_{i}-\overline{\hat{\theta}}\right)^{2} \end{aligned}

请注意,cross-validation 的性能度量对于小样本数据集是不可靠的,并建议使用贝叶斯区间和

a single hold-out test set 来估计真实的分类误差。

 

cross-validation 是用来估计模型的真实预测误差和调整模型参数的最广泛使用的数据重采样方法之一。10-fold cross-validation 在实践中经常被应用。

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

身影王座

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值