分类算法 -- 集成学习bagging算法(理论介绍)以及bagging和Adaboost的区别
在前一篇中,我们介绍了集成学习中的Adaboost算法。本文中,我们将介绍集成学习中另一个很有名的算法----bagging算法。
算法步骤
bagging算法在原理上比Adaboost算法要更加简单。
Step 1: 通过自助法(有放回抽样)生成k个数据集,即在所有的样本中通过有放回的随机抽样,生成k个数据集。
Step 2: 对这k组数据集分别进行训练,从而得到k个分类器
Step 3: 将这k个分类器组合到一起,各个分类器的权重相同,从而得到最终的分类器。
算法详解
Step 1 值得关注的有
- 自助法详解
- 假设在原始数据集中共有n个样本,则我们选取的每一个数据集都要有n个数据。
- 通过有放回抽样的方式抽取数据,会导致数据集中有重复的数据,这是正常的。
- 在每一次抽取中,大概会有35%(计算过程详见上述文档:自助法详解)的数据没有被选到。这部分数据可以用来测试模型的泛化能力。 Ps:很多教程都会告诉你会有36.8%的数据没有选到,但是这是在 的时候。
- 通过这种方式抽取的k个数据集是相互独立的
Step 2 值得关注的有:与Adaboost算法不同的是,k个分类器的训练没有先后主次之分。
Step 3 值得关注的有:与Adaboost算法不同的是,在将这k个分类器组合的过程中,我们使用的权重是完全相同的。
Adaboost与bagging算法的区别
Adaboost | bagging | |
---|---|---|
数据集 | 只有一个数据集,但是在不同的迭代过程中,权重是有区别的 | 通过自助法生成了k个数据集 |
数据 | 在每一次迭代中,不同观测的权重不同,上一次判断错误的样本在本次迭代中权重相对较高 | 在每一个数据集中,各个观测的权重都相同 |
结合策略 | 不同的学习器在最终的强学习器中的权重不同,错误率越低的学习器,其权重越高 | 不同的学习器的权重相同 |
训练过程 | 迭代是有先后顺序的,本次迭代过程需要依赖上一次迭代过程 | k个弱学习器的训练是可以同时进行的,他们是相互独立的 |