首页 > 技术文章 > 机器学习实战之决策树(一)

shuangcao 2019-08-14 15:19 原文

 

决策树需要掌握的知识点

1 决策树原理

适用场景:决策树能够生成清晰的基于特征选择来生成不同预测结果的树状结构,如果希望更好的理解手上的数据,可以使用决策树。在实际应用中,决策树更大的用处是作为一些更有用算法的基石,比如随机森林。

2 决策树的优缺点(理解)

优点:(1)计算复杂度不高(以ID3为例,每次计算都是基于每一列特征,特征计算完以后,下次计算不考虑该列特征,并且可以通过剪枝降低复杂度)

(2)对中间值的缺失不敏感

(3)可以处理不相关特征数据,是基于每一列特征来计算,不考虑特征之间的依赖关系

3 决策树算法种类

(1)ID3

 (a)没有考虑连续特征,比如长度,密度都是连续值,无法在ID3上使用,如果要使用,要将连续数据离散化

   (b)对缺失值的情况没有考虑

 (c)偏向于多值属性,例如,如果存在唯一标识属性ID(每一个样本的ID属性值都不相同),则ID3会选择它作为优先分裂属性,这样使得数据划分非常纯净,但这种分类没有什么用处

 (d)没有考虑过拟合问题

(2)C4.5

 (a)以基于信息增益的增益率为作为树的分裂标准,解决了ID3偏向多值属性问题

 (b)内部考虑了连续数据离散化过程,克服了ID3不能处理连续特征的问题

   (c)对缺失值可以自动处理

(3)CART(分类和回归树算法)

  ID3和C4.5只能处理分类问题,CART既可以处理分类问题,又可以处理回归问题

4 信息熵的深入理解

  划分数据集的大原则是:将无序的数据变得更加有序。组织杂乱无章的数据的一种方法就是使用信息论度量信息,可以在划分数据之前或之后使用信息论量化度量信息的内容

