交叉验证 vs. 自举

2025年7月17日 | 阅读 10 分钟

引言

在统计学和机器学习中,用于评估模型性能和解决数据规律的两种关键技术是交叉验证和自助法(bootstrap)。尽管这两种技术都为预测模型的鲁棒性和可靠性做出了贡献,但它们的特点和操作方式却截然不同。

为了评估模型泛化到新数据到能力,交叉验证将数据集分割成多个子集,称为“折”(folds)。通过轮换遍历所有可能的组合,模型在某些折上进行训练,在其他折上进行测试。这种方法提供了对模型在不同数据分割上的性能的全面评估,并有助于避免过拟合。K折交叉验证和留一法交叉验证是常见的变体。

相比之下,自助法(bootstrap)使用重采样技术从原始数据中生成多个数据集(自助样本)。然后,使用这些样本来训练和测试模型,从而为均值、方差和置信区间等统计量生成估计值。由于自助法最大限度地利用了现有数据,因此在数据集较小的情况下尤其有用。

自助法更侧重于计算指标的变异性或不确定性,而交叉验证则更关注比较预测准确性。从业者可以通过了解它们的差异和应用来为他们特定的数据分析需求选择最合适的技术。

交叉验证:它是什么?

交叉验证是一种统计方法,用于评估机器学习模型的性能,检验模型泛化到新数据的能力。提供的数据集被分割成子集,有时也称为折,模型在其中一些子集上进行训练,并在其他子集上进行验证。通过这种迭代过程,最终每个数据点都被用于训练和验证,从而提供对模型性能的全面评估。

常见的交叉验证类型

  • K折交叉验证:从数据集中创建 K 个等长折。在所有折之间轮换,模型在 K-1 折上训练后,在最后一个折上进行评估。在所有 K 次迭代中,最后的性能指标被平均。
  • 留一法交叉验证 (LOOCV):这是 K 折交叉验证的一种特殊情况,其中每个数据点仅被排除一次作为测试集,此时 K 等于数据点的数量。
  • 分层 K 折交叉验证:与 K 折交叉验证类似,分层交叉验证确保每折都按比例代表目标类别,这对于类别不平衡的数据集很有用。
  • 时间序列交叉验证:适用于基于时间的任务,时间序列交叉验证根据时间顺序分割数据,确保训练数据发生在测试数据之前。

交叉验证:它是什么?

自助法(bootstrap)是一种统计方法,它使用带放回的重采样来估计数据集的均值、方差或置信区间。它在衡量统计量的变异性或不确定性方面特别有用,尤其是在标准分析技术不可行或数据集很小时。

自助法的操作

  • 重采样:从原始数据集中随机抽取带有放回的数据点,以生成多个新的数据集,也称为自助样本。这意味着一个数据点可能在一个样本中出现多次,而其他数据点可能被忽略。
  • 估计:计算每个自助样本的统计量(例如均值、中位数或标准差)。
  • 聚合:将每个自助样本的结果组合起来,以估计相关统计量的概率分布。例如,此过程可用于评估模型预测精度的范围。

交叉验证的优点

  • 模型更好的泛化能力

通过在多个数据集子集上测试模型,交叉验证提供了评估模型在未知数据上表现良好的真实方法。通过这样做,可以降低过拟合的可能性,从而提高模型泛化到新数据的能力。

  • 广泛的数据利用

在 K 折交叉验证等技术中,每个数据点都用于训练和测试。这种高效的数据利用方式尤其适用于处理小型数据集,因为它确保在评估过程中没有数据丢失。

  • 稳健的模型评估

与单一的训练-测试拆分相比,交叉验证在多个折上产生多个性能度量,从而提供对模型性能更可靠和准确的评估。这种波动有助于识别可能过拟合或欠拟合的模型。

  • 轻松进行模型比较

通过提供客观且一致的评估度量,交叉验证有助于有效评估多个模型或超参数设置。这确保选择了最适合给定任务的模型。

  • 适应不同模型

回归、分类和其他类型的预测模型都可以从交叉验证的灵活性中受益。分层 K 折等方法可以很好地处理不平衡数据集。

自助法的优点

  • 对数据无严格假设

自助法不需要对底层数据的分布进行严格假设。因此,它是一种灵活的方法,可用于具有非标准或未知分布的数据集。

  • 适用于所有度量

