CART剪枝

Decision Tree:CART、剪枝

 

决策树的重要性和入门可以参考前面两篇文章,尤其是入门的ID3算法:

http://isilic.iteye.com/blog/1841339http://isilic.iteye.com/blog/1844097

Classification And Regression Tree(CART)也是决策树的一种,并且是非常重要的决策树。除去上文提到的C4.5外,CART算法也在Top Ten Machine Learning Algorithm中,可见决策树的重要性和CART算法的重要性。

 

CART的特性主要有下面三个,其实这些特性都不完全算是CART的特性,只是在CART算法中使用,并且作为算法的重要基础:

1:二分(Binary Split):在每次判断过程中,都是对观察变量进行二分。

2:单变量分割(Split Based on One Variable):每次最优划分都是针对单个变量。

3:剪枝策略:CART算法的关键点,也是整个Tree-Based算法的关键步骤。

 

CART能处理Classification Tree和Regression Tree,在建树过程中有不一样的地方,我们分别来看下。

我们先看Classification Tree的建树过程:

ID3,C4.5算法是利用熵理论和信息增益(率)来决定属性分割策略;CART则是利用Gini Index(GINI 指数)来定义衡量划分的好坏。和熵类似,数据内包含的类别越杂乱,GINI指数就越大,有没有感觉跟熵的概念类似。下面我们来学习下Gini Index的内容:

其中Pj是类j在T中的相对频率,当类j在T中是倾斜时,gini(T)才会最小。

比较熵理论和gini指数,让T中各类别出现的概率一致时,熵最大,Gini指数也是最大,但是两者的逼近速度是不一样的,从下图中可以看出来:

其中MisClassification Rate也是一种衡量,感兴趣的同学可以自行学习下。

 

衡量出某个属性的Gini指数后,可以得到Gini Split数据如下:

这个有没有和信息增益相似,这个可以称为是Gini信息增益,在CART中,选择其中最小的Gini信息增益作为结点划分决策树。

对于CART,i=2,可以得到在Binary Split情况下的Gini信息增益:

在weka中有信息增益weka.attributeSelection.InfoGainAttributeEval和信息增益率 weka.attributeSelection.GainRatioAttributeEval 的实现,可以看下实现原理。

 

Regression Tree的建树过程。

对于回归树,没有分类数据,只有根据观察数据得出的值,注意观察值取值是连续,在这种情况下Classification Tree的最优划分规则就无能为力。

在这种情况下,回归树可以使用 最小剩余方差(Squared Residuals Minimization)来决定Regression Tree的最优划分,该划分准则是期望划分之后的子树误差方差最小:

 

决策树停止生长的条件,这个可以看做是预剪枝过程:

树不能无限增长,我们可以设定条件,当树达到某个停止条件时,停止树增长,常用的停止条件(Stopping Criteria)有如下几个:

  • 1:子树上的样本数据都归属于同一个类别
  • 2:达到最大数深度(Maximum Tree Depth)
  • 3:子树节点的样本数量要少于某个门限值,或者小于一定的比例
  • 4:子树节点再按照最优划分标准切分,其子树的样本数量小于某个门限值,或者小于一定的比例值
  • 5:最优划分(Split)标增益小于某个门限值,如误差值等

这些方法都可以让树提前停止增长,防止树无限制生成,避免一定程度上的过拟合。

 

剪枝理论,决策树的剪枝在上一节中没有仔细讲,趁这个机会学习了剪枝的基础理论,这里会详细学习。

决策树为什么(WHY)要剪枝?原因是避免决策树过拟合(Overfitting)样本。前面的算法生成的决策树非常详细并且庞大,每个属性都被详细地加以考虑,决策树的树叶节点所覆盖的训练样本都是“纯”的。因此用这个决策树来对训练样本进行分类的话,你会发现对于训练样本而言,这个树表现完好,误差率极低且能够正确得对训练样本集中的样本进行分类。训练样本中的错误数据也会被决策树学习,成为决策树的部分,但是对于测试数据的表现就没有想象的那么好,或者极差,这就是所谓的过拟合(Overfitting)问题。Quinlan教授试验,在数据集中,过拟合的决策树的错误率比经过简化的决策树的错误率要高。

 

现在问题就在于,如何(HOW)在原生的过拟合决策树的基础上,生成简化版的决策树?可以通过剪枝的方法来简化过拟合的决策树。剪枝可以分为两种:预剪枝(Pre-Pruning)和后剪枝(Post-Pruning),下面我们来详细学习下这两种方法:

