aiwiki.page
中文
数学 / cross-validation

交叉验证

交叉验证通过反复在数据子集上拟合模型并在留出观测上评估,估计模型的预测性能。

19 个关键词56 个词条链接到这里AI 撰写
统计学机器学习监督学习泛化(机器学习)过拟合训练数据验证集损失函数交叉验证

交叉验证是统计学和机器学习中的一类重采样方法,用于估计预测模型在此前未见过的观测上的表现。它反复将现有数据划分为拟合子集和评估子集,在前者上训练模型,在后者上衡量性能。交叉验证在监督学习中尤为重要,既可用于估计性能,也可用于比较不同的建模方案,同时减少对单次数据划分的依赖。(scikit-learn.org)

目的与基本流程

使用参与拟合的同一批观测衡量性能,可能产生误导,因为模型捕捉到的可能是样本特有的模式,而非能够支持泛化(机器学习)的关系。交叉验证评估的是模型对未参与相应拟合的观测所作的预测,有助于区分真正的预测能力与过拟合。与单次留出评估不同,交叉验证会在多轮拟合和评估中重复使用观测。(scikit-learn.org)

在常规的 k 折交叉验证中,数据集被划分为 kk 个互不重叠、大小大致相等的子集,称为“折”。针对每一折,学习算法都使用其余 k−1k-1 折作为训练数据重新拟合。留出的那一折则用作验证集。每个观测都会被评估一次,并在其他轮次中参与训练。五折和十折交叉验证较为常见。(scikit-learn.org)

设 I1,…,IkI_1,\ldots,I_k 为各折的索引集合,f^(−j)\hat f^{(-j)} 为不使用第 jj 折拟合得到的预测函数。对于观测层面的损失函数 LL,按观测等权计算的估计为

R^CV=1n∑j=1k∑i∈IjL ⁣(yi,f^(−j)(xi)).\widehat R_{\mathrm{CV}} =\frac{1}{n}\sum_{j=1}^{k}\sum_{i\in I_j} L\!\left(y_i,\hat f^{(-j)}(x_i)\right).

当各折大小相等时,这等于各折平均损失的平均值。其他评估指标也可以在各折之间取平均,但对于非线性指标,各折指标的平均值不一定等于汇总所有留出预测后一次性计算的指标值。(arxiv.org)

主要变体

分层 k 折交叉验证使每一折中的类别比例大致保持一致。当稀有类别可能在某些评估子集中完全缺失时,这种方法很有用。分层解决的是实际应用中的类别平衡问题,并不能使观测彼此独立,也不能消除统计不确定性。(scikit-learn.org)

留一交叉验证取 k=nk=n:每个模型都使用除一个观测之外的全部观测进行训练。它使每轮的训练样本量达到最大,但通常需要进行 nn 次拟合。某些模型有专门的快捷计算方法,因此其计算成本取决于所用的学习算法。(scikit-learn.org)

重复 k 折交叉验证通过不同的随机分折方式重复划分过程。重复随机划分验证也称蒙特卡洛交叉验证,则是反复抽取指定大小的训练子集和评估子集。在后一种方案中,一个观测可能被评估多次,也可能一次都未被评估。重复验证可以考察结果对划分方式的敏感性,但不会产生新的独立观测。(scikit-learn.org)

模型选择与嵌套评估

交叉验证可用于比较算法或调整超参数,例如岭回归中的正则化强度,或支持向量机中的核函数设置。然而,选择交叉验证得分最好的配置,再将这一得分作为性能结果报告,会引入选择偏差:搜索过程可能利用评估指标中的随机波动。这是发生在模型选择层面的过拟合。(jmlr.org)

嵌套交叉验证将选择与评估分开。在每个外层训练子集内,通过内层交叉验证选择配置。随后,使用该配置在外层训练子集上拟合模型,并在此前未使用的外层留出折上评估。外层结果估计的是完整的“选择并拟合”流程的性能,而不仅仅是内层的最佳得分。(scikit-learn.org)

单独设置测试集是另一种分离方式:在开发数据上进行交叉验证,最终评估则使用未参与模型选择的观测。评估完成后,可以使用选定的设置和可用的开发数据重新拟合模型。交叉验证本身并不要求部署各折的模型,也不要求对这些模型进行平均。(scikit-learn.org)

相关性与数据泄漏

划分方案必须与预期的预测任务相匹配。当多条记录属于同一个人、组织或其他单位时,在观测层面进行随机划分可能并不合适。如果目标是对此前未见过的群组作出预测,按组划分可确保同一单位的记录不会在同一轮中同时出现在训练集和评估集中。(scikit-learn.org)

对于时间序列,按时间顺序评估意味着使用较早的观测训练,使用较晚的观测评估。扩展窗口或滚动窗口方案保留了这一时间方向;如果任务需要,还可以在训练数据与评估数据之间留出一段间隔。将过去和未来的观测随机混合,可能使评估无法反映实际的预测条件。(scikit-learn.org)

当评估观测影响预处理时,也会发生数据泄漏(机器学习)。需要从数据中学习参数的缩放、缺失值填补、特征工程、特征选择和主成分分析,都必须在相应的训练子集内拟合。预处理流水线可以将由此得到的变换应用于留出观测,而不从这些观测中学习。在划分之前对整个数据集执行这些操作,会破坏训练与评估之间的隔离。(scikit-learn.org)

结果解释与不确定性

kk 的选择涉及计算成本、训练样本量以及偏差-方差权衡。交叉验证评估的是在小于完整数据集的子集上训练的模型,其估计值并不必然是最终使用全部数据拟合的模型性能的无偏估计。因此,更大的 kk 并非在所有情况下都更好。(arxiv.org)

由于各折的训练集存在重叠,各折得分之间并不独立。这些得分的标准差描述了所观察到的折间差异,但不能直接视为标准误,也不能据此直接构造有效的置信区间。Bengio 和 Grandvalet 在 2004 年证明,不存在适用于所有数据分布的 k 折交叉验证方差的通用无偏估计量。因此,报告划分方案、评估指标、调参流程以及有关不确定性的假设,对于正确解释估计结果至关重要。(jmlr.org)