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数据集。

from sklearn.ensemble import VotingClassifier

from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.svm import SVC

from sklearn.metrics import accuracy_score
from sklearn.datasets import make_moons
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
X,y = make_moons(n_samples=7000,noise=0.1)

接下来数据集分割

X_train, X_test, y_train, y_test = train_test_split(X, y , test_size=0.25, random_state=42)

我们进行了三个基本的基分类器。

  • 逻辑回归

  • 决策树

  • SVM

lr = LogisticRegression()
dt = DecisionTreeClassifier()
svm = SVC()

定义硬投票分类器:

voting = VotingClassifier(
    estimators=[('lr',lr),('rf',dt),('svc',svm)],
    voting='hard'#还有soft
)

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

定义软投票分类器 :

voting = VotingClassifier(
    estimators=[('lr',lr),('rf',dt),('svc',svm)],
    voting='soft'
)

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特征向量来表示,将所有的特征点的随机森林都连接到一起,生成一个全局特征,后续过程就可以使用该全局特征做全局线性回归了。

这里面的分类模型要一样,如果是决策树那么组合在一起的时候就是随机森林。

from sklearn.ensemble import VotingClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.ensemble import BaggingClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC
from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score
from sklearn.model_selection import train_test_split
import numpy as np

我们使用load_iris()鸢尾花数据

iris = load_iris()
X = iris.data
y = iris.target

设置基分类SVM,抽取了500个样本,进行有放回抽样。

bag_clf = BaggingClassifier(
    SVC(),
    n_estimators=500, max_samples=1.0, bootstrap=True, n_jobs=-1
    # ,oob_score=True
)

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

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

关注下方【学姐带你玩AI】🚀🚀🚀

回复“机器学习”领取必读书籍PDF+免费课件

码字不易,欢迎大家点赞评论收藏!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值