集成学习(Ensemble Learning)——Bagging与Random Forest(1)

目录

一、什么是集成学习(三个臭皮匠顶个诸葛亮)

二、 Bagging和Boosting算法族介绍

1、Bagging(Bootstrap AGGregating, 装袋)算法族介绍

1.1 Bagging算法原理

1.2 随机森林(Random Forest, RF)= Bagging + 决策树                       ​

       1.2.1 举例解释随机森林

       1.2.2 代码实现随机森林(使用sklearn实现)


一、什么是集成学习(三个臭皮匠顶个诸葛亮)

集成学习是通过构建并结合多个学习器来完成学习任务的一类算法。

根据个体学习器(基学习器)之间是否存在强依赖关系可将集成学习分为两类:

  •  Boosting

           个体学习器之间存在强依赖关系,必须串行生成的序列化方法。

  •  Bagging

           个体学习器之间不存在强依赖关系,可同时生成的并行化方法。

二、 Bagging和Boosting算法族介绍

1、Bagging(Bootstrap AGGregating, 装袋)算法族介绍

Bagging 是一种个体学习器之间不存在强依赖关系,可同时生成的并行式集成学习方法。

1.1 Bagging算法原理

Bagging即套袋法,是一种采用自助采样法(bootstrap)的集成学习算法。自助采样法是一种有放回的抽样方法,目的为了得到统计量的分布以及置信区间,其算法过程如下:

(1)从原始样本集中抽取训练集。每轮从原始样本集中使用Bootstraping的方法抽取n个训练样本(在训练集中,有些样本可能被多次抽取到,而有些样本可能一次都没有被抽中)。共进行k轮抽取,得到k个训练集。(k个训练集之间是相互独立的)。

(2)每次使用一个训练集得到一个模型,k个训练集共得到k个模型。(注:这里并没有具体的分类算法或回归方法,我们可以根据具体问题采用不同的分类或回归方法,如决策树、感知器等)。

(3)对分类问题:将上步得到的k个模型采用投票的方式得到分类结果,若分类预测时两类获得相同票数时,最简单的方法是任选其一;对回归问题,计算上述模型的均值作为最后的结果。(所有模型的重要性相同)

Bagging算法流程请参见下图:

                                

1.2 随机森林(Random Forest, RF)= Bagging + 决策树

                          

随机森林(Random Forest,简称RF)是Bagging的一个扩展变体。RF在以决策树为基学习器构建Bagging集成的基础上,进一步在决策树的训练过程中引入了随机属性选择。

                                  

构造随机森林的4个步骤:

(1)假如有N个样本,则有放回的随机选择N个样本(每次随机选择一个样本,然后返回继续选择)。这选择好了的N个样本用来训练一个决策树,作为决策树根节点处的样本。

(2)当每个样本有M个属性时,在决策树的每个节点需要分裂时,随机从这M个属性中选取出m个属性,满足条件m << M。然后从这m个属性中采用某种策略(比如说信息增益)来选择1个属性作为该节点的分裂属性。

(3)决策树形成过程中每个节点都要按照步骤2来分裂(很容易理解,如果下一次该节点选出来的那一个属性是刚刚其父节点分裂时用过的属性,则该节点已经达到了叶子节点,无须继续分裂了)。一直到不能够再分裂为止。注意整个决策树形成过程中没有进行剪枝。

(4)按照步骤(1)-(3)建立大量的决策树,这样就构成了随机森林了。

1.2.1 举例解释随机森林

例题:根据已有的训练集已经生成了对应的随机森林,随机森林如何利用某一个人的年龄(Age)、性别(Gender)、教育情况(Highest Educational Qualification)、工作领域(Industry)以及住宅地(Residence)共5个字段来预测他的收入层次。

收入层次 :

    Band 1: Below $40,000

    Band 2: $40,000 – 150,000

    Band 3: More than $150,000

随机森林中每一棵树都可以看做是一棵CART(分类回归树),这里假设森林中有5棵CART树,总特征个数N=5,我们取m=1(这里假设每个CART树对应一个不同的特征)。

CART 1 : Variable Age

  

CART 2 : Variable Gender

   

CART 3 : Variable Education

    

CART 4 : Variable Residence

    

CART 5 : Variable Industry

   

我们要预测的某个人的信息如下:

  1. Age : 35 years ; 2. Gender : Male ; 3. Highest Educational Qualification : Diploma holder; 4. Industry : Manufacturing; 5. Residence : Metro.

  根据这五棵CART树的分类结果,我们可以针对这个人的信息建立收入层次的分布情况:

   

结论:根据以上分析,这个人的收入层次70%是一等,大约24%为二等,6%为三等,所以最终认定该人属于一等收入层次(小于$40,000)。

1.2.2 代码实现随机森林(使用sklearn实现)

from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import make_classification

X, y = make_classification(n_samples=1000, n_features=4,
                           n_informative=2, n_redundant=0,
                           random_state=0, shuffle=False)
clf = RandomForestClassifier(max_depth=2, random_state=0)
clf.fit(X, y)

print(clf.feature_importances_)#输出特征权重

print(clf.predict_proba([[0, 0, 0, 0]]))#给出带有概率值的结果。每个点在所有label的概率和为1.

print(clf.predict([[0, 0, 0, 0]]))#直接给出预测结果。内部还是调用的predict_proba(),根据概率的结果看哪个类型的预测值最高就是哪个类型.

print(clf.predict_log_proba([[0, 0, 0, 0]]))#和predict_proba基本上一样,只是把结果给做了log()处理.

感谢阅读,如果你感觉本文能帮到你,欢迎点赞、评论和收藏本文,鄙人会再接再厉,为您带来更多机器学习相关的知识分享~

下一篇将给大家介绍Boosting算法族,希望继续关注。

集成学习(Ensemble Learning)——AdaBoost(2)

更多机器学习文章分享,请关注「水木学者」:

https://zhuanlan.zhihu.com/c_1208713242417582080

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值