数据挖掘/机器学习算法--C4.5以及决策树(Decision Tree)

       我在写这篇博客的时候借鉴了网络上一位博主对于决策树的理解,稍加补充,对其代码稍作修改,并在此详细介绍一下决策树和C4.5分类算法。希望观看的同学能静下心来好好阅读以下文字,毕竟对于算法来说,概念也是相当重要的。好了,废话不多说了,我们直接进入主题。

       C4.5算法是机器学习和数据挖掘领域中的一整套用于处理分类问题的算法。该算法是有监督学习类型的,即:给定一个数据集,所有实例都由一组属性来描述,每个实例仅属于一个类别,在给定的数据集上运行C4.5算法可以学习得到一个从属性值到类别的映射,从而可以使用该映射对新的未知实例进行分类。

       J. Ross Quinlan设计的C4.5算法其实是源于名为ID3的一种决策树诱导算法,而ID3曾被称为“迭代分解器(iterative dichotomizers)”系列算法的第3代。决策树相当于将一系列问题组织成树,具体来说就是,每个问题对应一个属性,根据属性值来生成判断分支,一直到决策树的叶节点产生了类别的预测结果。通俗点说,决策树和你利用车辆用户手册排查你的车到底除了什么问题没什么不同。另外,C4.5算法除了能够诱导出决策树,还可以将决策树转换成某种具有良好可理解性的规则。特别地,通过C4.5的后剪枝操作得到的分类器不能再精确地被转换回决策树。对于决策树的后剪枝,我将在下文中找个角落具体跟大家聊聊。

       我想了又想,觉得还是有必要跟大家扯点决策树和C4.5算法的发展历程,毕竟大家都是为了学习,阅读了一些参考文献,在这里叙述一下,大家不要嫌烦。。。

       C4.5算法的发展历史非常生动地展现了不同的学术社区在分类问题研究上殊途同归的情形。一方面,ID3算法和Original Tree算法是各自独立发展的,而Original Tree算法最初由Friedman发明,后来在Breiman、Olshen以及Stone等人的参与下发展成为CART算法(关于CART算法的见解还请耐心等等我后面的文章)。另一方面,可以看到从ID3发展而来的C4.5算法的设计理念在很大程度上受到了CART算法的影响,例如对特殊类型的处理方式。另外,Quinlan还肯定了CLS(概念学习系统)框架对于发展ID3算法和C4.5算法的重要作用。而如今,经典的C4.5算法已经被See5/C5.0所取代,C5.0是Rulequest Research公司的商用产品。最早的决策树精处理标称/类别的数据类型,而如今已扩展到支持数值、符号甚至是混合型的数据类型。具体的应用领域也很广泛,例如临床决策、生产制造、文档分析、生物信息学、空间数据建模(地理信息系统)等。实际上,只要是目标问题的类间便捷能用树型分解方式或者规则判别方式来确定,就可以使用C4.5算法。


       为了便于对算法的理解,我们先举个简单点的例子吧。同学们请看下面这张表格。
       例子中,age列是年龄水平(youth青年、senior成年、middle_aged中年,离散值,三值),income列是收入情况(high高等收入、medium中等收入、low低收入,离散值,三值),isStudent列是学生与否(yes是、no否,离散值,二值),credit_rating列是信用程度(fair信用差、excellent信用好,离散值,二值),TARGET_VALUE列是目标列,代表的能否办理信用卡。运用C4.5算法对表格中数据进行训练,可以训练出一个映射,该映射以新实例(其类别未知)的属性值作为输入,输出的是对着和实例所属类别的预测。

age income isStudent credit_rating TARGET_VALUE
youth high no fair no
youth high no excellent no
middle_aged high no fair yes
senior low yes fair yes
senior low yes excellent no
middle_aged low yes excellent yes
youth medium no fair no
youth low yes fair yes
senior medium yes fair yes
youth medium yes excellent yes
middle_aged high yes fair yes
senior medium no excellent no

       下图是基于训练数据,用C4.5算法诱导出的树:

1.png


       那么使用C4.5算法为什么会诱导出这种树结构的分类结果了?首先我们要明确以下三个问题:

  • 有哪些可能的测试类型?
            如上图所示,C4.5算法并不限定只能进行二元测试,也允许多于两项输出的测试。如果属性为布尔型,测试就会诱导出两个分支;如果属性是类别型,就需要进行多值测试;当然,也可以将这些值分组以生成更少的选项,吃屎每个选项相当于一个属性值,如此即可用这些选项来进行测试。

  • 如何对测试进行选择?
            C4.5算法使用增益(gain)、增益率(gain ratio)等信息论知识准则来对测试进行选择。增益被定义为“执行一个测试所导致的类别分布的熵的减少量”。增益准则的一个缺陷在于它过于偏向选择具有更多输出结果的测试,而增益率具有客户这一偏差的优点,所以C4.5算法默认的测试选择准则就是增益率。

  • 如何决定停止树生长?
            通常有两种方式决定停止树生长,一是如果某节点的一个分支所辖的全部实例都是“纯”的,这这个分支就被确定为一个叶节点;二是如果该分支覆盖的实例总数已经低于预定的阈值,而如何确定这个阈值就要看需求了,阈值确定的不好,对分类的结果会产生较大的影响。

        下面我们仔细研究一下上面的例子,由图可以观察到,Student被选为第一个进行测试的属性,为毛会这样???这就是熵存在的意义了!!!我们首先需要计算类别随机变量(TARGET_VALUE)的熵。该变量是一个二元变量,其取值的概率分别为7/12(yes)和5/12(no)。由信息论知识我们知道,如果随机变量有n个取值,其对应的概率分别为P1,P2,…,Pn,则该随机变量的熵为:

i=1nPilog2Pi

所以,TARGET_VALUE的熵值可以这样计算:
7/12log27/125
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值