(1)信息的定义

  如果待分类的事务可能划分到多个分类之中,则符号xi的信息定义为 l(xi) = -log2p(xi p(xi)表示xi划分到该类的概率

(2)熵的概念

  熵又叫做香农熵,经验熵,是信息的期望值,表示所有类别所有可能值包含的信息期望值,熵度量了事物的不确定性,越不确定的事物,它的熵就越大,熵公式如下:

     n代表x的n种不同的离散取值,p代表x取i的概率。

  当熵中的概率由数据估计得到时,所对应的熵为经验熵,数据估计是概率通过样本个数计算出来的,例如D表示样本容量,设有k个类,ck表示属于类k的样本个数,经验熵为

例如:15个数据中,9个数据表示放贷,6个数据为不放贷,则数据的经验熵:

(3)深入理解

  信息熵用于度量信息的混乱程度,信息越混乱,说明能够包含的信息量越多,则熵越大。信息越有序,说明包含的信息量越少,则熵越小,例如一条直线,包含的信息太少了,则熵越小。

  在数学上,对于任意一个向量,对其计算信息熵,可以证明出,当向量中的值都相同时,其熵最小。

5 信息增益

   (a)在划分数据集之前之后信息发生的变化。

   (b)用于度量一个随机变量中包含的关于另一个随机变量的信息量

   (c)一个随机变量由于已知另一个随机变量而减少的不肯定性

   (d)一个随机变量的引入导致了另一个随机变量的混乱性变化

   (e)信息增益是特征选择的重要指标,它定义为一个特征能够为分类系统带来多少信息,带来的信息越多,说明更容易分类,该特征比较重要,相应的信息增益也就越大。

   (f)构造决策树时,以信息增益最大的那个特征作为根节点

  信息增益公式:

   D表示标签对应的列向量,A表示某一列的特征值,g表示信息增益,要使信息增益变大(数据划分前,划分后信息变化比较大),H(D|A)(条件熵)最小,熵越小,数据越不混乱,说明引入的A特征对最终分类贡献比较大,容易将类别分开,A特征比较重要。

   信息增益具体例子:

  比如我们有15个样本D,输出为0或者1。其中有9个输出为1, 6个输出为0。 样本中有个特征A,取值为A1,A2和A3。在取值为A1的样本的输出中,有3个输出为1, 2个输出为0,取值为A2的样本输出中,2个输出为1,3个输出为0, 在取值为A3的样本中,4个输出为1,1个输出为0.

5/15:取值为这个特征的样本数/当前样本总数

 

6 决策树C4.5算法

  1.处理连续特征

   将连续的特征离散化。

  将这些特征值从小到大排序,求相邻两个点的中点值,以这些中心点的值作为划分的依据,比如该类特征有n种值,那么中心点有n-1个,分别计算这些点作为二元分类点(分为两类)的信息增益,选择信息增益最大的点作为该连续特征的二元离散分类点。假设有一中点为a,它的信息增益最大,大于a的值为类别1,小于a的值为类别2。

  note:与离散属性的不同之处

  如果当前属性为连续属性,则该属性还可以参与子节点的选择过程

  2.处理信息增益偏向多值属性问题

  C4.5引入了信息增益比,它是信息增益与特征熵的比率

  特征熵是从特征的角度考虑,信息熵从输出结果的角度考虑

  特征熵:

   

   n表示类别个数,D表示样本总个数,Di表示第i类的样本个数,类别越多熵越大,分母越大,信息增益比越小,很好的解决了ID3趋向多值属性的问题。

  3.处理缺失值

  主要解决两个问题,一是在样本某些样本缺失属性的情况下选择划分属性,二是对缺失这些属性的样本的处理。

   第一个问题:对于某个有缺失值的特征A。C4.5的思路,将数据集划分为两部分,对每个样本设置一个权重参数,把数据划分为两部分,有特征A的样本为数据集data1,无特征A的样本为数据集data2。针对data1(不缺失特征),计算A特征的各个特征值信息增益,再计算特征熵,此时要乘上权重值(例如某一类别的样本数是10,但是由于权重是0.5,所有的计数都要先乘以权重),接着计算信息增益比,最后乘上无缺失特征A的样本所占总样本的比例。

   第二个问题:将缺失的样本同时划入所有的子节点,将该样本的权重按子节点样本的数量比例来分配。例如,对于缺失特征A的样本a来说,它的权重计算如下:假设特征A有三种取值,A1,A2,A3无缺失A特征的样本个数分别为3,4,5,将样本a同时划入到3个子节点中,对应的权重分别为3/12,4/12,5/12。

  4.C4.5引入了正则化系数进行初步的剪枝

7 C4.5算法的不足

  1.决策树容易出现过拟合,因此有必要对生成的树进行剪枝,主要思路有两种。一种是预剪枝,在生成决策树的时候考虑是否剪枝,第二种是后剪枝,生成决策树之后,通过交叉验证来剪枝。

  2.C4.5生成的是多叉树,一个父节点可以有多个节点。在树中,二叉树模型的运算效率比多叉树高,将多叉树转换成二叉树效率会提高。

  3.使用范围局限,只适用于分类。

  4.使用了熵模型,存在大量的对数运算和排序运算(特征为连续值),会比较耗时。

8 CART(分类和回归树算法)最优特征选择方法

  特征选择即选择最优划分属性,从当前数据的特征中选择一个特征作为当前节点的划分标准,希望在不断的划分过程中,决策树的分支节点所包含的样本尽可能属于同一类,即节点的纯度越来越高。选择最优划分特征的标准不同,也导致了决策树算法的不同。

  ID3和C4.5都是基于熵模型,会涉及到大量的对数运算,CART分类树算法是基于基尼系数来代替信息增益比,基尼系数代表了模型的不纯度,基尼系数越小,则不纯度越低,特征越好,这和信息增益比相反

  假设有k个类别,第k个类别的概率为pk,则基尼系数的表达式为:

  如果就两个类别,第一个类别的概率为p,第二个类别的概率为(1-p)则基尼系数为:

 

   对于给定的样本D,假设有k个类别,第k个类别样本的数量为ck,则样本D的基尼系数为:

   对于样本D,如果根据特征A的某个值,将样本分成D1,D2两部分,则在特征A的条件下,D的基尼系数表达式为:

  

   CART算法是使用的是基尼系数来选择决策树的特征,CART分类树算法每次仅仅对某个特征值进行二分,不是多分,CART算法建立起来的是二叉树,这样一来可以简化基尼系数的计算,建立二叉树模型。

9 CART(分类和回归树算法)对连续特征和离散特征的处理

  CATR将连续特征离散化,度量方式使用基尼系数。

  比如:m个样本的连续特征A有m个值,从小到大排序为a1,a2,...am,相邻两个取中点,有m-1个值,将这些值依次作为分割点,第i个中点为

  大于中点为类别1,否则为类别2,各自计算这些点的基尼系数,最后选择基尼最小的中点值作为划分节点

  对于离散值,不停的进行二分类。

  在ID3或C4.5中,比如特征A有三种取值,分别是a1,a2,a3,在以特征A为划分节点的树上,会产生3个分支,然而在CART算法中,每次都是二分类,所以会生成{a1,a2}和{a3},{a1,a3}和{a2},{a2,a3}和{a1},分别计算这些组合的基尼系数,选择最小的基尼系数对应的组合,在划分的结果中,如果没有把特征A的取值完全分开,在子节点中会继续选择特征A进行划分。在ID3中,一个特征只会参与一次节点的建立。

10 CART(分类和回归树算法)建立算法的具体流程

  input:训练集D,基尼系数阈值,样本个数阈值

  output:决策树T

  从根节点开始,递归建立CART树

  1.如果当前节点的样本个数小于阈值,则返回决策子树,停止递归。

  2,计算当前节点的样本的基尼系数,如果小于基尼系数的阈值,则返回决策子树,停止递归

  3.计算当前节点现有的各个特征的各个特征值的基尼系数,(note:缺失值处理和C4.5同)

  4.在计算出来的各个特征值对数据集D的基尼系数中,选择基尼系数最小的特征A和对应的特征值a,根据这个最优特征和这个最优特征值,把数据集分成两部分D1和D2,同时建立当前节点的左右节点,左节点为D1,右节点为D2.

  5.对左右的子节点递归调用1-4,生成决策树。

对生成决策树做预测时,如果测试集中某一样本落到决策树的叶子节点上,这个节点中有多个样本,那么这个测试样本属于哪一种类别,选择这个节点中概率最大的类别。

 

11 CART(分类和回归树算法)建立算法

  回归树和分类树的区别在于样本输出,如果输出的是离散值,则为分类树,如果输出的是连续值,则为回归树。

  回归树和分类树的建立与预测的主要区别:

  1.连续值的处理方式不同

  2.决策树建立后做预测的方式不同

  对于连续值的处理,CART分类树采用的是用基尼系数的大小来度量特征的各个划分点的优劣情况,对于回归模型,采用常见的和方差的度量方式。

  回归树:遍历所有的输入变量,找到最优的切分变量和切分点s,选择第j个特征(xj:第j个特征)和它的取值s,将输入空间划分成两部分。

  如何找到最优的j和s,通过比较不同的划分的误差来得到,一个输入空间的划分的误差是用真实值和划分区域的预测值的最小二乘来衡量的,

 

   yi代表真实值,f(xi)是每个划分单元的预测值,这个值是该单元内所有样本点值的均值,(将输入空间划分了m个单元(R1,R2...Rm),其实每次都是分成两部分)即

 

   j和s的求解公式:

 

 

  R1和R2是划分后的两个区域。

   note:回归树做预测时,采用的是最终叶子的均值货值中位数来预测输出结果。

12 剪枝策略

  在剪枝时,回归树使用的是均方差,分类树使用的是基尼系数

  决策树对训练集容易过拟合,泛化能力差,因此要对决策树进行剪枝,剪枝有两种策略,一种是预剪枝(在树的生成过程中进行剪枝),另一种是后剪枝,即在决策树生成后,产生所有可能的剪枝后的CART树,然后使用交叉验证法来检验各种剪枝的效果,选择泛化能力最好的剪枝策略。CART树的剪枝策略使用的是后剪枝方法。

  CART剪枝可以分为两步,一,从原始决策树生成各种剪枝的决策树,二,用交叉验证法来检验剪枝后的预测能力,选择泛化预测能力最好的剪枝后的树作为CART树。

12.1 剪枝的损失函数度量

  在剪枝的过程中,对于任意的一棵子树T,其损失函数为:

 

   C(Tt):为训练数据的预测误差,分类树使用的是基尼系数,回归树使用的是均方差,α表示正则化参数,|Tt|表示子树T的叶子节点的数量。

  当α=0 时,原始的生成的CART树即为最优子树。当α=∞ 时,正则化强度达到最大,此时,由原始的生成的CART树的根节点组成的单节点树为最优子树。这是两种极端情况,一般的,α越大,剪枝剪的越厉害,生成的最优子树相比原生决策树就越偏小。对于固定的α,一定存在使损失函数最小的唯一子树。

12.2 剪枝的思路

  对于位于节点t的任意一子树Tt,如果没有剪枝,它的损失是

 

 

   如果将其剪掉,仅保留根节点(根节点个数为1),损失为

 

 

   比较上面两个式子,当α=0或者α很小时,

 

   当α增大到一定程度时,Cα(Tt)=Cα(T),当α继续增大时,不等式反向。将上面两个式子联立,求解α:

 

 

   Tt和T有相同的损失函数,但是T节点更少,因此可以对子树Tt进行剪枝,也就是将它的节点全部剪掉,变为一个叶子节点T 

    对于CART树的交叉验证策略,可以计算出每个子树是否剪枝的阈值α,如果把所有的节点是否剪枝的值α都计算出来,然后针对不同的α(note:一个子树对应一个α,所以会有多个α)对应的剪枝后的最优子树做交叉验证, 这样就能够找出最好的α,所对应的的最优子树作为最终结果。

12.3 剪枝算法

   input:CART树建立算法得到的原始决策树T

   output:最优子树Tα

  1.初始化 αmin = ∞,最优子树集合 w = {T}

  2.从叶子节点从下而上计算各内部节点的训练误差损失函数Cα(Tt)(回归树:均方差,分类树:基尼系数),叶子节点|Tt|,以及正则化阈值 α = min{C(T)-Cα(Tt)/(|Tt|-1),αmin},更新αmin=α 

  3.得到所有节点的α值的集合M。

  4.从M中选择最小值的αk,自上而下的的访问子树t,如果,进行剪枝,并决定叶节点t的值,如果是分类树,则是概率最高的类别,如果是回归树,则是样本输出的均值,这样得到αk对应的最优子树Tk

  5.最优子树集合w=w∪Tk,M = M-{αk}

  6.如果M不为空,则回步骤4,否则就得到了所有的可选的最优子树的集合W

   7.使用交叉验证法在W上选择最优子树Tα。

13 决策树算法小节

算法 支持模型 树结构 特征选择 连续值处理 缺失值处理 剪枝
ID3 分类 多叉树 信息增益 不支持 不支持 不支持
C4.5 分类 多叉树 信息增益比 支持 支持 支持
CART 分类,回归 二叉树

分类:基尼系数

回归:均方差

支持 支持 支持

 

 

  

 

 

 

    

 

 

  

 

 

 

 

 

 

 

 

 

 

 

 

推荐阅读