随机森林

目录

 

1.集成学习

1.1 boosting

2.2 bagging

2.随机森林

2.1 熵

2.2 信息增益

2.3 信息增益比

2.4 剪枝    

2.5. 随机森林的随机性

2.6 随机森林构建


1.集成学习

    随机森林属于机器学习中集成学习的范畴,所谓集成学习就是将一些简单的机器学习模型组合起来使用,最终得到一个强大的模型。

                                                             

    集成学习主要有boosting和bagging两种算法,下面对这两种算法进行一些简单的介绍。

1.1 boosting

    boosting可以理解为“”知错能改善莫大焉“”,它的工作流程可以用下面一个示意图来简单描述:

                 

    这是一个分类器,第一轮分类的结果我们可以看到有两个蓝色的数据和一个红色的数据分类错误,然后下一轮训练的时候,我们会增大分类错误的数据的权重,可以理解为让模型重点关注这些错误的数据,当然对于分类正确的数据我们也应该缩小它们的权重,上图并没有很好的体现这一点。然后我们每一轮训练都会根据分类的结果,调整数据集中数据的权重,这样经过多轮训练之后,我们就会得到一个比较完美的模型。

2.2 bagging

    bagging是boostrap aaggregation的缩写,boostrap是统计学中的概念,表示又放回的抽样,这一过程可以通过下面这个例子很好的理解: 

       

    原始数据集有3个数据,我们每次从里面抽取一个数据,抽取完之后再将它放回到原始数据集中,这样抽样3次之后机会得到一个与原始数据集大小相同的数据集1。因为是又放回的抽样,所以可以看到数据集里面可能会有两个样本1,并且没有样本3。我们可以用这样方法构建多个不同的数据集对我们的模型进行训练。

    bagging的整个训练过程可以用下面这个示意图来表示:

         
 

  上图中有4个模型,Dataset代表数据集里面的数据,output代表这个模型的输出,它们采用voting的方法将所有模型的结果整合起来得到最终的输出(voting我们可以理解为我们投票,少数服从多数,票数最多的为最终的结果)。4个模型3个输出为-1,所以模型最终的输出就为-1,这可以理解为“三个臭皮匠赛过诸葛亮”。bagging方法最典型的代表就是本章要用到的随机森林,下一章我们来详细介绍它。

2.随机森林

    随机森林是由多棵决策树组合而成的,是多个弱分类器组成强分类器的典型代表。要了解随机森林,首先需要了解决策树的概念,我们用一个例子来讲解什么叫做决策树。

    这是一个程序员相亲的例子,可能有多个条件来决定相亲对象要不要去见这个程序员,相亲对象的决定过程我们可以用下面一棵树来表示:

                          

    上面就是一棵决策树,决策树在逻辑上以树的形式存在,包含根节点,内部节点和叶子节点。

根节点:包含数据集中的所有数据的集合。

内部节点:每个内部节点为一个判断条件,并且包含数据集中满足从根节点到该节点所有条件的数据集合。

叶子节点:叶子节点为最终的的类别。

    如何构造一棵决策树,难点在于内部节点的选择顺序。就像上面的例子,我们怎么知道我们要先看高不高这个条件,为什么不先看帅不帅呢?不同条件的选择顺序,构造出来的树也会截然不同,所以我们需要一个衡量标准,来计算不同特征进行分支选择后的分类情况,简单点说就是我们需要一个衡量标准来帮助我们先选哪个特征后选哪个特征对数据集进行分类。

    这个衡量标准就是熵。

2.1 熵

    熵:表示随机变量不确定性的度量。

    这个概念听起来很抽象,简单点说熵表示的就是物体内部的混乱程度。比如小卖部什么商品都卖,它就比较混乱。而专卖店只卖一个牌子的商品,它就比较稳定。所以小卖部的熵就要比专卖店的熵值要高。

    如果Pi表示某时间发生的概率,随机变量X的熵就表示为

    H(X) = -\sum_{i}^{n}p_{i} log_{2}p_{i}

    Eg:

    A = {1,1,1,1,1,2}        H(A) = -5/6 *log_{2}5/6 - 1/6 * log_{2}1/6

    B = {1,2,3,4,5,6}        H(B) = (-1/6 * log_{2}1/6) * 6

    显然A集合的熵要低。A集合只有2个类别,B集合有6个类别。B集合的熵值大于A集合,所以A集合要比B集合稳定。

    有了对熵的了解之后,我们接着引入信息增益的概念。

2.2 信息增益

    信息增益:表示特征X使得类Y的不确定性减少的程度。

    g(D,A) = H(D) - H(D|A)

    信息增益的具体计算步骤如下:

    输入:D表示训练集,A表示某种特征。

    Step1: 计算训练集D的经验熵H(D)

   

    Step2: 计算特征A对数据集D的经验条件熵H(D|A)

    

    Step3: 计算信息增益

   

    公式看起来总是复杂,但其实信息增益的计算十分简单,下面我们就用一个例子来进行说明。

    目标: 银行是否对客户放贷

    数据: 15个客户的个人信息

    特征: 4类,分别是年龄,是否有工作,是否有房,是否有信贷

                                      

    因为总共有4类特征,所以就有4中划分方式:

                                   

                                  

