数据挖掘十大经典算法-C4.5算法

数据挖掘十大经典算法如下:

十大算法分别归属分类、统计学系、关联分析、链接挖掘、集装与推进、聚类

十大算法共分为6个主题类别,其中分类算法最多,占4个;其次是统计学习,占2个;剩下的关联分析、链接挖掘、集装与推进、聚类各占一个。一般来说,分类算法为有监督学习(所谓有监督学习就是给定一堆样本,每个样本都有一组属性和一个类别(标签),这些类别(标签)是事先确定的,那么通过学习得到一个分类器,这个分类器能够对新出现的对象给出正确的分类),聚类算法为无监督学习。

C4.5算法

简介

C4.5是决策树算法的一种。决策树算法作为一种分类算法,目标就是将具有p维特征的n个样本分到c个类别中去。决策树算法是在已知各种情况发生概率的基础上,通过构成决策树来评价项目风险,判断其可行性的决策分析方法,是直观运用概率分析的一种图解法。常见的决策树算法有ID3,C4.5,CART。决策树是一种树形结构,其中每个内部节点表示一个属性上的测试,每个分支代表一个测试输出,每个叶节点代表一种类别。

举个栗子

用一个范例来说明下啥是决策树。现如今通过相亲解决个人问题的很多;那么就可以通过某一类人相亲结果大数据下的评价,完成该决策树,以便对以后该类同学的相亲行为进行初步预测来节约时间。(此处应该有图)


这就是决策树,相亲鄙视链是不是很残酷

为了通过大量数据,完成一个类似上图的决策树,就要通过决策树算法实现。ICDM于2006年底评选数据挖掘十大经典算法,C4.5(分类决策树)居首,在这里讲一下C4.5决策树算法的主要思想。

基本思想

决策树算法需要解决的两个主要问题:

1)先选择哪个属性,后选择哪个属性来进行分裂?2)什么时候树停止生长?

这里,C4.5算法是这样解决的:

1)用信息增益率来选择属性分裂;2)构造树的过程中进行剪枝操作降低过拟合风险。下面分别介绍。

1. 划分选择

       即选择最优划分属性,一般对着划分过程的不断进行,即希望决策树的分支节点所包含的样本尽可能属于同一类,即节点的“纯度”越来越高。

       这里引出“信息熵”的概念。“熵”是对混乱程度的度量,越乱熵越大,是一个度量样本集合纯度最常用的指标。划分节点处到底用哪个属性的时候,希望节点处属性纯度大,也就是熵更小。信息熵的计算公式如下:

       用划分前(父节点)的不纯度和划分后(子女节点)的不纯度的差来来衡量属性分裂的测试结果,该指标成为信息增益,也就是熵的差,计算公式如下:

       一般而言,信息增益越来,意味着用该属性进行划分所获得的“纯度提升”越大,因此可以作为划分属性的选择。ID3决策树即采用信息增益为准则选择划分属性。

       但是实际上,信息增益对可取值数目较多的属性有所偏好,为减少这种不利,C4.5决策树算法产生,其将信息增益替换成增益率,来选择最优划分属性,其公式如下:

2.剪枝处理

       剪枝处理通过主动去掉一些分支来降低决策树分支太多,来防止训练样本学习得太好(过拟合,把训练集自身的一些特点当做所有数据都具有的一般特性)的发生。在C4.5算法中,采用了悲观剪枝(PEP算法)的方法,使用训练集生成决策树,又用训练集来进行剪枝。

       悲观剪枝主要通过递归估算每个内部节点所覆盖样本节点的误判率,然后假设需要进行剪枝操作,则剪枝后该内部节点会变成一个叶子节点,该叶子节点的类别为原内部节点的最优叶子节点所决定。计算比较剪枝前后该节点的错误率来决定是否进行剪枝。

优缺点

优点

产生的分类规则易于理解,准确率较高。

缺点

在构造树的过程中,需要对数据集进行多次的顺序扫描和排序,因而导致算法的低效。

理论联系实际

通过C4.5算法对天气数据集建模,形成决策树,根据采集的各种属性信息,决定活动的进行与否


上述数据集有四个属性,属性集合A={ 天气,温度,湿度,风速}, 类别标签有两个,类别集合L={进行,取消}。

1. 计算类别信息熵

类别信息熵表示的是所有样本中各种类别出现的不确定性之和。根据熵的概念,熵越大,不确定性就越大,把事情搞清楚所需要的信息量就越多。


样本中一共14条记录,9条为进行类别,5个为取消类别


2. 计算每个属性的信息熵

每个属性的信息熵相当于一种条件熵。他表示的是在某种属性的条件下,各种类别出现的不确定性之和。属性的信息熵越大,表示这个属性中拥有的样本类别越不“纯”。

3. 计算信息增益

信息增益 = 熵 - 条件熵,在这里就是 类别信息熵 - 属性信息熵,它表示的是信息不确定性减少的程度。如果一个属性的信息增益越大,就表示用这个属性进行样本划分可以更好的减少划分后样本的不确定性,当然,选择该属性就可以更快更好地完成我们的分类目标。

信息增益就是ID3算法的特征选择指标。


但是我们假设这样的情况,每个属性中每种类别都只有一个样本,那这样属性信息熵就等于零,根据信息增益就无法选择出有效分类特征。所以,C4.5选择使用信息增益率对ID3进行改进。

4.计算属性分裂信息度量

用分裂信息度量来考虑某种属性进行分裂时分支的数量信息和尺寸信息,我们把这些信息称为属性的内在信息(instrisic information)。信息增益率用信息增益 / 内在信息,会导致属性的重要性随着内在信息的增大而减小(也就是说,如果这个属性本身不确定性就很大,那我就越不倾向于选取它),这样算是对单纯用信息增益有所补偿。

5. 计算信息增益率

IGR(天气)=Gain(天气)/H(天气)=0.246/1.577=0.155

IGR(温度)=Gain(温度)/H(温度)=0.029/1.556=0.0186

IGR(湿度)=Gain(湿度)/H(湿度)=0.151/1=0.151

IGR(风速)=Gain(风速)/H(风速)=0.048/0.985=0.048

天气的信息增益率最高,因此,选择天气为分裂属性。发现分裂了之后,天气是“阴”的条件下,类别是”纯“的,所以把它定义为叶子节点,选择不“纯”的结点继续分裂。


在子结点当中重复过程1~5。

至此,这个数据集上C4.5的计算过程就算完成了,一棵树也构建出来了。

总结算法流程为:

代码

测试数据集为MNIST数据集,获取地址为train.csv

运行结果


你可能感兴趣的:(数据挖掘十大经典算法-C4.5算法)