详解2种集成学习方法:voting和bagging
来源:投稿 作者:小灰灰
编辑:学姐
目的是:多个模型来解决同一个问题就叫集成学习,个体差异,而且多样性。
按照个体生成的方式可以分成两大类:
第一个是序列化的方法(Sequential method)(一个个体的生成与前一个有着或或少的关系)是boosting。
adabost(非常精确,非常简单,理论基础深厚)
第二个是并行化的方法(Parallel method)(所有的个体都可以同时来做bagging)Bootstrap Aggregating(缩写为Bagging) ,名字来自成语“pull up by your own bootstraps”,意思是依靠你自己的资源,称为自助法,它是一种有放回的抽样方法。
还有一种划分方法是:

Boosting和Bagging通常都是使用同一种基学习器(base learner),因此我们一般称之为同质集成方法。Stacking通常都是基于多个不同的基学习器做的集成,因此我们称之为异质集成方法。
使用集成学习方法,可以提高准确率。
模拟不同分类器的集成效果,每个分类器的准确率只有51%(只比随机猜好一点),但是集成后的效果有显著提升,如果用1000个分类器,最终准确率可达75%。如果用10000个分类器,最终准确率高达97%

集成学习方法有投票Voting,Bagging,Adaboost
Voting
首先我们使用sklearn自带的make_moons数据集。

接下来数据集分割
X_train, X_test, y_train, y_test = train_test_split(X, y , test_size=0.25, random_state=42)
我们进行了三个基本的基分类器。
逻辑回归
决策树
SVM
定义硬投票分类器:

可以看到三个基分类器LogisticRegression = 0.8822857142857143,DecisionTreeClassifier = 0.9977142857142857,SVC = 1.0,三个集成起来,VotingClassifier = 0.9994285714285714。
定义软投票分类器 :

Bagging—随机森林
Bagging是一种框架算法,以随机森林(RDF)算法为代表, 采用的是随机有放回的选择训练数据然后构造分类器,最后组合。
从原始样本集中使用Bootstraping方法随机抽取n个训练样本,共进行k轮抽取,得到k个训练集。(k个训练集之间相互独立,元素可以有重复)
对于k个训练集,我们训练k个模型(这k个模型可以根据具体问题而定,比如决策树,knn等)
对于分类问题:由投票表决产生分类结果;对于回归问题:由k个模型预测结果的均值作为最后预测结果。(所有模型的重要性相同)
随机森林怎么与深度学习结合:
基于LBF方法的人脸对齐,出自Face Alignment at3000 FPS via Regressing Local Binary Features,源自于CVPR2014 ,由于该方法提取的是局部二值特征(LBF),论文作者的LBF fast达到了3000fps的速度,该算法的核心工作主要有两部分,总体上采用了随机森林和全局线性回归相结合的方法,相对于使用卷积神经的深度学习方法,LBF采用的算法是传统的机器学习方法。

通过在特征点附近随机选择点做残差来学习LBF特征,每一个特征点都会学到由好多随机树组成的随机森林,因此,一个特征点就得用一个随机森林生成的0,1特征向量来表示,将所有的特征点的随机森林都连接到一起,生成一个全局特征,后续过程就可以使用该全局特征做全局线性回归了。

这里面的分类模型要一样,如果是决策树那么组合在一起的时候就是随机森林。
我们使用load_iris()鸢尾花数据
设置基分类SVM,抽取了500个样本,进行有放回抽样。

设置基分类决策树,抽取了500个样本

Sklearn也提供了直接实现随机森林的API

关注“学姐带你玩AI”公众号
回复“机器学习”领取机器学习必读书籍PDF+免费课件