PrePrune:预剪枝,及早的停止树增长,方法可以参考见上面树停止增长的方法。

PostPrune:后剪枝,在已生成过拟合决策树上进行剪枝,可以得到简化版的剪枝决策树。

其实剪枝的准则是如何确定决策树的规模,可以参考的剪枝思路有以下几个:

1:使用训练集合(Training Set)和验证集合(Validation Set),来评估剪枝方法在修剪结点上的效用

2:使用所有的训练集合进行训练,但是用统计测试来估计修剪特定结点是否会改善训练集合外的数据的评估性能,如使用Chi-Square(Quinlan,1986)测试来进一步扩展结点是否能改善整个分类数据的性能,还是仅仅改善了当前训练集合数据上的性能。

3:使用明确的标准来衡量训练样例和决策树的复杂度,当编码长度最小时,停止树增长,如MDL(Minimum Description Length)准则。

 

我们先看下使用思路一来解决问题的集中后剪枝方法:

Reduced-Error Pruning(REP,错误率降低剪枝)

该剪枝方法考虑将书上的每个节点作为修剪的候选对象,决定是否修剪这个结点有如下步骤组成:

1:删除以此结点为根的子树

2:使其成为叶子结点

3:赋予该结点关联的训练数据的最常见分类

4:当修剪后的树对于验证集合的性能不会比原来的树差时,才真正删除该结点

因为训练集合的过拟合,使得验证集合数据能够对其进行修正,反复进行上面的操作,从底向上的处理结点,删除那些能够最大限度的提高验证集合的精度的结点,直到进一步修剪有害为止(有害是指修剪会减低验证集合的精度)

REP是最简单的后剪枝方法之一,不过在数据量比较少的情况下,REP方法趋于过拟合而较少使用。这是因为训练数据集合中的特性在剪枝过程中被忽略,所以在验证数据集合比训练数据集合小的多时,要注意这个问题。

尽管REP有这个缺点,不过REP仍然作为一种基准来评价其它剪枝算法的性能。它对于两阶段决策树学习方法的优点和缺点提供了了一个很好的学习思路。由于验证集合没有参与决策树的创建,所以用REP剪枝后的决策树对于测试样例的偏差要好很多,能够解决一定程度的过拟合问题。

 

Pessimistic Error Pruning(PEP,悲观剪枝)

先计算规则在它应用的训练样例上的精度,然后假定此估计精度为二项式分布,并计算它的标准差。对于给定的置信区间,采用下界估计作为规则性能的度量。这样做的结果,是对于大的数据集合,该剪枝策略能够非常接近观察精度,随着数据集合的减小,离观察精度越来越远。该剪枝方法尽管不是统计有效的,但是在实践中有效。

PEP为了提高对测试集合的预测可靠性,PEP对误差估计增加了连续性校正(Continuity Correction)。PEP方法认为,如果: 

成立,则Tt应该被剪枝,上式中: 

 

其中,e(t)为结点t出的误差;i为覆盖Tt的叶子结点;Nt为子树Tt的叶子树;n(t)为在结点t处的训练集合数量。PEP采用自顶向下的方式,如果某个非叶子结点符合上面的不等式,就裁剪掉该叶子结点。该算法被认为是当前决策树后剪枝算法中经度比较高的算法之一,但是饿存在有缺陷。首先,PEP算法是唯一使用Top-Down剪枝策略,这种策略会导致与先剪枝出现同样的问题,将该结点的某子节点不需要被剪枝时被剪掉;另外PEP方法会有剪枝失败的情况出现。

虽然PEP方法存在一些局限性,但是在实际应用中表现出了较高的精度,。两外PEP方法不需要分离训练集合和验证机和,对于数据量比较少的情况比较有利。再者其剪枝策略比其它方法相比效率更高,速度更快。因为在剪枝过程中,树中的每颗子树最多需要访问一次,在最坏的情况下,它的计算时间复杂度也只和非剪枝树的非叶子节点数目成线性关系。

可能有同学会对上面的那个不等式有疑问,可以参考这篇文章http://blog.sina.com.cn/s/blog_68ffc7a40100urn3.html 中关于PEP剪枝部分内容。PEP方法实际上是将结点误差数目看做二项式分布,根据期望和方差得到的结果。

 

Cost-Complexity Pruning(CCP、代价复杂度)

