一、概述
C4.5是一系列用在机器学习和数据挖掘的分类问题中的算法。它的目标是监督学习:给定一个数据集,其中的每一个元组都能用一组属性值来描述,每一个元组属于一个互斥的类别中的某一类。C4.5的目标是通过学习,找到一个从属性值到类别的映射关系,并且这个映射能用于对新的类别未知的实体进行分类。
C4.5由J.Ross Quinlan在ID3的基础上提出的。ID3算法用来构造决策树。决策树是一种类似流程图的树结构,其中每个内部节点(非树叶节点)表示在一个属性上的测试,每个分枝代表一个测试输出,而每个树叶节点存放一个类标号。一旦建立好了决策树,对于一个未给定类标号的元组,跟踪一条有根节点到叶节点的路径,该叶节点就存放着该元组的预测。
决策树的优势在于不需要任何领域知识或参数设置,适合于探测性的知识发现。从ID3算法中衍生出了C4.5和CART两种算法。
二、改进表现
(1)ID3算法在选择根节点和各内部节点中的分支属性时,采用信息增益作为评价标准。信息增益的缺点是倾向于选择取值较多的属性,而这类属性并不一定是最优的属性。 (2)在决策树构造过程中进行剪枝,因为某些具有很少元素的结点可能会使构造的决策树过适应(Overfitting),如果不考虑这些结点可能会更好;
(3)能够处理离散型和连续型的属性类型,即将连续型的属性进行离散化处理;
(4)能够处理具有缺失属性值的训练数据。
三、优缺点
优点:产生的分类规则易于理解,准确率较高。
缺点:在构造树的过程中,需要对数据集进行多次的顺序扫描和排序,因而导致算法的低效。此外,C4.5只适合于能够驻留于内存的数据集,当训练集大得无法在内存容纳时程序无法运行。
过拟合的原因:在于学习时过多的考虑如何提高对训练数据的正确分类,从而构建出过于复杂的决策树。
四、决策树
决策树是一种用于分类的树结构。如图所示,它由结点(node)和有向边(directed edge)组成,结点包括内部结点(internal node)和叶结点(leaf node),内部结点表示一个特征或属性,叶结点表示一个类。
决策树学习通常包括3个步骤:特征选择、决策树的生成和决策树的修剪。
决策树如何进行分类呢?从根结点开始,根据待分类数据的某一特征值对其进行划分,分配到相应子结点,因此,每一个子结点都对应了该特征的一个取值。像这样递归进行,直到到达叶结点。
1.特征选择
特征选择在于选取对训练数据具有良好分类能力的特征,这样可以提高决策树的学习效率。通常特征选择的准则是信息增益或信息增益比。
(1)熵
在信息论和概率统计中,熵是表示随机变量不确定性的度量。设X是一个取有限个值得离散随机变量,其概率分布为:
P ( X = x i ) = p i , i = 1 , 2 , 3 , . . . , n P(X=x_i) =p_i,i=1,2,3,...,n P(X=xi)=pi,i=1,2,3,...,n
则随机变量X的熵定义为:
H ( X ) = − ∑ i = 1 n p i l o g p i H(X)= -\displaystyle\sum_{i=1}^{n} p_ilogp_i H(X)=−i=1∑npilogpi
熵越大,随机变量的不确定性就越大。
(2)条件熵
设有随机变量(X,Y)其联合概率分布为:
P ( X = x i , Y = y i ) = p i j , i = 1 , 2 , 3 , . . . , n , j = 1 , 2 , 3 , . . . , n P(X=x_i,Y=y_i) =p_{ij},i=1,2,3,...,n,j=1,2,3,...,n P(X=xi,Y=yi)=pij,i=1,2,3,...,n,j=1,2,3,...,n
条件熵H(Y∣X) 表示在已知随机变量X的条件下随机变量Y 的不确定性,定义为X 给定条件下Y 的条件概率分布的熵对X 的数学期望:
H ( Y ∣ X ) = ∑ i = 1 n p i H ( Y ∣ X = x i ) H(Y|X)= \displaystyle\sum_{i=1}^{n} p_iH(Y|X=x_i) H(Y∣X)=i=1∑npiH(Y∣X=xi)
p i = P ( X = x i ) , i = 1 , 2 , 3 , . . . , n p_i=P(X=x_i),i=1,2,3,...,n pi=P(X=xi),i=1,2,3,...,n
(3)经验熵和经验条件熵
当熵和条件熵中的概率由数据估计(特别是极大似然估计)得到时,对应的熵与条件熵分别称为经验熵和经验条件熵。
(4)信息增益
信息增益表示得知特征X 的信息后特征Y 的信息不确定性减少的程度,反应了特征X对于其他特征不确定性的影响程度。
信息增益:特征A对训练数据集D的信息增益 g ( D , A ) g(D,A) g(D,A),定义为集合D的经验熵H(D)与特征A给定条件下D的经验条件熵 H ( D ∣ A ) H(D|A) H(D∣A)之差,即:
g ( D , A ) = H ( D ) − H ( D ∣ A ) g(D,A)= H(D)-H(D|A) g(D,A)=H(D)−H(D∣A)
根据信息增益准则的特征选择方法是:对训练数据集(或子集)D,计算其每个特征的信息增益,并比较它们的大小,选择信息增益最大的特征。
设训练数据集为D,|D|表示其样本容量,即样本个数。设有K个类 C k C_k Ck, k = 1 , 2 , … , K k=1,2,…,K k=1,2,…,K, ∣ C k ∣ |C_k| ∣Ck∣为属于类 C k C_k Ck的样本个数, ∑ i = 1 n ∣ C k ∣ = ∣ D ∣ \displaystyle\sum_{i=1}^{n} |C_k|=|D| i=1∑n∣Ck∣=∣D∣。设特征A有n个不同的取值 a 1 , a 2 , … , a n {a_1,a_2, …,a_n} a1,a2,…,an,根据特征A的取值将D划分为n个子集 D 1 , D 2 , … , D n D_1,D_2,…,D_n D1,D2,…,Dn, ∣ D i ∣ |D_i| ∣Di∣为Di的样本个数, ∑ i = 1 n ∣ D i ∣ = ∣ D ∣ \displaystyle\sum_{i=1}^{n} |D_i|=|D| i=1∑n∣Di∣=∣D∣。
ID3信息增益算法:
输入:训练数据集D和特征A;
输出:特征A对训练数据集D的信息增益 g ( D ∣ A ) g(D|A) g(D∣A);
(1)计算数据集D的经验熵H(D)
H ( D ) = − ∑ k = 1 K ∣ C k ∣ ∣ D ∣ l o g 2 ∣ C k ∣ ∣ D ∣ H(D)= -\displaystyle\sum_{k=1}^{K} \frac{|C_k|}{|D|}log_2\frac{|C_k|}{|D|} H(D)=−k=1∑K∣D∣∣Ck∣log2∣D∣∣Ck∣
(2)计算特征A对数据集D的经验条件熵H(D|A)
H ( D ∣ A ) = ∑ i = 1 n ∣ D i ∣ ∣ D ∣ H ( D i ) = − ∑ i = 1 n ∣ D i ∣ ∣ D ∣ ∑ k = 1 K ∣ D i k ∣ ∣ D i ∣ l o g 2 ∣ D i k ∣ ∣ D i ∣ H(D|A)=\displaystyle\sum_{i=1}^{n} \frac{|D_i|}{|D|}H(D_i)= -\displaystyle\sum_{i=1}^{n} \frac{|D_i|}{|D|}\displaystyle\sum_{k=1}^{K} \frac{|D_{ik}|}{|D_i|}log_2 \frac{|D_{ik}|}{|D_i|} H(D∣A)=