码迷,mamicode.com
首页 > 编程语言 > 详细

C4.5算法

时间:2015-07-10 17:03:36      阅读:230      评论:0      收藏:0      [点我收藏+]

标签:c4.5

【适用范围】

        处理分类问题,只要目标问题的类间边界能用树型分解方式或规则判别方式来确定,就可以使用C4.5算法

【属性】

       监督学习

【基本思想】

        给定数据集,所有实例都由一组属性来描述,每个实例仅属于一个类别,在给定数据集上运行C4.5算法可以学习得到一个从属性值到类别的映射,进而可以用该映射去分类新的未知实例

【算法原理】

Input: an attribute-valued dataset D

1:Tree = {}

2:if D is ‘pure‘ or other stopping criteria met then

3:    terminate

4:end if

5:for all attribute a ∈ D do

6:     Compute information-theoretic criteria if we split on a

7:end for

8:abest = Best attribute according to above computed criteria

9:Tree = Create a decision node that tests abest in the root

10:Dv = Induced sub-datasets from D based on abest

11:for all Dv do

12:     Treev = C4.5(Dv)

13:      Attach Treev to the corresponding branch of Tree

14:end for

15:return Tree

【算法阐述】

用根节点表示给定的数据集,从根节点开始在每个节点上测试一个特定的属性,把节点数据集划分成更小的子集,并用子树表示。该过程一直执行,直到子集成为“纯”的,也就是说子集中的所有实例属于同一个类别,树停止增长。

【算法要点】

1.信息论准则

        C4.5算法使用增益(Gain)、增益率(Gain Ratio)等信息论准则选择合适的属性来划分子树。增益用于计算类别分布的熵的减少量,增益越大证明依据该属性的分类效果越好,它的缺陷在于过于偏向选择输出结果更多的属性。增益率具有克服这一偏差的优点,因此C4.5算法默认的信息论准则是增益率

         GainRatio(a) = Gain(a)/Entropy(a)

其中,Gain(a)=Entropy(Category in D) - ∑|Dv|/D*Entropy(Category in Dv)

            Entropy = -∑p*log2(p)

            D是整个数据集,Dv是D的子集,实例在Dv上属性值相同,Category不同

属性a的Entropy(a)仅取决于取值的概率分布,与类别无关。

属性a的Gain(a)与类别相关。

【代码实现】

http://www.rulequest.com/Personal/

文章内容系参考清华大学出版社《数据挖掘十大算法》整理而成,特此声明

本文出自 “lucas” 博客,请务必保留此出处http://4292565.blog.51cto.com/4282565/1672788

C4.5算法

标签:c4.5

原文地址:http://4292565.blog.51cto.com/4282565/1672788

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!