摘要:集成学习算法:bagging、随机森林、AdaBoost、Stacking、Voting算法
集成学习
集成学习就是组合多个学习器,最后可以得到一个更
好的学习器。
集成学习算法:
个体学习器之间不存在强依赖关系,装袋(bagging)
随机森林(Random Forest)
个体学习器之间存在强依赖关系,提升(boosting)
Stacking
bagging
- 一种有放回的抽样
1 | """ |
1 | 每次运行结果都不一样的 |
随机森林(RF)
RF = 决策树+Bagging+随机属性选择
RF算法流程
样本的随机:从样本集中用bagging的方式,随机选择n个样本。
特征的随机:从所有属性d中随机选择k个属性(k<d),然后从k个属性中选择最佳分割属性作为节点建立
CART决策树。
重复以上两个步骤m次,建立m棵CART决策树。
这m棵CART决策树形成随机森林,通过投票表决结果,决定数据属于哪一类。
一般来说,随机森林的效果要比决策树好,所以选随机森林
1 | """ |
1 | 0.7333333333333333 |
图见程序运行结果
每次结果均不一样
AdaBoost算法
AdaBoost是英文“Adaptive Boosting”(自适应增强)的缩写
将学习器的重点放在“容易”出错的样本上。可以提升学习器的性能
换而言之,误差率低的弱分类器在最终分类器中占的权重较大,否则较小。
也就是把重点放在错误率高的样本,不断纠正
1 | """ |
1 | 0.701 |
- 发现准确率高了很多
Stacking 算法
- 有初级和次级分类器
pip3 install mlxtend -i https://pypi.tuna.tsinghua.edu.cn/simple
1 | """ |
1 | Accuracy: 0.91 [KNN] |
- 有时候效果会比单个分类器的好
Voting算法
- 和Stacking的建模过程类似
- 但是没有次级分类器
1 | """ |
1 | Accuracy: 0.91 [KNN] |
- 可以看到比单个分类器的效果好!