您的位置:首页 > 其它

C4.5算法

2015-07-10 10:24 375 查看
【适用范围】
处理分类问题,只要目标问题的类间边界能用树型分解方式或规则判别方式来确定,就可以使用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/
文章内容系参考清华大学出版社《数据挖掘十大算法》整理而成,特此声明
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C4.5