我们到底先选择哪一个特征作为根节点呢,这就要用到刚刚讲到的信息增益了。

    在15条数据中,有6个否(不贷款),9个是(贷款),所以此时训练集D的经验熵为:

    然后我们对4个特征逐一进行分析,计算它们的经验条件熵,首先是年龄特征,H(青年)里面有2个是3个否:

    中年老年以此类推。

    青年,中年,老年出现的概率分别是5/15,5/15,5/15,所以:

    最终年龄的信息增益为:
    

    同理我们可以计算得出:

      

    从信息增益中我们选择最大的也就是有无房子作为最优特征。后面以此类推,每次对数据进行划分的时候都要计算一下各个特征的信息增益,然后选最大的作为最佳特征进行分类。使用信息增益进行特征选择的方法我们成为ID3算法,但是这种算法容易偏向于选择取值较多的特征,信息增益比可以较好的校正这个问题,采用信息增益比进行特征选择的方法我们成为C4.5算法。

2.3 信息增益比

     信息增益比: 信息增益g(D,A)与训练数据集D关于特征A的经验熵H_{A}之比:

     

    g(D,A)我们上面已经计算出来了,下面来看下H_{A}如何计算,我们还是以年龄为例:

    H年龄(D)=-5/15*log_{2}5/15  -5/15*log_{2}5/15  -5/15*log_{2}5/15

    这是因为年龄有3个种类,青年,中年,老年,每个种类占总种类的5/15。

    将这个值与上面计算出的信息增益相除就得到了增益比,然后我们依次可以算出基于工作,房子,信用的增益比,选择最大的作为我们的最佳特征进行分类。各种决策树算法的不同就在于用不同的算法来决定如何选择特征。我们还可以采用基尼系数来做为特征选择的标准:

    

    这种算法我们称为CART算法。

2.4 剪枝    

    决策树的剪枝是为了解决过拟合的问题,但是随机森林算法本身是能够减少过拟合的,所以有些文章中会讲到随机森林中的决策树不做剪枝处理也可以。这边对剪枝简单做一些介绍,决策树的剪枝一般分为预剪枝和后剪枝。

    预剪枝: 限制深度,叶子节点个数,叶子节点样本数等。

    后剪枝:通过一定衡量标准:

    这里就不深入展开了,后面有机会我们再详细描述。

2.5. 随机森林的随机性

    有了前面决策树的相关知识之后,随机森林就很好理解了。随机森林就是多个决策树的组合,然后通过voting,选出最终的输出结果。如果只是简单的决策树组合,那应该直接叫做森林就好了。那随机森林中的随机体现在哪些地方呢?随机森林的随机主要体现在2个方面。

    1. 每棵决策树的训练集随机。随机森林中每棵决策树的训练集采用前面介绍的bootstrap的方式生成,因为训练集是随机放回抽样,所以我们可以说它的训练集随机。

    2.每棵决策树的特征随机,我们在训练每一棵决策树的时候,并不会采用所有的特征对它进行训练,而是随机选取一定个数的特征对它进行训练,这样每棵决策树训练的特征都不相同,这就是特征随机。

    这因为有这两个随机性,所以我们决策树组成的森林叫做随机森林。

2.6 随机森林构建

    随机森林的构建就是其中决策树的构建,树的构建通常都是一个递归的过程,决策树也是如此。它的构建过程可以看做是一个dfs遍历的过程。下面我们用一个例子来进行说明,为了便于说明,我们假设每个节点选择一个特征之后都会被分为两类。首先从根节点开始,我们给根节点编号为1,代表这个节点的构建顺序。根据信息增益比的计算,我们会选出一个特征,然后对数据集进行分类,如下图所示:

                                                                     

    然后我们先从这两个数据集中的一个数据集开始,在进行信息增益比的计算,选出最佳特征。这个地方要注意一点,我们要保证在整个决策树中从根节点到任意一个叶子节点的路径中,同一个特征只能出现一次。也就是说我们再次计算信息增益比的时候,要去掉已经在这条路径上出现过的特征,这边我们就要去掉特征1,不需要再计算特征1的信息增益比了。

                                              

    整个递归结束之后,决策树也就构建完成了。下图是构建好的一棵决策树,我们标记出了各个节点的构造顺序编号。当然既然是递归,它会有一些限制条件保证递归能够跳出结束。

                                     

    这里我列出了C4.5算法的流程,我们可以看到整个树的构建就是如上面描述的递归流程,然后它列出了一些限制条件保证递归能够结束跳出。

                   

  

    到这整个随机森林的算法我们就介绍完了,当然其中还有许多算法细节需要去仔细挖掘。这篇博客的目的是希望能够用一种简单直白的描述让大家对整个算法有一个入门的了解,有了一定概念之后大家再去研究一定会事半功倍。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值