C4.5算法的基本原理
设S是s个数据样本的集合。假定类标号ci(I = 1,……,m)具有m个不同的值,设si是类Ci中的样本数。对一个给定的样本分类所需的期望信息由下式给出:
其中,pi是任意样本属于Ci的概率,并用si/s来估计。设属性A具有v个子集si,……,sv;其中,sj包含S中这样一些样本,它们在A上具有值aj。如果A选作测试属性,则这些子集对应于由包含集合S的节点生长出来的分枝。设sij是子集sj中类ci的样本数。根据由A划分成子集的熵由下式给出:
其中,项充当第j个子集的权,并且等于子集(即A值为aj)中的样本个数除以s中的样本总数。熵值越小,子集划分的纯度越高。对于给定的子集sj有:
其中,pij=sij/sj是中的样本属于类ci的概率。
在A上分枝将获得的编码信息是:
以上和ID3算法的基本原理相同,而C4.5所不同的是在后面使用信息增益比例来取代信息增益。
其中,s1到s3是c个值的属性A分割S而形成的c个样本子集。
这时,在属性A上所得到的信息增益比为
C4.5算法计算每个属性的信息增益比。具有最高信息增益比的属性选作给定集合S的测试属性。创建一个节点,并以该属性标记,对属性的每个值创建分枝,并据此划分样本。
C4.5算法的实现
假设用S代表当前样本集,当前候选属性集用A表示,则C4.5算法C4.5formtree(S, A)的伪代码如下。
算法:Generate_decision_tree由给定的训练数据产生一棵决策树
输入:训练样本samples;候选属性的集合attributelist
输出:一棵决策树
(1)创建根节点N;
(2)IF S都属于同一类C,则返回N为叶节点,标记为类C;
(3)IF attribute list为空 OR S中所剩的样本数少于某给定值,则返回N为叶节点,标记N为S中出现最多的类;
(4)FOR each attribute list中的属性,计算信息增益率information gain ratio;
(5)N的测试属性test.attribute = attributelist具有最高信息增益率的属性;
(6)IF测试属性为连续型,则找到该属性的分割阈值;
(7)For each由节点N一个新的叶子节点
{
If该叶子节点对应的样本子集S’为空
则分裂此叶子节点生成新叶节点,将其标记为S中出现最多的类
Else
在该叶子节点上执行C4.5formtree(S’, S’.attributelist),继续对它分裂;
}
(8)计算每个节点的分类错误,进行剪枝。
参考文献
[1] Han Jiawei,Micheline K.数据挖掘:概念与技术[M] TP274.范明,孟小峰 译.北京:机械工业出版社,2001:70-218
[2] 毛国君,段立娟,王实.数据挖掘原来与算法[M].北京:清华大学出版社,2005
[3] Quinlan J R. C4.5:Programs for Machine Learning[M]. NewYork:Morgan Kaufnan,1993
[4] Quinlan J R. Induction of decision tree[J]. Machine Learning 1986, 1(1):81-106
[5] 冯少荣. 决策树算法的研究与改进[J]. 厦门大学学报(自然科学版),2007,17(5):16-18
[6] 李慧慧,万武族. 决策树分类算法C4.5中连续属性过程处理的改进[M] TP301. 1006-2475(2010)08-0008-03
[7] 黄爱辉. 决策树C4.5算法的改进及应用[J].科学技术与工程, 2009,9(1):34-36
[8] J.R.Quinlan. Improved Use of Continuous Attributes in C4.5[J]. Journal of Artificial Intelligence Rearch 4 (1996) 77-90