决策树算法是数据挖掘领域的核心分类算法之一,其中ID3算法是最为经典的决策树算法。ID3算法理论清晰、使用简单、学习能力较强,且构造的决策树平均深度较小,分类速度较快,特别适合处理大规模的学习问题,目前已得到广泛应用。
基本思想:
角度1. 越是小型的决策树越优于大的决策树(尽管如此该算法也不是总是生成最小的树形结构)
角度2. 引入信息论中互信息(信息增益),作为判别因素的度量,即:以信息熵的下降速度作为选取测试属性的标准,所选的测试属性是从根到当前节点的路径上尚未被考虑的具有最高信息增益的属性
基本原理:
在ID3决策树归纳方法中,通常是使用信息增益方法来帮助确定生成每个节点时所应采用的合适属性。这样就可以选择具有最高信息增益(熵减少的程度最大)的属性最为当前节点的测试属性,以便对之后划分的训练样本子集进行分类所需要的信息最小,也就是说,利用该属性进行当前(节点所含)样本集合划分,将会使得所产生的样本子集中的“不同类别的混合程度”降为最低。因此,采用这样一种信息论方法将有效减少对象分来所需要的次数,从而确保所产生的决策树最为简单。
下面是计算信息熵的方法(摘抄别人的成果引用下):
信息熵就是一组数据包含的信息,概率的度量。一组数据越有序信息熵也就越低,极端时如果一组数据中只有一个非0,其它都是0,那么熵等于0,因为只有可能是这个非0的情况发生,它给人们的信息已经确定了,或者说不含有任何信息了,因为信息熵含量为0。一组数据越无序信息熵也就越高,极端时如果一组数据均匀分布,那么它的熵最大,因为我们不知道那种情况发生的概率大些。假如一组数据由{d1,d2,...,dn}构成,其和是sum,那么求信息熵的公式是。
共14条记录,目标属性是,是否买电脑,共有两个情况,yes或者no。参考属性有4种情况,分别是,age,income,student,credit_rating。属性age有3种取值情况,分别是,youth,middle_aged,senior,属性income有3种取值情况,分别是,high,medium,low,属性student有2种取值情况,分别是,no,yes,属性credit_rating有2种取值情况,分别是fair,excellent。我们先求参考属性的信息熵:
,式中的5表示5个no,9表示9个yes,14是总的记录数。接下来我们求各个参考属性在取各自的值对应目标属性的信息熵,以属性age为例,有3种取值情况,分别是youth,middle_aged,senior,先考虑youth,youth共出现5次,3次no,2次yes,于是信息熵:
类似得到middle_aged和senior的信息熵,分别是:0和0.971。整个属性age的信息熵应该是它们的加权平均值:
。下面引入信息增益(information gain)这个概念,用Gain(D)表示,该概念是指信息熵的有效减少量,该量越高,表明目标属性在该参考属性那失去的信息熵越多,那么该属性越应该在决策树的上层(如果不好理解,可以用极限的方法,即假如在age属性上,当为youth时全部是on,当为middle时也全部是no,当为senior时全不是yes,那么Hage(D)=0)。,类似可以求出Gain(income)=0.029,Gain(stduent)=0.151,Gain(credit_rating)=0.048。最大值为Gain(age),所以首先按照参考属性age,将数据分为3类,如下:
然后分别按照上面的方法递归的分类。递归终止的条件是,
1,当分到某类时,目标属性全是一个值,如这里当年龄取middle_aged时,目标属性全是yes。
2,当分到某类时,某个值的比例达到了给定的阈值,如这里当年龄取youth时,有60%的是no,当然实际的阈值远远大于60%。
最后在剪纸,重新排序等,最终得出所需要的最小树。