可以通过自助法计算许多度量,包括均值、中位数、标准差和回归系数。它还可以用于评估更复杂的模型性能度量,例如误差率或预测精度。

  • 适用于复杂模型

当难以为复杂或非参数模型生成解析解时,自助法是一种有效的方法。它提供了测试假设和估计参数的理论方法的替代方案。

  • 易于实现

即使是当今先进的计算能力,自助法在理论上也很简单,并且易于实现。通过并行处理,可以有效地控制其计算成本。

  • 避免过拟合的风险

与更直接的重采样方法相比,自助法通过重复采样而不是针对单个数据拆分,降低了过拟合的风险。

交叉验证的局限性

  • 计算成本高

交叉验证可能在计算上非常耗费资源,尤其是在使用 K 折或留一法交叉验证等方法时。对于复杂模型或大型数据集,需要重复训练和验证模型可能会导致运行时长显著增加。

  • 不能直接处理不平衡数据

在类别分布在所有折中没有保持的情况下,对于类别不平衡的分类问题,传统的交叉验证可能会产生有偏见的结果。需要分层交叉验证等技术来克服这一限制。

  • 超参数调优开销更大

当交叉验证与超参数优化(例如网格搜索)结合使用时,由于模型需要在所有折上为每个参数组合进行训练和评估,因此计算成本会增加。

  • 调优时可能发生过拟合

“元过拟合”现象,即选择的模型过于适应交叉验证折,而不是有效地泛化到新的、未见过的数据,可能会因为过度依赖交叉验证进行建模和参数选择而产生。

  • 随机拆分可能引入方差

数据分割成折的方式可能会影响性能度量,尤其是使用随机拆分时。有时需要多次运行不同的种子来确保结果的一致性。

自助法的缺点

  • 计算成本

自助法可能在计算上成本高昂,特别是对于大型数据集或复杂模型,因为它涉及创建许多重采样数据集并为每个数据集执行计算。

  • 受限于极端值

由于重采样数据集可能无法有效反映异常事件,自助法在准确估计极端值或分布尾部的特征时可能会遇到困难。

  • 重叠样本

由于自助法涉及带放回的抽样,某些观测值在一个重采样中会出现多次,而某些观测值则被移除。这种冗余可能会降低重采样数据的代表性。

  • 假设数据代表总体

自助法假设初始数据集能准确反映总体。如果数据集本身存在偏差或不完整,自助法的结果也会继承这些问题,可能导致错误的结论。

  • 不适合非常复杂的模型

对于具有复杂参数空间的极其复杂的模型,自助法可能无法很好地捕捉其多样性,因此需要使用其他技术进行更彻底的检查。

何时使用自助法 vs. 交叉验证

何时使用交叉验证

  • 模型评估与选择

对于比较不同模型或超参数的泛化能力,交叉验证是理想的选择。它可以避免过拟合,并有助于确定最合适的模型。

  • 大型或中型数据集

当有足够的数据时,交叉验证可以有效地将数据集分割成训练和测试折,信息损失极小。

  • 不平衡数据集(使用分层 K 折)

分层交叉验证可确保每折保持类别标签的比例,从而能够对不平衡数据集进行公平评估。

  • 时间序列数据(使用定制技术)

为了在时间序列分析中保持数据的时序顺序,某些交叉验证技术(如滑动窗口或滚动窗口)更为适用。

  • 减少过拟合

通过在多个折上进行测试,交叉验证降低了过拟合的风险,并有助于确保模型的性能不会过于乐观。

何时使用自助法

  • 计算置信区间或变异性

在量化统计参数(如均值、中位数或预测精度)的不确定性或变异性时,自助法是首选方法。

  • 小型数据集

对于小型数据集,当将数据分割用于交叉验证会留下不足的样本用于训练和测试时,自助法效果非常好。

  • 非参数推断

当数据分布未知或无法对其进行假设时,自助法为估计量提供了参数方法的灵活替代方案。

  • 评估模型的稳定性

通过展示结果在多个重采样数据集中的变化情况,自助法有助于评估模型预测的稳定性和鲁棒性。

实际应用场景

交叉验证的应用

  • 机器学习模型选择

