决策树(三):C4.5算法和CART算法

ID3选择属性的依据是信息增益
![Information Gain][equtation]
[equtation]: http://latex.codecogs.com/svg.latex?g_r(D,A)=H(D)-H(D|A)

ID3算法在选择根节点和内部节点中的分支属性时,采用信息增益作为评价标准。信息增益的缺点是倾向于选择取值较多的属性,在有些情况下这类属性可能不会提供太多有价值的信息。因此我们发展了C4.5乃至之后的C5.0算法。

C4.5算法

C4.5算法主要做出了以下方面的改进:

1.可以处理连续数值型属性

对于离散值,C4.5和ID3的处理方法相同,对于某个属性的值连续时,假设这这个节点上的数据集合样本为total,C4.5算法进行如下处理:

  • 将样本数据该属性A上的具体数值按照升序排列,得到属性序列至{A1,A2,A3,...,Atotal};

  • 在上一步生成的序列值中生成total-1个分割点。第i个分割点的取值为Ai和Ai+1的均值,每个分割点都将属性序列划分为两个子集。

  • 计算每个分割点的信息增益(Information Gain),得到total-1个信息增益。

  • 对分裂点的信息增益进行修正:减去log2(N-1)/|D|,其中N为可能的分裂点个数,D为数据集合大小。

  • 选择修正后的信息增益值最大的分类点作为该属性的最佳分类点。

  • 计算最佳分裂点的信息增益率(Gain Ratio)作为该属性的Gain Ratio。

  • 选择Gain Ratio最大的属性作为分类属性。
    ![Gain Ratio][equtation2]
    [equtation2]: http://latex.codecogs.com/svg.latex?g_R(D,A)=\frac{g_r(D,A)}{H_A(D)}=\frac{H(D)-H(D|A)}{H_A(D)}

2.用信息增益率(Information Gain Ratio)来选择属性

克服了用信息增益来选择属性时偏向选择值多的属性的不足。
![Gain Ratio][equtation2]

3.后剪枝策略

决策树很容易产生过拟合,剪枝能够避免树高度无限制增长,避免过度拟合数据。在上一节内容中,我们通过限制决策树的最大深度,这本质是一种预剪枝。
后剪枝相对来说更难一些,是通过一个剪枝系数来实现的,这里暂不论述。

**4.缺失值处理 **

对于某些采样数据,可能会缺少属性值。在这种情况下,处理缺少属性值的通常做法是赋予该属性的常见值,或者属性均值。另外一种比较好的方法是为该属性的每个可能值赋予一个概率,即将该属性以概率形式赋值。例如给定Boolean属性B,已知采样数据有12个B=0和88个B=1实例,那么在赋值过程中,B属性的缺失值被赋值为B(0)=0.12、B(1)=0.88;所以属性B的缺失值以12%概率被分到False的分支,以88%概率被分到True的分支。这种处理的目的是计算信息增益,使得这种属性值缺失的样本也能处理。

5.C4.5的缺点

  1. 算法低效,在构造树的过程中,需要对数据集进行多次的顺序扫描和排序,因而导致算法的低效
  2. 内存受限,适合于能够驻留于内存的数据集,当训练集大得无法在内存容纳时程序无法运行。

C4.5的伪代码

