决策树介绍

      决策树是一种基本的分类与回归方法(此处以分类为例),它可以认为是定义在特征空间与类空间的条件概率分布,决策树思想,实际上就是寻找最纯净的划分方法。决策树模型不同于线性模型,线性模型是所有特征赋予不同的权值相加得到结果,而决策树则是单个特征进行处理,每一步寻找一个最优特征进行划分。决策树与逻辑回归的不同之处也在于此,逻辑回归是根据所有特征求出概率,然后与某一阈值进行比较从而分类,而决策树每一步是通过最优特征进行划分,直到叶节点。决策树的学习过程主要包括3个步骤:特征选择、决策树的生成和决策树的剪枝。常用的算法有ID3算法、C4.5算法以及CART算法。后面会一一介绍这些算法。

1.决策树模型

       决策树定义:分类决策树模型是一种描述对实例进行分类的树形结构。决策树由结点和有向边组成,结点有两种类型:内部结点和叶结点。内部结点表示一个特征或属性,叶结点表示一个类。

       下图是一个简单的决策树,用来判断西瓜的好坏。这里只列举了简单的两个属性:色泽={灰白,浅绿},敲声={浊响,清脆}。其中,圆为内部结点,矩形为叶结点。整个判断流程是:首先看色泽,如果是灰白,则为坏瓜,如果是浅绿,则继续判断敲声,如果是浊响,则是好瓜,清脆则为坏瓜。

决策树介绍_第1张图片  

      决策树的根节点到叶节点的每一条路径构建一条规则;路径内部节点的特征对应着规则的条件,而叶节点的类对应着规则的结论。决策树学习算法通常是递归的选择最优特征,并根据该特征对训练数据进行分割,使得对各个子集数据有一个最好的分类结果。这一过程对应着特征空间的划分,也对应着决策树的构建。开始,构建根节点,将所有训练数据都放在根节点,选择一个最优特征,按照这一特征将训练数据集分割成子集,使得各个子集有一个当前条件下的最好分类。如果这些子集已经能够被基本正确分类,那么构建叶节点,并将这些子集分到对应的叶节点中去;如果还有子集不能被正确分类,那么就对这些子集继续选择最优特征,继续对其进行分割,构建相应的节点。如此递归下去,直到所有训练数据子集都被基本正确分类或者没有合适的特征为止。最后每个子集都有相应的类,这就生成了一颗决策树。

       以上方法生成的决策树很有可能发生过拟合,所以我们需要对决策树进行剪枝处理,使决策树变的简单,从而具有更好的泛化能力。

2.特征选择

       特征选择就是决定用哪个特征来划分特征空间。前面说过,决策树的思想实际上就是选择最纯净的划分方法,即选择最优的特征来得到最好的划分。那么,如何进行特征选择呢?特征选择的准则通常是信息增益、信息增益比以及基尼指数。

2.1信息增益

      首先介绍信息熵的概念。信息熵是随机变量不确定性的度量。设随机变量X,其概率分布为:P(X=xi)=pi,  i=1,2,3,4,......,n,则随机变量X的信息熵定义为:


定义0log0=0。熵越大,随机变量的不确定性就越大。条件熵H(Y|X)表示已知随机变量X的条件下随机变量Y的不确定性。其定义为:


即为X给定条件下,Y条件概率分布的熵对X的数学期望。

       信息增益表示得知特征X的信息而使类Y的信息不确定性减少的程度。假设D为训练数据集,A为其中一特征,则特征A对训练数据D的信息增益g(D,A)定义为:


H(D)表示对数据集D进行分类的不确定性,H(D|A)表示在特征A给定的条件下对数据集D进行分类的不确定性。则他们的差即信息增益g(D,A)表示由于特征A给定而使对数据集D的分类的不确定性减少程度。信息增益越大,表示该特征具有更强的分类能力。

       根据信息增益准则选择特征的方法是计算每个特征的信息增益,选择信息增益最大的特征进行分类。设训练数据集为D, |D|为样本容量,有K个类为, k=1,2,3......K, 为属于类的样本个数。特征A有n个不同的取值{a1,a2, ...... an},则,根据特征A可将训练集D划分为n个子集D1,D2,......Dn, |Di|为第i个样本的数量,设子集Di中属于类的样本的集合为,即, 的样本个数,则信息增益算法如下:

输入:训练数据集D和特征A;

输出:特征A对训练数据集D的信息增益。

1.计算H(D)


2.计算H(D|A)


3.计算g(D|A)

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

       事实上以信息增益作为划分依据存在这样一个问题:信息增益准则偏向于取值较多的特征,为了减少这种偏向可能带来的不利影响,可以使用信息增益比进行划分。

