总结:集成学习是将若干弱分类器组合成一个强分类器。
在前一篇文章中介绍了集成学习,想必大家对集成学习的概念有所了解。
集成学习的基础算法是决策树模型,集成学习的规则有两种:Bagging和Boosting,这两个规则实则是不同弱分类器的组合方式。
1、Bagging:并行,所有弱分类器并行执行,所有分类器权重相同。 代表算法随机森林。
2、Boosting:串行,所有弱分类器串行执行,上一步的结果影响下一步的执行,每次执行对预测不对的样本分配更多的权重,使得预测错误的样本得到更多的重视。代表算法Adaboost。
在这里为大家纠正一个误区,分不清什么是决策树,什么是随机森林。其实很简单,对于集成学习,我们使用决策树算法作为集成学习的基础算法,随机森林和Adaboost只是两种规则,是对决策树不同使用方法的规则,随机森林使用决策树的规则是Bagging原理,而Adaboost使用决策树的规则是Boosting原理!
当然更改基础算法也是可以的,以Adaboost算法为例,比如我使用svm算法作为基础算法:
from sklearn.svm import SVC
#base_estimator:基分类器,默认是决策树,在该分类器基础上进行boosting,理论上可以是任意一个分类器,但是如果是其他分类器时需要指明样本权重。
ad_clf2 = AdaBoostClassifier(SVC(),n_estimators=500,algorithm='SAMME')
ad_clf2.fit(x_train,y_train)
ad_clf2.score(x_test,y_test)
最后的得分是0.43,得分不是很高。
那么我使用决策树为基础算法:
from sklearn.ensemble import AdaBoostClassifier
from sklearn.tree import DecisionTreeClassifier
ad_clf = AdaBoostClassifier(DecisionTreeClassifier(max_depth=2),n_estimators=500)
ad_clf.fit(x_train,y_train)
ad_clf.score(x_test,y_test)
最后得分为0.83,所以大家在使用时要多比较,选出最优的集成学习的基本算法。