Function C4.5(R:包含连续属性的无类别属性集合,C:类别属性,S:训练集)  
Begin  
   If S为空,返回一个值为Failure的单个节点;  
   If S是由相同类别属性值的记录组成,  
      返回一个带有该值的单个节点;  
   If R为空,则返回一个单节点,其值为在S的记录中找出的频率最高的类别属性值;  
   [注意未出现错误则意味着是不适合分类的记录];  
  For 所有的属性R(Ri) Do  
        If 属性Ri为连续属性,则  
        Begin  
           sort(Ri属性值)
           将Ri的最小值赋给A1:  
             将Ri的最大值赋给Am;  
           For j From 1 To m-1 Do Aj=(A1+Aj+1)/2;  
           将Ri点的基于Aj(1<=j<=m-1划分的最大信息增益属性(Ri,S)赋给A;  
        End;  
  将R中属性之间具有最大信息增益的属性(D,S)赋给D;  
  将属性D的值赋给{dj/j=1,2...m};  
  将分别由对应于D的值为dj的记录组成的S的子集赋给{sj/j=1,2...m};  
  返回一棵树,其根标记为D;树枝标记为d1,d2...dm;  
  再分别构造以下树:  
  C4.5(R-{D},C,S1),C4.5(R-{D},C,S2)...C4.5(R-{D},C,Sm);  
End C4.5

CART算法

CART算法的重要基础包含以下三个方面:

  • 二分(Binary Split):在每次判断过程中,都是对观察变量进行二分。
    CART算法采用一种二分递归分割的技术,算法总是将当前样本集分割为两个子样本集,使得生成的决策树的每个非叶结点都只有两个分枝。因此CART算法生成的决策树是结构简洁的二叉树。因此CART算法适用于样本特征的取值为是或非的场景,对于连续特征的处理则与C4.5算法相似。

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

  • 剪枝策略:CART算法的关键点,也是整个Tree-Based算法的关键步骤。
    剪枝过程特别重要,所以在最优决策树生成过程中占有重要地位。有研究表明,剪枝过程的重要性要比树生成过程更为重要,对于不同的划分标准生成的最大树(Maximum Tree),在剪枝之后都能够保留最重要的属性划分,差别不大。反而是剪枝方法对于最优树的生成更为关键。

CART的基础是基尼系数(gini,并非经济学中的基尼系数):
![观察第一个等式,对比信息熵公式,我们把log(1/p_k)换成了(1-p_k)可以认为对log(1/p_k)在x_0=1处的泰勒展开,只取前两项后的结果。这种处理实际上减轻了运算压力。][equtation3]
[equtation3]: http://latex.codecogs.com/svg.latex?Gini(p)=\sum_{k=1}{K}p_k(1-p_k)=1-\sum_{k=1}{K}p_k2=1-\sum_{k=1}{K}(\frac{\left|C_k\right|}{D})^2

GINI指数主要是度量数据划分或训练数据集D的不纯度为主。GINI值越小,表明样本的纯净度越高(即该样本只属于同一类的概率越高)。
衡量出数据集某个特征所有取值的Gini指数后,就可以得到该特征的Gini Split info,也就是GiniGain。


Gini Gain

不考虑剪枝情况下,分类决策树递归创建过程中就是每次选择GiniGain最小的节点做分叉点,直至子数据集都属于同一类或者所有特征用光。

CART的核心在于剪枝,我们日后再讨论这个问题。在最后一节,我们将会介绍随机森林的概念和简单的实践。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,390评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,821评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,632评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,170评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,033评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,098评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,511评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,204评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,479评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,572评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,341评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,893评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,171评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,486评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,676评论 2 335

推荐阅读更多精彩内容

  • 决策树理论在决策树理论中,有这样一句话,“用较少的东西,照样可以做很好的事情。越是小的决策树,越优于大的决策树”。...
    制杖灶灶阅读 5,809评论 0 25
  • 博客园:http://www.cnblogs.com/wxquare/p/5379970.html ID3(多叉树...
    闫阿佳阅读 1,969评论 0 0
  • 转自算法杂货铺--决策树决策树和随机森林学习笔记-欢迎补充 http://www.cnblogs.com/fion...
    明翼阅读 10,668评论 1 6
  • 今天早上送彤宝去绘本馆,儿子闹着找姐姐,就在那里玩了一会。 今天的绘画是简笔画的<鱼>。平时都是创意+手工的复合式...
    烟花童话里的故事阅读 484评论 0 3
  • 回来西安了 感觉就像没离开过一样 在这里没有关于她的任何回忆 偶尔还可以欺骗自己 她依旧在床上躺着 不曾离开...
    ___indulgence__阅读 213评论 0 0