决策树算法总结(ID3,C4.5,CART)

最近,在复习一些机器学习算法,根据还是要通过归纳总结的方式来梳理,这样思维脉络才能很清晰~

 

决策树的定义:

决策树的构成——由节点和有向边组成;

节点包括根节点、(中间)内部节点和叶节点。内部节点代表一个特征或属性,叶节点代表一个类别。

 

决策树图示:

 

 

决策树学习的三个步骤:

特征选择、决策树的生成、树的剪枝

(1) 特征选择的标准: 信息增益、信息增益比、 基尼指数、 平方误差最小化;

(2)决策树的生成:根据属性(特征)找到最佳分裂点,将数据分成若干部分,递归执行上述过程,得到尽可能大的树;

(3)剪枝:得到尽可能大的树,对训练集拟合效果好,但存在较大的预测误差,导致过拟合问题,需要进行剪枝。

 

决策树中的基本概念:

(1):度量了事物的不确定性,事物越不确定,熵越大!表达式如下:

pi——D中取值为i时的概率;

n——D的n种不同的离散取值;

 

(2)条件熵:如H(D︱A),类似于条件概率,度量D在知道A后剩下的不确定性,表达式如下:

 

(3)E(D)-E(D|A),它度量了D在知道A以后不确定性减少程度,记为Gain(D,A)。在决策树ID3算法中,叫做信息增益

 

决策树算法的类型——ID3C4.5CART

根据不同的特征选择标准和处理的数据类型可分为:   普通决策树  &   CART

普通决策树:    ID3算法  &  C4.5算法

改进过程:        ID3——> C4.5 ——> CART

 

ID3算法:

根据信息增益作为特征选择的标准;

对于每一个特征,计算其信息增益,选择信息增益最大的特征来建立决策树当前的结点;

在此基础上,根据选择的特征的不同取值对数据进行划分,递归上述过程。

 

ID3的不足:

a) ID3没有考虑连续特征,不能处理连续型特征

b) ID3采用信息增益大的特征优先建立决策树的节点,而用信息增益作为特征的标准,容易偏向于取值较多的特征

c) ID3算法对缺失值没有做考虑

d) 未考虑过拟合问题;

 

C4.5算法:

根据信息增益比作为特征选择的标准;

信息增益的缺点是比较偏向选择取值较多的属性,为解决该问题,引入信息增益比的概念;

什么是信息增益比?

它是信息增益和特征熵的比值,表达式如下:

D为样本特征输出的集合,A为样本特征。

什么是特征熵?

其表达式如下所示:

v为特征A中的类别数,??为特征A 中第i个取值对应的样本个数,D为样本个数

特征数越多的特征对应的特征熵越大,它作为分母,可以校正信息增益容易偏向于取值较多的特征的问题。

 

实例计算:

编号

色泽

根蒂

敲声

纹理

脐部

触感

好瓜

1

青绿

蜷缩

浊响

清晰

凹陷

硬滑

2

乌黑

蜷缩

沉闷

清晰

凹陷

硬滑

3

乌黑

蜷缩

浊响

清晰

凹陷

硬滑

4

青绿

蜷缩

沉闷

清晰

凹陷

硬滑

5

浅白

蜷缩

浊响

清晰

凹陷

硬滑

6

青绿

稍蜷

浊响

清晰

稍凹

软粘

7

乌黑

稍蜷

浊响

稍糊

稍凹

软粘

8

乌黑

稍蜷

浊响

清晰

稍凹

硬滑

9

乌黑

稍蜷

沉闷

稍糊

稍凹

硬滑

10

青绿

硬挺

清脆

清晰

平坦

软粘

11

浅白

硬挺

清脆

模糊

平坦

硬滑

12

浅白

蜷缩

浊响

模糊

平坦

软粘

13

青绿

稍蜷

浊响

稍糊

凹陷

硬滑

14

浅白

稍蜷

沉闷

稍糊

凹陷

硬滑

15

乌黑

稍蜷

浊响

清晰

稍凹

软粘

16

浅白

蜷缩

浊响

模糊

平坦

硬滑

17

青绿

蜷缩

沉闷

稍糊

稍凹

硬滑

17个样本,6个特征,最终2个类别!

 

以计算特征“色泽”的信息增益为例:

