分类算法 -- 集成学习bagging算法(理论介绍)以及bagging和Adaboost的区别

       在前一篇中,我们介绍了集成学习中的Adaboost算法。本文中,我们将介绍集成学习中另一个很有名的算法----bagging算法。


算法步骤

bagging算法在原理上比Adaboost算法要更加简单。

Step 1: 通过自助法(有放回抽样)生成k个数据集,即在所有的样本中通过有放回的随机抽样,生成k个数据集。

Step 2: 对这k组数据集分别进行训练,从而得到k个分类器

Step 3: 将这k个分类器组合到一起,各个分类器的权重相同,从而得到最终的分类器。

分类算法 -- 集成学习bagging算法(理论介绍)以及bagging和Adaboost的区别


算法详解

Step 1 值得关注的有

  1. 自助法详解
  2. 假设在原始数据集中共有n个样本,则我们选取的每一个数据集都要有n个数据。
  3. 通过有放回抽样的方式抽取数据,会导致数据集中有重复的数据,这是正常的。
  4. 在每一次抽取中,大概会有35%(计算过程详见上述文档:自助法详解)的数据没有被选到。这部分数据可以用来测试模型的泛化能力。 Ps:很多教程都会告诉你会有36.8%的数据没有选到,但是这是在 nn \rightarrow \infty的时候。
  5. 通过这种方式抽取的k个数据集是相互独立的

Step 2 值得关注的有:与Adaboost算法不同的是,k个分类器的训练没有先后主次之分。

Step 3 值得关注的有:与Adaboost算法不同的是,在将这k个分类器组合的过程中,我们使用的权重是完全相同的。


Adaboost与bagging算法的区别

Adaboost bagging
数据集 只有一个数据集,但是在不同的迭代过程中,权重是有区别的 通过自助法生成了k个数据集
数据 在每一次迭代中,不同观测的权重不同,上一次判断错误的样本在本次迭代中权重相对较高 在每一个数据集中,各个观测的权重都相同
结合策略 不同的学习器在最终的强学习器中的权重不同,错误率越低的学习器,其权重越高 不同的学习器的权重相同
训练过程 迭代是有先后顺序的,本次迭代过程需要依赖上一次迭代过程 k个弱学习器的训练是可以同时进行的,他们是相互独立的