C4.5决策树

C4.5算法是Quinlan提出的决策树方法,改进了ID3算法,使用信息增益率避免偏好取值多的属性,支持连续数据处理和缺失值处理,并在构造过程中进行剪枝以防止过拟合。剪枝包括先剪枝和后剪枝,如基于成本复杂度的剪枝和悲观剪枝。C4.5还能生成推理规则,通过爬山搜索简化规则集。
摘要由CSDN通过智能技术生成
参考:
  1. http://blog.sina.com.cn/s/blog_68ffc7a40100urn3.html
  2. http://www.cnblogs.com/superhuake/archive/2012/07/25/2609124.html
  3. http://blog.sina.com.cn/s/blog_7ca874a40102wc1n.html
概述:

C4.5算法是Quinlan提出的一系列算法,包括C4.5 决策树、C4.5剪枝和 C4.5规则(C4.5 Tree-C4.5Pruning-C4.5Rules)。它继承了ID3算法的优点,并在以下几方面对ID3算法进行了改进:

1) 用信息增益率来选择属性,克服了用信息增益选择属性时偏向选择取值多的属性的不足.

2) 在树构造过程中进行剪枝.

3) 能够完成对连续属性的离散化处理.

4)能够对不完整数据进行处理.

优点:产生的分类规则易于理解且准确率较高。

缺点:在构造树的过程中,需要对数据集进行多次的顺序扫描和排序,因而导致算法的低效。

详述:
1.采用信息增益作为评价指标

我们知道ID3算法通过计算信息增益,即Gain(A)来评定每个属性对于分类的贡献价值,或者说加快分类进程的能力。
通常这是很合理的,但是如果所选择的属性本身就具有很大的不确定性,即该属性有很多种取值,那么每一种取值所对应的分类信息熵自然而然会被降低。最极端的情况就是如果某一属性的每一种取值都只有一种类别的样本,那么它的信息熵为0,而这个属性必然会被选择,这显然是不够合理的。
这种属性自身引起的信息不确定性,我们称之为分离信息(Split Information)

SplitInformation(S,A)=i=1cSiSlog2SiS

其中 S 为样本总数, Si 为A属性c种取值分别对应的样本个数。为了克服这种分类信息的影响,我们定义 信息增益率为:
GainRatio(S,A)=Gain(S,A)SplitInformation(S,A)

所以说,信息增益率克服了用信息增益选择属性时偏向选择取值较多的属性的不足。

2.剪枝

为什么要剪枝?

在决策树的创建时,由于数据中的噪声和离群点,许多分枝反映的是训练数据中的异常。剪枝方法是用来处理这种过分拟合数据的问题。通常剪枝方法都是使用统计度量,剪去最不可靠的分枝。

剪枝分类

先剪枝:
先剪枝通过提前停止树的构造(比如决定在某个节点不再分裂或划分训练元组的子集)而对树剪枝。一旦停止,这个节点就变成树叶,该树叶可能取它持有的子集最频繁的类作为自己的类。先剪枝有很多方法,比如:
(1)当决策树达到一定的高度就停止决策树的生长;
(2)到达此节点的实例具有相同的特征向量,而不必一定属于同一类,也可以停止生长
(3)到达此节点的实例个数小于某个阈值的时候也可以停止树的生长,不足之处是不能处理那些数据量比较小的特殊情况
(4)计算每次扩展对系统性能的增益,如果小于某个阈值就可以让它停止生长。先剪枝有个缺点就是视野效果问题,也就是说在相同的标准下,也许当前扩展不能满足要求,但更进一步扩展又能满足要求。这样会过早停止决策树的生长。

后剪枝:
常用的方法是后剪枝,它由完全成长的树剪去子树而形成。通过删除节点的分枝并用树叶来替换它。树叶一般用子树中最频繁的类别来标记,并且采用自下而上的策略。比如:
(1) 基于成本复杂度的剪枝(cost-complexity pruning,CCP).
(2) 错误消减剪枝(Reduced error pruning,REP).
(3) 悲观剪枝(Pessimistic error pruning,PEP).
(4) 基于理想置信区间剪枝(confidence intervals,CI).

其中,CART采用CCP剪枝法,这里不做过多说明。

REP剪枝
这是一种最简单也最直接的剪枝,又被称为基于误判的剪枝。既然完全的决策树会对训练集产生过度拟合,那么就再找一个测试数据集来纠正它。
对于完全决策树中的每一个非叶子节点的子树,尝试着把它替换成一个叶子节点,该叶子节点的类别我们用子树所覆盖训练样本中存在最多的那个类来代替,这样就产生了一个简化决策树,然后比较这两个决策树在测试数据集中的表现,如果简化决策树在测试数据集中的错误比较少,并且该子树里面没有包含另外一个具有类似特性的子树(所谓类似的特性,指的就是把子树替换成叶子节点后,其测试数据集误判率降低的特性),那么该子树就可以替换成叶子节点。该算法以bottom-up的方式遍历所有的子树,直至没有任何子树可以替换使得测试数据集的表现得以改进时,算法就可以终止。
REP方法很直接,但是需要一个额外的测试数据集,能不能不要这个额外的数据集呢?为了解决这个问题,于是就提出了悲观剪枝。

悲观剪枝(PEP)
悲观剪枝法是C4.5采用的剪枝方法,就是递归得估算每个内部节点所覆盖样本节点的误判率。剪枝后该内部节点会变成一个叶子节点,该叶子节点的类别由原子树存在最多的类别所决定。然后比较剪枝前后该节点的错误率来决定是否进行剪枝。该方法和前面提到的第一种方法思路是一致的,不同之处在于如何估计剪枝前分类树内部节点的错误率。说白了悲观剪枝法在用训练集估计决策树的错误率。
把一颗子树(具有多个叶子节点)的分类用一个叶子节点来替代的话,在训练集上的误判率肯定是上升的(这是很显然的,因为该决策树在生成过程中一定有了信息增益才会接着分),但是在新数据上不一定(这也是过度拟合的结果)。为了消除过度拟合在计算错误率时的不利影响,我们需要把子树的误判计算加上一个经验性的惩罚因子。
对于一颗叶子节点,它覆盖了 Ni 个样本,其中有

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值