其可能取值——乌黑、青绿、浅白;

D1(色泽=青绿),包括编号为{1,4,6,10,13,17}——   共6个样本,P1 = 3/6,P2 = 3/6

D2(色泽=乌黑),包括编号为{2,3,7,8,9,15} ———  共6个样本,P1 = 4/6,P2 = 2/6

D3(色泽=浅白),包括编号为{5,11,12,14,16} ———  共5个样本,P1 = 1/5,P2 = 4/5

 

C4.5ID3其他改进

(1)对于ID3不能处理连续特征的问题,C4.5的做法是将连续特征离散化

具体过程:

取值排序——>取每个相邻的两个取值的值平均——>计算该点作为二分类时的信息增益——>取信息增益最大的点作为连续特征的二元离散分裂点

注意事项——与离散性特征不同的是,如果当前节点为连续属性,则该属性后面还可以参与子节点的产生选择过程

 

(2)对于缺失值处理的问题,含有缺失的样本集会导致三个问题:

  构建树时,分裂属性如何选取?

     当训练集中有些样本缺失部分属性,如何计算有缺失值的属性的信息増益率?

  当已选择某属性作为分裂属性时,样本集根据该属性的值进行分支,但对于那些在该属性上有缺失值的样本,应将它分支到哪一棵子树上?

  决策树已构建完成,若待分类样本有些属性值缺失,该样本如何分类?

针对上述三个问题,C4.5算法有多种解决方案:

面对问题一,在进行特征选择,计算各属性的信息増益率时,若某些样本的该属性值缺失,则计算时:

       a忽略掉缺失了此属性的样本;

       b)  或通过此属性的样本中出现频率最高的属性值,賦值给缺失了此属性的样本。 

面对问题二,假设已选择属性A作为一分支节点,在对样本集进行分支时,对于那些属性A缺失的样本,则:

       a)   忽略这些样本;

       b)  或根据属性A的其他样本取值,对未知样本赋值

       c)或为缺失属性A的样本单独创建一个分支; 

面对问题三,根据己生成的决策树模型,对一个待分类的样本进行分类时,若此样本的属性A的值未知,可以这样处理:

       a待分类样本在到达属性A的分支结点时即可结束分类过程,此样本所属类别为属性A的子树中概率最大的类别

       b)  或者把待分类样本的属性A赋予一个最常见的值,然后继续分类过程。

 

(3) 对于ID3的过拟合问题,C4.5进行剪枝操作ID3不剪枝,得到尽可能大的树)

剪枝包括 预剪枝 后剪枝

预剪枝——在决策树生成过程中,对树进行剪枝,提前结束树的分支生长

预剪枝依据:

作为叶结点或作为中间结点进行划分需要包含的最少样本个数:min_samples_leaf 、 min_samples_split

达到决策树的一定层数停止生长: max_depth

结点的经验熵小于某个阈值才停止生长:min_impurity_split

后剪枝——先生成决策树,然后产生所有可能的剪枝后的CART树,再使用交叉验证来检验各种剪枝得效果,选择泛化能力最好的子树

后剪枝的方法包括四种:

(1)悲观错误剪枝(PEP)  (Pessimistic Error Pruning);

(2)最小错误剪枝(MEP)(Minimum Error Pruning);

(3)代价复杂度剪枝(CCP)(Cost Complexity Pruning);

(4)基于错误的剪枝(EBP)(Error Based Pruning);

 

C4.5的剪枝算法选择的是PEP剪枝算法!(悲观错误剪枝)

 

悲观错误剪枝(PEP)  (Pessimistic Error Pruning)

 

C4.5算法的不足

(1)C4.5同ID3一样,生成的是多叉树,其运算效率没有二叉树高

(2)C4.5只能用于分类

(3)C4.5基于熵进行计算,且有大量对数运算,若有连续特征,还涉及大量排序十分耗时

 

CART(分类回归树):

CART在C4.5的基础上进一步改进!

(1)CART既可用于分类,也可用于回归

(2)分类树使用基尼系数,回归树使用平方误差

 

CART与普通决策树的区别

(1)普通决策树(ID3,C4.5)——多元切分,CART——二元切分;

(2)特征选择的标准不同:分类树使用基尼系数,回归树使用平方误差,ID3使用信息增益,C4.5使用信息增益比;

 