为了评估各种机器学习算法并确定哪种算法在特定数据集上表现最佳,通常会使用交叉验证。例如,它有助于评估随机森林、支持向量机神经网络等模型在垃圾邮件识别等任务上的表现。

  • 超参数调优

像网格搜索和随机搜索这样的技术,它们评估不同的超参数组合以最大化模型性能,都依赖于交叉验证。例如,它可以帮助确定梯度提升模型的最佳学习率或随机森林中最佳树的数量。

  • 避免过拟合

通过在多个数据子集上评估模型,交叉验证有助于检测过拟合。例如,它可以确保用于图像分类的深度神经网络在未见过的数据上也能保持良好的性能。

  • 不平衡分类问题

在不平衡的数据集中,分层 K 折交叉验证通过在折中保持类别分布的比例来确保公平评估。例如,当一个类别远多于另一个类别时,这有助于预测罕见疾病。

自助法的应用

  • 置信区间估计

自助法可为均值或回归系数等度量提供置信区间。例如,它可以计算零售店平均月销售额的 95% 置信区间。

  • 评估模型的稳定性

通过生成重采样数据集,自助法评估模型或参数预测的稳定性。例如,它可以分析逻辑回归模型系数预测客户流失的准确性。

  • 估计方差和偏差

可以使用自助法来估计性能度量的偏差和方差。例如,它可以计算决策树分类器中偏差和方差之间的权衡。

  • 小型数据集分析

对于小型数据集,当无法将数据分割成训练集和测试集时,自助法非常有用。例如,通常用于分析少数参与者进行临床试验的数据。

混合方法

  • 自助法中的聚合交叉验证

这种方法通过结合交叉验证和自助法来生成模型性能的稳健估计。首先,从数据集中提取多个自助样本。然后,对每个自助样本应用交叉验证。最后,通过组合每次评估的性能特征来产生平均估计。这种方法在测量模型性能和降低方差方面效果很好,因此特别适用于小型数据集或方差较大的数据集。

  • 估计自助法交叉验证误差

在此混合方法中,模型在原始数据或袋外(OOB)集上进行验证,该方法使用自助样本进行训练。为了计算方差或平均验证误差等聚合度量,此过程对多个自助样本重复进行。通过确保每个数据点都对训练和验证做出贡献,此方法最大限度地利用了数据并产生了稳健的误差估计。

  • CV-Bootstrap,或交叉验证自助法

在此方法中,交叉验证是计算每个折的残差的第一步。然后对残差进行自助法处理,以比较预测变异性。基于残差的自助法在需要模型预测的稳健置信区间时可能很有用,因为它能够对预测不确定性进行彻底的评估。

  • 装袋交叉验证 (Bagging Cross-Validation)

交叉验证的每个折使用装袋(bagging),也称为自助聚合(bootstrap aggregating),以进一步降低方差。为每折生成训练集的多个自助样本。通过平均在每个样本上训练的模型预测来创建集成。然后使用该折的验证集来验证该集成模型。通过结合交叉验证和装袋的优点,该过程产生了更可靠的性能得分,尤其是在集成方法中。

关于自助法和交叉验证的常见误解

  • 交叉验证过程永不会导致过拟合

误解:交叉验证确保模型不会过拟合。

事实:交叉验证通过评估模型在未见过的数据上的性能来帮助发现评估过程中的过拟合。然而,它并不能自动阻止过拟合。为了减少过拟合,需要进行适当的调优、正则化和控制模型复杂度。

  • 自助法完美地反映了总体

误解:自助法完美地反映了总体分布。

事实:自助法假设数据集代表总体。如果自助样本包含有偏差或不具代表性的数据集,则可能导致错误的结论。

  • 大型数据集不需要交叉验证和自助法。

误解:对于大型数据集,交叉验证和自助法是多余的。

事实:即使大型数据集可以最小化方差,交叉验证和自助法在理解模型性能、变异性和置信区间方面仍然很有用。无论数据集的大小如何,它们对于彻底的模型评估至关重要。

  • 留一法交叉验证 (LOOCV) 总是更好的选择

误解:由于 LOOCV 使用的数据用于训练最多,因此它是最佳选择。

事实:LOOCV 在计算上可能非常耗时,并且容易导致误差估计的过度波动,尽管它使用了几乎所有数据进行训练。其他方法,如 K 折交叉验证,通常能在较低的计算成本下获得更可靠的结果。