数据挖掘十大算法(一):决策树分类C4.5算法

一、决策树分类的思想

如下图所示,为一个待训练的数据集/训练集,表示一个人具备年龄、收入、是否学生、信誉这4个属性,待训练的目标是这个人是否购买计算机。其中年龄、收入、是否学生、信誉被称作描述属性,是否购买计算机称作类别属性,即分为什么类别。


为了理解什么叫决策树,我们直接跳到结果(利用上述数据集,得到的决策树),决策树如下图:


这个决策树的含义,类似于一个程序判断框图,输入一个人的属性值4元组:(年龄,收入,是否学生,信誉),就可以判断这个人是否购买电脑。例如:

(>40,高,否,中)-------先根据年龄,进入>40那棵子树,然后判断信誉:“中”,因此预测结果:这个人会购买电脑。

(<=30,中,是,中)-----先根据年龄,既进入<=30那棵子树,然后判断是否学生:“是”,因此预测:这个人会购买电脑。

(30~40,中,否,优)----根据年龄,进入30~40那棵子树,直接可以得到结果:这个人会购买电脑。

——————————————————————————————————————————

上面以举例的方式,阐述了训练集/数据集以及决策树的概念和作用,那么下面的问题是:如何根据训练集得到决策树呢?关键的问题是:如何决定决策树的分支节点对应的属性呢?


二、无条件熵、条件熵、信息增益、信息增益比

此处,通过对上述数据集的计算,阐述这4个信息熵相关的概念。

1. 无条件熵

无条件熵针对类别属性而言,此例中,类别有“是”和“否”。共有14个实例,“是”有9个,“否”有5个。

记类别属性为C,因此,定义类别属性的无条件熵为:

其中log是以2对底的对数。   


2. 条件熵

条件熵针对类别属性和某个描述属性而言,例如针对属性年龄而言,将年龄属性记作A1,那么年龄属性可以取3个值,每个值对应的类别属性情况为:

<=30----5个: 是:2,否:3

30~40---4个: 是:4,否:0

>40------5个: 是:3,否:2

因此,定义条件熵为:


3. 信息增益

信息增益,针对某个描述属性而言。例如,定义年龄的信息增益为:



4. 信息增益比

信息增益比,针对某个描述属性而言。例如,定义年龄的信息增益比为:


其中S(A1)是根据年龄这个描述属性值而言的,根据描述属性,样本被分为多少类别,每个类别的个体数为多少,情况如下:

<=30----5个 

30~40---4个

>40------5个

所以,S(A1)的定义如下:



三、ID3算法和C4.5算法

决策树构建的关键是,如何选择树的分支节点所对应的属性。

ID3算法是根据信息增益选择的,哪个属性的信息增益最大,则作为这一层的分支节点的属性。

C4.5算法是根据信息增益比选择的,哪个属性的信息增益比最大,则作为这一层的分支节点的属性。


四、ID3算法的算例

第一层:

根据前面提到的数据集,计算各个描述属性的信息增益值,

年龄:G(C, A1) = E(C) - E(C, A1)

收入:G(C, A2) = E(C) - E(C, A2)

学生:G(C, A3) = E(C) - E(C, A3)

信誉:G(C, A4) = E(C) - E(C, A4)

E(C)都是相同的,因此可以只计算E(C, Ai),看哪个属性的E(C, Ai)最小,那么G(C, Ai)就最大,这个属性就应该作为该层的分支节点属性。

E(C, A1) = 0.693536

E(C, A2) = 0.911063

E(C, A3) = 0.78845

E(C, A4) = 0.892159

其中E(C, A1)最小,即年龄的信息增益最大,所以它作为第一层的分支属性。

这是第一层,然后根据“年龄”属性值的不同,将数据集拆分为3个数据集,再在每个数据集中做同样的操作,知道每个子数据集中的所有个体同属一个类别为止。最终的决策树,在前面已经给出,为:



五、ID3算法与C4.5的优缺点

1. ID3算法倾向于选择定义域大的属性作为分支节点的属性,C4.5算法利用信息增益比来选择属性。

2. ID3算法只针对离散属性,C4.5算法增加了对连续属性、属性值空缺的处理。

猜你喜欢

转载自blog.csdn.net/ten_sory/article/details/80994611