交叉验证,有时也称为轮换估计或样本外测试,是一种模型验证技术家族,用于评估统计分析结果对独立数据集的泛化能力。它是一种重采样方法,在不同迭代中使用数据的不同部分来训练和测试模型。交叉验证常用于预测场景,以估计预测模型在实际中的准确度,同时也能评估已拟合模型的质量及其参数的稳定性。
在典型的预测问题中,模型在已知数据集(训练集)上进行训练,然后在未见过的数据集(验证集或测试集)上进行测试。其目标是衡量模型对未参与训练的数据的预测能力,从而发现过拟合或选择偏差等问题,并了解模型对独立数据集的泛化效果。一轮交叉验证涉及将样本划分为互补的子集:模型在一个子集(训练集)上拟合,在另一个子集(验证集)上进行验证。为了减少变异性,大多数方法会执行多轮不同划分的验证,并将各轮验证结果进行平均,以得到更准确的预测性能估计。
动机
考虑一个具有一个或多个未知参数的模型,以及一个可用于拟合该模型的数据集。拟合过程会优化参数,使模型尽可能好地拟合训练数据。如果从同一总体中取出独立的验证数据样本,模型通常不会像拟合训练数据那样完美地拟合验证数据。当训练集较小或参数数量较多时,这种差异尤为明显。交叉验证提供了一种估计这种差异程度的方法,这对于理解模型的性能至关重要。
示例:线性回归
在线性回归中,假设有 \(n\) 个响应值 \(y_1, \ldots, y_n\) 和 \(n\) 个 \(p\) 维协变量向量 \(\mathbf{x}_1, \ldots, \mathbf{x}_n\),其中每个 \(\mathbf{x}_i\) 包含分量 \(x_{i1}, \ldots, x_{ip}\)。使用最小二乘法拟合超平面 \(\hat{y} = a + \boldsymbol{\beta}^T \mathbf{x}\) 后,训练集上的均方误差(MSE)定义为:
\[
\text{MSE} = \frac{1}{n} \sum_{i=1}^n (y_i - \hat{y}_i)^2 = \frac{1}{n} \sum_{i=1}^n (y_i - a - \boldsymbol{\beta}^T \mathbf{x}_i)^2.
\]
如果模型设定正确,训练集上的均方误差往往低估真实的预测误差,因为模型已经针对训练数据进行了优化。交叉验证通过评估模型在未参与训练的数据上的表现,有助于纠正这种乐观偏差。
常用方法
存在多种交叉验证技术,它们在数据划分方式上有所不同。
k 折交叉验证
在 k 折交叉验证中,原始样本被随机划分为 \(k\) 个大小相等的子样本。其中 \(k-1\) 个子样本用作训练数据,剩余的一个子样本用作验证数据。该过程重复 \(k\) 次,每次使用不同的子样本作为验证集。最终将 \(k\) 次的结果进行平均,以产生单一的估计值。\(k\) 的典型选择是 5 或 10,以在偏差和方差之间取得平衡。一种特殊情况是留一交叉验证(LOOCV),其中 \(k\) 等于数据点的数量,这意味着每个观测值都单独作为一次验证集。
留一交叉验证(LOOCV)
留一交叉验证是 k 折交叉验证的一种极端形式,其中每个训练集包含除一个观测值外的所有数据,而该观测值作为验证集。这种方法对于大型数据集计算成本较高,但能提供近乎无偏的预测误差估计,尽管其方差可能较大。
重复随机子采样
也称为蒙特卡洛交叉验证,该方法多次随机将数据拆分为训练集和验证集。预测误差在多次拆分中取平均。这种方法不保证每个观测值恰好被用作验证集一次,但在数据量较大时可能很有用。
分层交叉验证
在类别不平衡的分类问题中,分层交叉验证确保每一折都保持与原始数据集相同的类别比例。这可以防止某一折因缺少某个类别而产生误导性的性能评估。
应用
交叉验证广泛应用于机器学习和人工智能中的模型选择与超参数调优。例如,在训练神经网络或大型语言模型时,从业者常使用交叉验证来选择层数、学习率或正则化参数。它也可用于深度学习中比较不同架构,以及在Transformer模型中评估泛化能力。此外,在生成式人工智能领域,交叉验证有助于评估模型在多样化真实世界输入上的表现。
局限性与注意事项
交叉验证存在一些局限性。对于大型数据集和复杂模型,其计算成本可能很高,因为需要多次训练。对于时间序列数据,标准交叉验证并不适用,因为随机拆分会破坏时间顺序;此时应使用前向链等方法。此外,交叉验证估计的是给定训练集大小下的期望预测误差,但并未完全考虑随机拆分带来的变异性,这在小数据集上可能导致估计方差较高。
另一个注意事项是,交叉验证假设数据是独立同分布的(i.i.d.)。在实践中,如果数据存在聚类或相关性,验证结果可能过于乐观。分组交叉验证可以解决这一问题,它确保来自同一组的所有观测值在训练集或验证集中保持在一起。
与过拟合的关系
过拟合发生在模型学习了训练数据中的噪声而非潜在模式时,导致对新数据的预测性能不佳。交叉验证是检测过拟合的主要工具:如果验证误差显著高于训练误差,则模型很可能过拟合。通过对多次拆分的结果取平均,交叉验证比单次训练-测试拆分能更可靠地估计泛化误差,从而帮助从业者避免选择过于复杂的模型。
历史背景
交叉验证的概念源于统计学,可追溯到 20 世纪 30 年代,早期贡献者包括 Seymour Geisser 等人。随着计算统计学和机器学习在 20 世纪后期的兴起,交叉验证变得更加重要。Thomas Dietterich 和 Michael Jordan 等研究者对其理论理解和实际应用做出了重要贡献。如今,交叉验证是数据科学家工具箱中的标准工具,并已在大多数统计和机器学习库中实现。
参见
- 机器学习
- 人工智能
- 深度学习
- 神经网络
- 大型语言模型
- Transformer
- 生成式人工智能
- 过拟合
参考文献
- Geisser, S. (1975). The predictive sample reuse method with applications. Journal of the American Statistical Association.
- Stone, M. (1974). Cross-validatory choice and assessment of statistical predictions. Journal of the Royal Statistical Society.
- Kohavi, R. (1995). A study of cross-validation and bootstrap for accuracy estimation and model selection. International Joint Conference on Artificial Intelligence.