bagging 与交叉验证有何不同?

机器算法验证 交叉验证 引导程序 模型评估 装袋
2022-04-14 10:30:20

bagging 与交叉验证有何不同?一个包含 300 个示例的数据集可以装袋 100 个吗?这有帮助吗?

2个回答

要添加到@juampa 的答案,

bagging 和验证技术之间的最大区别在于,bagging 平均模型(或模型集合的预测)以减少预测所受的方差,同时重新采样验证(如交叉验证和自举验证)评估一个数字代理模型假设它们与在整个数据集上训练的实际模型等效(即一个好的代理)。

Bagging 使用训练数据的自举子集(即绘制替换原始数据集)来生成这样的集合,但您也可以使用通过不替换绘制生成的集合,即交叉验证:Beleites, C. & Salzer, R. :评估和改进小样本情况下化学计量模型的稳定性,Anal Bioanal Chem, 390, 1261-1271 (2008)。DOI: 10.1007/s00216-007-1818-6

集成模型能否优于单一模型,完全取决于单一模型的主要“问题”是什么。如果是方差(过拟合、随机误差、不稳定的预测),那么集成预测会有所帮助。如果问题是偏差(系统误差、欠拟合、稳定但错误的预测),几乎所有集成模型都会给出相同的预测,而集成预测同样是错误的。

out-of-bootstrap 和迭代/重复交叉验证都允许通过比较多个不同代理模型对相同输入(测试)数据的预测来衡量预测的稳定性。这些代理模型的不同之处在于它们是在略有不同的数据集上训练的,这可以描述为在任意两个代理模型之间交换一些训练案例以换取其他训练案例。


至于@juampa 提到的独立性假设,这背后有不同的主题:

  • 所有这些技术通常假设数据的拆分实现了案例之间的独立性。即,如果数据中有相同案例的重复测量,则它们都在或全部在特定的训练或测试集中。
    这是一个至关重要的假设,它允许我们假设观察到的性能可以推广到数据来自同一人群的未知案例。通常由您来确保以实现这种案例独立性的方式完成拆分:如果没有对数据的深入了解,就不可能确保这种独立的拆分。
    如果要对预测独立案例有用,则需要通过重新采样验证和集成模型来拆分为独立案例。

  • 还有另一个独立性假设有时但并不总是用于验证结果(或者更确切地说,在它们的解释过程中):

    • 对于某些任务,例如算法的一般比较,重采样验证中的代理模型有时被视为算法的独立试验。显然情况并非如此,因为模型共享大部分训练数据(除了单个 2 倍拆分)。
      这个假设是必要的,以便将这个数据集的发现推广到给定特征数据集。

    • 另一方面,如果任务是建立从手头数据集获得模型性能(例如实际用于预测),则假设代理模型有问题的模型(众所周知的重采样验证的轻微悲观偏差)然后至少在它们之间。这种观点意味着不同代理模型的训练数据被假定为独立的,而是完全相反:它们被假定为几乎相等(这是重采样过程实际产生的)。

当您使用可以实现高精度的分类器时, Bagging很有用,因为它们倾向于过度拟合(例如决策树和神经网络),但正因为如此,显示出高方差,特别是在小数据域中。然后,您生成数据的引导样本,在每个样本上训练分类器,然后使用聚合进行分类,以便您可以平均由于过度拟合导致的错误。

交叉验证是关于评估您的模型的表现如何,但您的数据有限。同样,您的估计可能不够稳健。

两者都有一个问题,即在使用时,假设每次迭代的估计(每次引导迭代产生的分类器和每个交叉验证步骤产生的分类器误差)在统计上是独立的。这不是真的。有关更多详细信息,请参见例如A Study of CrossValidation and Bootstrap for Accuracy Estimation and Model Selection and Bagging Predictors

所以是的,它们可能对您的情况有所帮助。