2.2信息增益比

      特征A对训练数据集D的信息增益比定义为其信息增益g(D,A)与训练数据集D关于特征A的值熵之比,即

其中,  n为特征A取值的个数。需要注意的是,信息增益率准则对可取值数目较少的特征有所偏好,故有时候不是直接选择增益率最大的划分数据集,而是先找出信息增益高于平均水平的特征,然后,再从中选择增益率最高的特征用于划分。

2.3基尼指数

       分类问题中,假设有K个类,样本点属于第k个类的概率为pk,则概率分布的基尼指数定义为:


对于给定的样本集合D, 其基尼指数为:


Ck是D中属于第k类的样本子集,K是类个数。基尼指数越大,样本的不确定性越大。如果样本集合D根据特征A是否取某一值a被分割成D1和D2两部分,则在特征A的条件下集合D的基尼指数定义为:


3.决策树生成

        决策树生成算法主要有ID3、C4.5和CART算法,分别根据上面的特征选择方法进行特征选择。这里先介绍ID3算法和C4.5算法,CART算法后面单独介绍。

3.1 ID3算法

       ID3算法是应用信息增益准则选择特征,递归的构建决策树。具体过程是:先从根节点开始,计算所有可能特征的信息增益,选择信息增益最大的特征为结点特征进行划分,由该特征的不同取值将数据集划分为多个子集,建立子结点,在对子结点递归的调用以上方法,构建决策树;指导所有特征的信息增益很小或没有特征可以选择为止。

 ID3算法:

  • 输入:训练集D, 特征集A, 阈值a
  • 输出:   决策树T

   1.若D中所有实例都属于同一类Ck, 则T为单结点树,并将类Ck作为该结点的类标记,返回T;

   2. 若A为空集,则T为单结点树,并将D中实例数最大的类Ck返回作为该结点的类标记,返回·T;

   3. 否则,计算A中各特征对D的信息增益,选择信息增益最大的特征A1,记为g(D,A1);

   4. 如果g(D,A1)

   5. 否则,根据A1的取值,将D分为若干非空子集Di, 将Di中实例数最大的类作为标记,构建子结点,由结点及子结点构建树T,返回T;

   6. 对第i个子结点,以Di为训练集,A-{A1}为特征集,递归的进行1~5

 以周志华老师《机器学习》里西瓜数据集2.0为例,介绍ID3算法。

决策树介绍_第2张图片

数据集如图所示,特征集A={色泽, 根蒂, 敲声, 纹理, 脐部, 触感}

1.数据集D有好瓜和坏瓜,不属于同一类;

2.A不是空集;

3.信息增益计算,色泽特征为例,色泽A1={青绿, 乌黑, 浅白},记D1={色泽=青绿},D2={色泽=乌黑},D1={色泽=浅白}

上图数据集,记p1=8/17, p2=9/17, 分别是好瓜的比例和坏瓜的比例,由式(4)得, 根据D1,D2,D3定义知:D1={1, 4, 6, 10, 13, 17} 好瓜p1=3/6, 坏瓜p2=3/6;D2={2, 3, 7, 8, 9, 15} 好瓜p1=4/6, 坏瓜p2=2/6;D3={5, 11, 12, 14, 16} 好瓜p1=1/5, 坏瓜p2=4/5。则由式(5)得: 由式(6)得:

gain(D,A1)= H(D)-H(D|A1)=0.109,同理得:gain(D,根蒂)=0.143,gain(D,敲声)=0.141, gain(D,纹理)=0.381,gain(D,脐部=0.289,gain(D,触感)=0.006,特征纹理对应的信息增益最大,故根据纹理划分数据集得如下树:决策树介绍_第3张图片

然后继续计算gain(D1,A-{纹理}),gain(D2,A-{纹理}),gain(D3,A-{纹理})重复上述步骤,最终得到决策树如下:

决策树介绍_第4张图片

3.2 C4.5算法

  C4.5算法与ID3类似,只是C4.5是用信息增益比来选择特征的,这里不再累述。

4.剪枝

       剪枝是决策树算法处理过拟合的主要方法。分为预剪枝和后剪枝。预剪枝是自上而下的剪枝,是在决策树生成过程中,对每个结点进行估计,若当前结点的划分不能带来决策树泛化性能的提升,则停止划分并将当前结点标记为叶节点;后剪枝是自下而上的剪枝,是先训练出一颗完整的决策树,然后自下而上的考察非叶节点,若将非叶节点替换为叶节点能带来泛化性能的提升,则将该结点设为叶节点。


你可能感兴趣的:(机器学习,深度学习,Python)