简介
对于《数据挖掘导论》的学习总结,使用C4.5决策树。
正文
以C4.5为基础,决策树算法的一般过程如下:
- 给定一个表示为“属性-值”格式的数据集T。数据集由多个具有输入属性和一个输出属性的实例组成。
- 选择一个最能区别T中实例的输入属性,C4.5使用增益率来选择该属性。
- 使用该属性创建一个树节点,同时创建该节点的分支,每个分支为该节点的所有可能取值。
- 使用这些分支,将数据集中的实例进行分类,成为细分的字类。
- 将当前字类的实例集合设为T,对数据集中的剩余属性重复(2)~(3)步,直到满足一下两个条件之一时,该过程终止,创建一个叶子节点,该节点为沿此分支所表达的分类类别,其值为输出属性的值。
- 该子类中的实例满足预定义的标准,如全部分到一个输出类中,分到一个输出类中的实例达到某个比例。
- 没有剩余属性。
三个关键技术
- 选择最能区别数据集中实例属性的方法。
- 剪枝方法。
- 检验方法。
以上三个方法分别决定了建立过程中的三个重要环节:树分支节点的创建、剪枝和检验。
创建、剪枝和检验的意义:
- 创建:不同的创建方法很大程度上决定了不同的决策树算法。
- 剪枝:优化决策树而采取的剪除部分分支的方法。
- 检验:评估决策树的分类正确程度。
1.选择最能区别数据集中实例属性的方法
C4.5使用了**信息论(information Theory)的方法,即使用增益率(Gain Ratio)**的概念来选择属性,目的是使树的层次和节点数最小,是数据的概化程度最大化。
基本思想:选择具有最大增益率的属性作为分支节点来分类实例数据。
要了解增益率的概念,首先需要了解信息熵和信息增益的概念:
- 信息熵
信息变化的平均信息量称为信息熵(Information Entropy),解决了对信息的量化问题。简单来说,信息熵是信息的不确定程度的度量。信息的信心熵越大,信息就越不容易弄清楚,需要的信息量就越大。信息熵越大,能传输的信息就越多。
计算公式
其中:H(x)表示随机时间x的熵;p表示xi出现的概率;xi表示某个随机时间x的所有可能结果。因为式子中对数的底数为2,所以式中计算得到的熵的单位的单位是bit。
- 信息增益
**信息增益(Information Gain)**表示当x取属性xi值时,其对降低x的熵的贡献大小。信息增益值越大,越适于对x进行分类。
计算属性A的增益率的公式如下:
理解: A的增益率等于A的增益量比上按照A进行分类后的信息熵。
其中,对于一组I实例,计算Gain(A)的公式如下:
理解: A的信息增量等于总的信息量减去总的信息按照A进行分类之后的差值。
根据信息熵的公式,可以很容易地得到Info(I)和Info(I,A)如下。Info(I)为当前数据集所有实例所表达的信息量,Info(I,A)为根据属性A的k个可能取值分类I中实例之后所表达的信息量。
其中n为实例集合I被分为可能的类的个数,k为属性A具有k个输出属性。
理解:
- Info(I):I的信息熵等于最后所有输出结果的类别的概率与其以对应对数的成绩之和的负数。即假如按照天气(晴朗,下雨)为节点,输出为是否打球的话,这里对I的计算类别是打球或者不打球,而不是按照天气的情况做分类。(易错点,容易与SplitsInfo(A)弄混)。
- Info(I,A):I按照A的类别进行分类后,每个类别出现的概率与其信息熵(类别的信息熵的分类结果为的最后的输出,即是否打球)的成绩的和的负数。
理解: 对按照A分类的类别的信息熵的和。同样是上面的例子,假如A为天气情况,则这里的类别应该是晴朗或者下雨,而非是否打球。看似和Info(I)相同,但是分类的类别不一样。
2.决策树剪枝
剪枝(Pruning)是为了控制决策树规模,优化决策树而采取的剪除部分分支的方法。剪枝分为两种:预剪枝(Pre-Pruning)和后剪枝(Post-Pruning)。
- 预剪枝:是在树的生长过程中设定停止生长指标,一般是指定数的最大深度和当前实例集合数量小于预先预定的阈值,当达到该指标时就停止继续分支,使决策树不能充分生长,从而达到剪枝的目的。预剪枝最大的问题使最大深度的预先指定是否将会直接导致因限制树的生长影响决策树的质量,使之不能更加准确地对新数据实例进行分类和预测。
- 后剪枝:是指在完全生长而成的决策树的基础上,根据一定的规则标准,剪掉树中不具备一般代表性的子树,取而代之的是叶子节点,进而形成一棵规模较小的新树。悲观剪枝法(Pessimistic Error Pruning,PEP)。PEP是被认为目前决策树后剪枝方法精度较高的技术之一,它使用训练集生成决策树的同时又将其当作剪枝集,剪枝和检验同时进行。
3.决策树检验
- use training set:使用训练集实例进行检验。
- supplied test set:使用另外的检测集进行检验。
- cross-validation:使用交叉验证(Cross Validation)来检验分类器。
- percent split:百分比检验。
其中,交叉检验(CV)是用来检验分类器性能的一种最为常用的统计分析方法,其中基本思想是:将数据集分为训练集和检验集,划分方法不同,存在不同的CV检验方法。
- Hold-Out方法:将数据集随机划分为训练集和检验集。方法简单,但是检验效果不具有说服力。
- k-折交叉检验(k-CV):将数据集分为k组(一般均分,且大于等于2),将数据分别做一次检验集对其余k-1组数据作为训练集建立的模型进行检验,将这k个检验的检验集分类正确率的平均值作为该模型的平均性能度量。该检验可以有效地避免模型训练不够或者训练过度状态的发生,检验结果比较有说服力。
- Leave-One-Out交叉检验:设数据集有n个实例,则将它每个实例单独作为验证集,对其余剩下的实例作为训练集而得出的模型进行检验。