CCP方法包含两个步骤:

1:从原始决策树T0开始生成一个子树序列{T0、T1、T2、...、Tn},其中Ti+1是从Ti总产生,Tn为根节点

2:从子树序列中,根据树的真实误差估计选择最佳决策树。

在步骤一中,生成子树序列{T0、T1、T2、...、Tn}的基本思想是从T0开始,裁剪Ti中关于训练数据集合误差增加最小的分支来得到Ti+1。实际上当一棵树T在结点t出剪枝时,它的误差增加直观上认为是:

其中R(t)为在结点t的子树被裁剪后结点t的误差,R(Tt)为在结点t的子树没被裁剪时子树T的误差。不过剪枝后T的叶子树减少了|L(Ti)|-1,其中|L(Ti)|为子树Ti的叶子树,也就是说T的复杂性降低。因此考虑到树的复杂性因素,树分支被裁剪后误差增加率可以由下式决定:

 Ti+1就是选择Ti中具有最小\alpha值所对应的剪枝树

如何从第一步骤产生的子树序列{T0、T1、T2、...、Tn}中选择出最佳决策树是CCP方法的第二步骤的关键。通常可以采用V-交叉验证(V-fold Cross-Validation)和基于独立剪枝数据集两种方法,这两种方法可以参考(Classification And Regression Trees,Breiman et.al)。当使用基于独立数据集剪枝时,和REP方法相比,CCP选择出来的最有决策树,不是从原始决策树T的所有可能子树中得到,所以有可能会找到到最有决策树。

 

其它如Minimum Error Pruning(MEP),Critical Value Pruning(CVP),Optimal Pruning(OPP),Cost-Sensitive Decision Tree Pruning(CSDTP)等方法,这些剪枝方法各有利弊,关注不同的优化点,感兴趣的同学可以学习下。

 

剪枝过程特别重要,所以在最优决策树生成过程中占有重要地位。有研究表明,剪枝过程的重要性要比树生成过程更为重要,对于不同的划分标准生成的最大树(Maximum Tree),在剪枝之后都能够保留最重要的属性划分,差别不大。反而是剪枝方法对于最优树的生成更为关键。重点理解这些剪枝方法的理论,对于最终最优树的生成是有好处的,其中上篇文章http://isilic.iteye.com/blog/1844097中C4.5使用了PEP剪枝方法,本文的CART使用了CCP的剪枝方法,实际上,不应该对于算法使用的剪枝方法过于追根究底,而是应该对于剪枝过程理解透彻,对于在何种场景下对于不同的数据类型使用何种的剪枝方法能够获得最优树的选择,才是真正理解了剪枝的理论和重要性。

 

下面再回到CART算法,看下算法的优点:

1:没有分布假设、没有数据同质性(Homogeneity)要求

2:观测值属性可以是分类、离散、连续的混合。

4:对异常值(Outlier)值不敏感,异常值一般会被处理掉

5:在面对缺失值、变量多等问题时,CART显得给长稳健(ROBUST)

 

缺点:

1:非基于概率模型,很难对决策树的结果的准确程度做度量

 

CART算法的内容就到这里,再扩充下Decision Tree算法的内容。上面的这些决策树算法都是单变量(Univariate)算法,实际上还有多变量(MultiVariate)算法,只是使用比较少。在Machine Learning In Action第九章中有关于Tree-Based Regression,是讲解CART中Regression树的内容。尤其是在文章中间提到了多变量回归树算法,每次的判定点有两个变量组成,对于本文的内容是个非常好的扩充,可以学习下。另外要提一下的是该章节中讲解的CART生成比较简单,尤其是生成最大树的方法;不过树生成和数剪枝(包括预剪枝和后剪枝)都有体现,算是分不错的代码文档;感兴趣的可以直接在这份代码上修改。

 

后面附加了份关于决策树的概论内容综述,地址参见:http://www.ise.bgu.ac.il/faculty/liorr/hbchap9.pdf 。内容比较全,包括划分标准、剪枝方法,不过不够深入,只有公式和简单的介绍,如果有基础的话话,倒是份不错的文档。如果不能观看的话,文后有附件。

另外在百度文库上有个PPT不错:http://wenku.baidu.com/view/415c3cc19ec3d5bbfd0a7464.html,供参考。

 

其实本文的重点是剪枝的内容,除去这点,CART算法使用的GINI指数内容也是本文的重点。

本文内容结束。 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值