CART分类树算法:

使用基尼系数作为特征选择的算法;

基尼系数——代表了模型的不纯度,基尼系数越小,不纯度越低,特征越好

基尼系数的表达公式:

对于样本D,根据特征A的某个值a,把样本D分成两个部分D1和D2,则在特征A 的条件下,D的基尼系数为:

(1)CART分类树对连续特征的处理

和C4.5相同,区别仅在于,选择划分点时,分类树采用基尼系数,而C4.5采用信息增益

注意——如果当前节点为连续属性,则该属性后面还可以参与子节点的产生选择过程

 

(2)CART分类树对离散特征的处理

以特征A 为例,假设他有A1,A2,A3三种类别。

CART分类树会考虑把A分成{A1}和{A2,A3},{A2}和{A1,A3},{A3}和{A1,A2}三种情况,找到基尼系数最小的组合,比如{A2}和{A1,A3},然后建立二叉树节点,同时,由于没有把特征A的取值完全分开,该离散特征有机会在子节点继续选择到特征A来划分A1和A3。

注意——这和ID3或者C4.5不同,在ID3或者C4.5的一棵子树中,离散特征只会参与一次节点的建立

 

CART回归树算法:

使用平方误差最小化作为特征选择的算法;

对于CART分类树,采用基尼系数大小度量特征各划分点的优劣;

对于CART回归树,通过计算任意划分成的数据集的各自的均方差,使两部分的均方差各自最小,同时两者之和最小来判断特征划分点的优劣

表达式如下:

其中,c1c2为划分后的样本集的均值。

 

CART树算法的剪枝:

CART树的剪枝采用的办法是后剪枝法!

CART树使用CCP剪枝法(代价复杂度剪枝)!

 

代价复杂度剪枝算法(CCP:

  1. 权衡利弊——希望减少树的大小防止过拟合,又担心去掉一些节点后预测误差增大;
  2. 定义损失函数:

Tt表内部任一节点t的子树;

C(Tt)为子树的预测误差;

??为子树 ?的叶子节点个数
?权衡拟合程度与树的复杂度。

 

当α=0时,原始生成的CART树即为最优子树;

当α=∞时,由原始生成的CART树的根节点组成的单节点树为最优子树。

如何找到最合适的α?

将α从0取到正无穷,对于每一个固定的α,我们都可以找到使得Cα(T)最小的最优子树T(α)

 

剪枝的两个步骤:

(1)生成子树序列

每次剪枝剪的只是某个内部节点的子节点,将该内部节点作为叶子节点;

此时,计算整体损失函数时,该节点外的值均保持不变,仅该节点的局部损失发生改变,

因此,只需要计算该节点剪枝前和剪枝后的损失函数。

 

注意:这里的节点t为变量,而推α时,t为某一特定的t

g(t)  ——表示剪枝后整体损失函数减少的程度;

根据g(t)的大小,我们选择剪切g(t)最小的Tt

通过这种方式生成一个子树序列 {T0, T1 , T2, …. , Tm },

T0代表最初充分生长的树,Tm代表根节点树。

 

(2)交叉验证法在子树序列中选取最优子树

将独立测试集放入每一颗子树中进行测试,计算每颗子树的整体的损失函数,选择损失函数最小的子树作为最优子树~

 

 

CART的不足:

(1)无论是ID3, C4.5还是CART,做特征选择时,都是选择最优的一个特征来做分类决策,但大多数情况下,分类决策不应由某一个特征决定,而是应由一组特征决定的;

(2)如果样本发生一点点的改动,就会导致树结构的剧烈改变。这个可以通过集成学习里的随机森林之类的方法解决。

 

 

三种决策树类型的小结:

算法

  支持模型

  树结构

      特征选择

连续值处理

缺失值处理

   剪枝

                             剪枝方法

ID3

    分类

  多叉树

      信息增益

   不支持

   不支持

 不支持

                       -----------------

C4.5

    分类

  多叉树

      信息增益比

    支持

    支持

   支持

  悲观错误剪枝(通过伯努利分布的期望和标准差)

CART

分类,回归

  二叉树

  基尼系数,均方差

    支持

    支持

   支持

         代价复杂度剪枝(通过定义损失函数)

 

 

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值