当前位置: 首页 > 数据挖掘 > 正文

数据挖掘:Top 10 Algorithms in Data Mining(一)C4.5

关键字:
1 星2 星3 星4 星5 星 (2 次投票, 评分: 5.00, 总分: 5)
Loading ... Loading ...
baidu_share

c4.51
C4.5的优缺点在上图中已经列出。C4.5是一种基于ID3的决策树分类算法,通常归类为统计分类器。

先介绍下决策树

决策树分类的步骤是:

所有待决策的样本都位于树根,参数都为离散化取值。
根据启发规则选择一个参数,根据该参数取值的不同对样本进行划分。
对划分后的每个部分重复1,2步。直到划分在一起的样本属于同一类或者参数耗尽(以集合中多数样本的类别作为该集合的类别)
核心问题就在于在每个树节点如何选择参数?首先看一个简单的相亲决策树。在该问题中我们需要对候选相亲对象进行分类,一类是不考虑与其相亲(不见),另一类是考虑(见面)。在分类中我们考虑的参数有4个:1.年龄2.长相3.长相4.是否公务员

这4个参数的可选值都只有两个,即年龄分E(>30、<=30);长相E(丑、中等以上);收入E(高、低);公务员E(是、不是)
c
在这个具体的分类问题中,树节点的参数的可选值是人为指定的并且可选范围有限。对于简单的问题,这种人为指定是很有效的。比如,西瓜和苹果混在一起,需要分类。那么决策树中只需要一个参数,即直径大小,就可以完成分类。

然而对与稍微复杂点的问题使用决策树分类则不能简单的使用手工指定参数,一是样本数量巨大,参数众多,各参数的可选取值数量极大。二是手工指定参数不太现实,对于多参数多可选值,人为指定代价太大,同时由于个人经验问题,只有专家才能给出合理的参数选择。对于大规模应用不现实。所以能自动的参数选择算法就显的尤为重要。

为决策树提供参数选择的算法很多,C4.5就是其中一个。

C4.5的参数选择

C4.5的目标是让构建出来的决策树规模最小。基于这个目标,考虑到决策树最终的叶节点越纯(含有的类别越少)则规模则可能越小。C4.5使用信息熵来定义叶节点的纯度(目标函数)。

E(x)=-∑p(xi)log(2,p(xi)) (i=1,2,..n)

当叶节点所包含的类越少则熵越小,则纯度越高。相反纯度低。C4.5的目标就是让分裂向着纯度高的方向发展。这样就引入了信息增益的概念:树节点分裂前的节点熵减去分裂后子节点的熵的加权和,即纯度的增长速度。这样参数选择的原则就明确了,即选择这样的参数,该参数使分裂后的纯度最大化增加。

设训练集为S=s1,s2,…… 其中si为训练样本。每个样本si=x1,x2,……其中x1,x2为si的属性.si用一个向量来表示其属性。训练集S中的样本属于类别集合C=c1,c2,……中的某一类。

在决策树的每一个节点C4.5选择信息增益最大的一个属性来做决策。伪代码如下:

For each attribute a
Find the normalized information gain from splitting on a

Let a_best be the attribute with the highest normalized information gain
Create a decision node that splits on a_best
Recurse on the sublists obtained by splitting on a_best, and add those nodes as children of node
WEKA中就实现了C4.5算法。 有兴趣实用该算法的可以下载weka(官方) 试用。PS: Weka是一个常用的数据挖掘工具,用java实现,很多常用算法都已经实现。不过对于大数据量或高维数据,处理起来速度还并不理想。现在版本已经到3了,不知道速度是否有所提高。不管怎样用于小数据量数据的挖掘还是不错的工具。推荐。

另外C4.5 基于ID3算法针对离散属性型数据。C4.5之后的C5.0主要是应用于大数据集的分类算法。在执行效率和内存使用上做了优化。C5.0与C4.5的比较参考:http://www.rulequest.com/see5-comparison.html

C4.5 详细介绍的书籍:《C4.5 : programs for machine learning》(英文扫描版)

本文固定链接: http://www.chepoo.com/top-10-algorithms-in-data-mining-adaboost-1.html | IT技术精华网

数据挖掘:Top 10 Algorithms in Data Mining(一)C4.5:等您坐沙发呢!

发表评论