机器学习中的装袋,提升和堆叠


Answers:


252

所有这三种都是所谓的“元算法”:将几种机器学习技术组合到一个预测模型中的方法,以减小方差(装袋),偏差(提升)或提高预测力(堆叠别名集合)。

每个算法都包含两个步骤:

  1. 在原始数据的子集上生成简单ML模型的分布。

  2. 将分布组合成一个“汇总”模型。

这是这三种方法的简短说明:

  1. 装袋(代表 ootstrap此Agg regat荷兰国际集团)是一种方法,通过使用从原始数据集生成用于训练的附加数据到降低你的预测的方差与重复的组合,以产生多集相同的基数/大小作为原始数据。通过增加训练集的大小,您不能提高模型的预测力,而只能减小方差,将预测范围缩小到预期结果。

  2. 提升是一种两步式方法,其中首先使用原始数据的子集来生成一系列性能平均的模型,然后通过使用特定成本函数(=多数票)将它们组合在一起来“提升”其性能。与装袋不同,在经典的提升中,子集的创建不是随机的,并且取决于先前模型的性能:每个新的子集都包含(可能被)先前模型错误分类的元素。

  3. 堆叠类似于提升:您还可以将多个模型应用于原始数据。但是,这里的区别在于,您不仅仅具有权函数的经验公式,而是引入了元级别,并使用另一种模型/方法来估计输入,并且使用每个模型的输出来估计权重,或者换句话说,要确定哪些模型在输入数据方面表现良好,哪些模型表现不佳。

这是一个比较表:

比较表

如您所见,所有这些都是将几种模型组合成更好模型的不同方法,这里没有一个赢家:一切都取决于您的领域和您打算做什么。你还可以把堆积作为一种更进步的助推然而,找到适合您的元级的好做法的难度,难以在实际中应用这种方法。

每种的简短示例:

  1. 套袋臭氧数据
  2. 增强:用于提高光学字符识别(OCR)的准确性。
  3. 堆叠:用于医学中癌症微阵列的分类

8
看来您的提升定义不同于wiki(您链接了)或本文中的定义。他们两个都说在提升下一个分类器时使用了先前训练过的结果,但是您没有提到。另一方面,您描述的方法类似于投票/模型平均技术。
亚历山大·罗丹

2
@ a-rodin:感谢您指出这一重要方面,我完全重写了本节以更好地反映这一点。关于第二点,我的理解是,加薪也是一种投票/平均,还是我理解你错了?
亚历山大·加尔金

@AlexanderGalkin在评论时,我想到了梯度增强:它看起来不像投票,而是一种迭代函数逼近技术。但是,例如AdaBoost看起来更像是投票,所以我不会对此进行争论。
亚历山大·罗丹

3
在您的第一句话中,您说助推器会降低偏差,但在比较表中,您会说它会增强预测力。这些都是真的吗?
本·林赛

68

套袋

  1. 并行集成:每个模型都是独立构建的

  2. 旨在减少差异而不是偏见

  3. 适用于高方差低偏差模型(复杂模型)

  4. 基于树的方法的一个示例是随机森林,它可以开发完全生长的树木(请注意,RF修改了生长过程以减少树木之间的相关性)

提升

  1. 顺序集成:尝试添加新模型,这些模型在以前的模型缺乏的情况下效果很好

  2. 旨在减少偏差而不是方差

  3. 适用于低方差高偏差模型

  4. 基于树的方法的一个示例是梯度增强


5
评论每个观点以回答为什么如此以及如何实现将对您的回答有很大的改善。
蒂姆

2
您是否可以共享任何说明提升差异和如何实现差异的文档/链接?只想更深入地了解
GeorgeOfTheRF 2015年

1
谢谢蒂姆,我稍后会添加一些评论。@ML_Pro,从增强过程(例如cs.cornell.edu/courses/cs578/2005fa/…的第23页)来看,增强可以减少偏差。
yuqian 2015年

