0、介绍
Berrar D. Cross-Validation[J]. 2019.
交叉验证是一种数据重采样方法,以评估预测模型的泛化能力和防止过拟合。与 bootstrap 一样,交叉验证也属于蒙特卡罗方法的家族。本文介绍了交叉验证及其相关的重采样方法。
从概念上讲,预测模型 f() 是基于数据集 D 为一个案例分配一个类标签的规则,即 ,其中 是案例 的预测类标签。在机器学习中,这种模型的构造被表示为监督学习。
在监督学习中的一个中心问题是关于结果模型的准确性。这里的一个关键问题是过拟合。例如,考虑一个单变量回归问题,我们希望从基于n个观测点 预测因变量y,i=1...n。我们可以使用n−1的多项式来完美地拟合通过这些点的曲线,然后使用曲线来推断 对应的 。
这条曲线很可能与手头的数据过度拟合。它不仅反映了因变量和自变量之间的关系,而且它还模拟了数据集中的固有噪声。另一方面,一个更简单的模型,如最小二乘线,受固有噪声的影响较小,但它可能也不能很好地捕捉变量之间的关系,因此这种模型欠拟合。过拟合和未拟合的模型都不能很好地泛化,一个主要的挑战是在过拟合和过拟合之间找到正确的平衡。
我们如何评估一个模型的泛化能力?理想情况下,我们将使用新数据来评估该模型,这些数据来自于与我们用来构建模型的数据相同的群体。
1、基本概念和符号
总的数据集:。使用随机子抽样方法从学习集中生成训练集 和测试集 。
基于重复子抽样的模型评估意味着将一个学习函数应用于多个数据子集,所得到的模型 随后在其他子集(即测试集或验证集)上进行评估,这些子集在训练中没有使用。模型在这些子集上实现的性能的平均值是对最终模型 性能的估计。
f()的预测模型估计了案例 的目标 为 。损失函数:。
我们现在可以计算两个不同的误差,训练误差和测试误差。训练误差告诉我们一些关于对训练集的拟合程度;而测试误差是对真实预测误差的估计,这个估计量化了模型的泛化能力。
1.1 Single hold-out random subsampling
它从测试集的学习集中随机抽取一些样本,而其余的样本构成训练集。通常,测试集包含约10%到30%的可用案例,而训练集包含约90%到70%的案例。
1.2 k-fold random subsampling
1.3 k-fold cross-validation
交叉验证类似于重复随机子抽样方法,但抽样的方式是没有两个测试集重叠。在k倍交叉验证中,可用的学习集被划分为 k 个大小近似相等的不相交子集。
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 用于估计一个统计量, 的偏差或方差。
- 将样本统计量作为可用样例 的函数来计算,即 ,其中t()是一个统计函数。
- 对于所有 ,省略第 个样例,对其余的 n−1 样例应用相同的统计函数t(),得到。(注:索引i的意思是第i种情况没有被使用)
- 统计量 的 Jackknife 估计是所有 的平均值,即 。
- 的偏差和方差的 jackknife 估计是:
请注意,cross-validation 的性能度量对于小样本数据集是不可靠的,并建议使用贝叶斯区间和
cross-validation 是用来估计模型的真实预测误差和调整模型参数的最广泛使用的数据重采样方法之一。10-fold cross-validation 在实践中经常被应用。