43

只是为了详细说明于谦的答案。套袋背后的想法是,当您使用非参数回归方法(通常是回归树或分类树,但几乎可以是任何非参数方法)进行过度投资时,您倾向于趋于高方差,而没有(或低)偏倚部分/方差折衷。这是因为过拟合模型非常灵活(如果有相同样本的话,对相同样本的许多重采样具有较低的偏差),但变异性较高(如果我收集样本并过拟合,而您收集样本并过拟合,我们结果会有所不同,因为非参数回归会跟踪数据中的噪声)。我们能做些什么?我们可以进行多次重新采样(自举),每次过度拟合,然后将它们平均在一起。这应该导致相同的偏差(较低),但可以抵消一些差异,

本质上,梯度提升可与UNDERFIT非参数回归一起使用,因为非参数回归过于简单,因此无法灵活地描述数据中的真实关系(即有偏见),但由于拟合度较低,因此方差低(您倾向于如果您收集新的数据集,将获得相同的结果)。您如何对此进行更正?基本上,如果您处于适应状态,则模型的残差仍然包含有用的结构(有关总体的信息),因此您可以使用在残差上构建的树来扩充所拥有的树(或任何非参数预测变量)。这应该比原始树更灵活。您反复生成越来越多的树,每个树在步骤k都基于根据步骤k-1的残差拟合的树被加权树扩充。这些树之一应该是最佳的 因此,您要么将所有这些树加权在一起,要么选择看起来最合适的树。因此,梯度增强是构建一堆更灵活的候选树的方法。

像所有非参数回归或分类方法一样,有时套袋或增强效果很好,有时一种或另一种方法很普通,有时一种或另一种方法(或两者)会崩溃并燃烧。

同样,这两种技术都可以应用于除树以外的回归方法,但是它们最常与树相关联,这可能是因为难以设置参数以避免避免过拟合或过拟合。


3
+1表示过拟合=方差,欠拟合=偏差参数!使用决策树的原因之一是它们在结构上不稳定,因此可以从条件的细微变化中受益更多。(abbottanalytics.com/assets/pdf/...
马克·霍瓦特


3

简而言之,BaggingBoosting通常用于一种算法中,而Stacking通常用于汇总来自不同算法的几种结果。

  • 装袋引导特征和样本的子集以获取多个预测并对结果进行平均(或其他方式),例如,Random Forest消除了方差并且不存在过拟合问题。
  • Boosting:与Bagging的不同之处在于,后面的模型正在尝试学习上一个模型所产生的错误,例如GBMXGBoost,它们消除了方差,但是存在过拟合的问题。
  • 叠加:通常用于比赛中,当人们使用多种算法训练同一数据集并取平均值(最大值,最小值或其他组合)以得到更高的预测准确性时。

2

装袋和装袋都对所有步骤使用单一学习算法;但是他们使用不同的方法来处理训练样本。两者都是结合了来自多个模型的决策的整体学习方法。
套袋
1.对训练数据重新采样以获取M个子集(自举);
2.基于M个数据集(不同样本)训练M个分类器(相同算法);
3.最终分类器通过投票合并M个输出;
均匀取样重量;
分类器的权重相等;
通过减小方差减小误差
助推:这里着眼于AdaBoost算法
1开始以相等的重量为在第一轮的所有样本;
2.在接下来的M-1轮中,增加在上一轮中被错误分类的样本的权重,减少在上一轮中正确分类的样本的权重
。3.使用加权投票,最终分类器合并前一轮的多个分类器,并赋予更大的权重减少误分类的分类。
逐步重采样 每轮的权重基于上一轮的结果进行
重加权(增强)而不是重采样(装袋)。


0

套袋和提货倾向于使用许多同类模型。

堆叠结合了异类模型类型的结果。

由于没有任何一种模型类型可能适合所有分布,因此您可以了解为什么这会增加预测能力。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.