16 决策树
决策树是一种监督学习算法,以树状图为基础,其输出结果为一系列简单实用的规则。它就是一系列的if-then语句,既可以用于分类问题,也可以用于回归问题。构建决策树之通常包括三个步骤:
2)决策树生成
3)决策树剪枝
在介绍具体步骤之前首先介绍信息熵的概念。
16.1 信息熵
信息熵,是一个与信息有关的概念,一般而言,是可以量化的。信息量的大小跟事情的不确定性有关。它应该满足以下4个特点:
-log(x)(0
定义:
假设随机变量X的可能取值有,对于每个可能的取值,其概率,因此随机变量X的熵为:
对于样本集合D来说,随机变量X是样本的类别,即,假设样本有K个类别,||表示类别k的样本个数,|D|表示样本总数,则对于样本集合D来说熵为:
熵越大,样本的不确定性就越大。
16.2 特征选择
特征选择指选择有较强分类能力的特征。而分类能力通过信息增益或者信息增益比来刻画。选择特征的标准是找出局部最优的特征作为判断进行切分,取决于切分后节点数据集合中类别的有序程度(纯度),划分后的分区数据越纯,切分规则越合适。衡量节点数据集合的纯度有:熵、基尼系数和方差。熵和基尼系数是针对分类的,方差是针对回归的。
16.2.1 信息增益(ID3算法)
信息增益是以某特征划分数据集前后的熵的差值。熵可以表示样本集合的不确定性,熵越大,样本的不确定性就越大。因此,可以用某特征划分数据集前后的熵的差值来衡量此特征对于样本集合D划分效果的好坏。给定特征A与训练数据集D,定义信息增益为:
信息增益的缺点是偏向取值较多的特征。特征的值较多时,根据此特征划分更容易得到纯度更高的子集,故划分之后的熵更低,因为划分前的熵是一定的,所以信息增益更大,更偏向取值较多的特征。
16.2.2 信息增益比(C4.5算法)
可以通过定义信息增益比来解决信息增益向取值较多的特征的问题。特征A对训练集D的信息增益比定义为:
其中,表示将当前特征A作为随机变量(取值为特征A的各个特征值)求得的经验熵。
16.2.3 C4.5算法演示
以weka中的天气数据为例(weather.norminal.arff),演示C4.5算法,数据集如下图所示:
令S为天气数据集,共14个样本,每个样本有5个属性。类别标签属性play有两个值{C1=yes,C2=no}。C1=yes在S中出现的概率为9/14,C2=no出现的概率为5/14。因此S的熵为:
第一步:计算所有属性划分数据集S所得的信息增益。
以属性windy为例,取值为{FASLE,TRUE},将S划分为2个子集{S1(8个),S2(6个)}。
对于S1,play=yes有6个样本,play=no有2个样本,则:
对于S2,play=yes有3个样本,play=no有3个样本,则:
则利用属性windy划分S后的熵为:
则按属性windy划分数据集S所得的信息增益值为:
同理,得到S对其他所有属性的信息增益,列示如下:
第二步:计算各个属性的分裂信息和信息增益比。
以outlook属性为例,取值为overcast的样本有4条,取值为rain的样本有5条,取值为sunny的样本有5条:
同理,计算其他属性的信息增益比:
第三步:将信息增益率取值最大的那个属性作为分裂节点,因此以outlook属性作为决策树的根节点。
第四步:对根决策节点的三个不同取值的分支,递归调用以上方法,求子树。最后得到的决策树如下图:
16.3 决策树生成
基本的决策树的生成算法中,典型的有ID3生成算法和C4.5生成算法,它们生成树的过程大致相似,ID3是采用的信息增益作为特征选择的度量,而C4.5则采用信息增益比。
两种算法的比较:
C4.5算法继承ID3算法的优点,并在以下几方面对ID3算法进行了改进:
C4.5算法有如下优点:产生的分类规则易于理解,准确率较高。其缺点是:在构造树的过程中,需要对数据集进行多次的顺序扫描和排序,因而导致算法的低效。此外。C4.5只适合于能够驻留于内存的数据集,当训练集大得无法在内存容纳时程序无法运行。C4.5和ID3两个算法只有树的生成算法,生成的树容易产生过拟合。即对训练集匹配很好,但是预测测试集效果较差。
16.4 决策树停止生成条件
决策树不会无限制的生长,总会有停止分裂的时候,最极端情况为节点分裂到只剩一个数据点时自动停止分裂。为降低决策树的复杂度和提高预测精度,会适当提前终止节点的分裂(先剪枝)。决策树停止分裂的一般性条件为:
当节点数小于一个指定数时,不再继续分裂。因为数据量较少时,再做分裂容易强化噪声数据的作用。其次,降低树生长的复杂性,提前结束分裂一定程度上有利于降低过拟合的影响。
熵和基尼指数(PS:后面介绍)的大小表示数据的复杂程度,当熵或者基尼值过小时,表示数据的纯度比较大,如果熵或者基尼值小于一定程度数,节点停止分裂。
16.5 决策树剪枝
决策树需要剪枝的原因是:决策树生成算法生成的树对训练数据的预测很准确,但是对于末知的数据分类却很差,这就产生过拟合的现象。决策树剪枝过程是从已生成的决策树上裁掉一些子树或者叶节点。
决策树剪枝的方案一般有两种:先剪枝与后剪枝。先剪枝即提前结束决策树的增长,与上述决策树停止生长的方式一样。后剪枝是指决策树生长完成后再进行剪枝的过程。CRAT算法使用的剪枝方式是先剪枝和后剪枝相结合的方法,而C4.5算法使用后剪枝方式。后剪枝方案如下:
16.5.1 错误率降低剪枝(REP)
即根据错误率进行剪枝,如果一颗子树修剪前后错误率没有下降,可认为该子树可以修剪。REP剪枝需要用新的数据集,原因是如果用旧的数据集,不可能出现分裂后的错误率比分裂前错误率要高的情况。由于使用新的数据集没有参与决策树的构建,能够降低训练数据的影响,降低过拟合的程度,提高预测的准确率。
16.5.2 悲观剪枝(PEP)
悲观剪枝即认为决策树的精度在剪枝前后没有影响的话,则进行剪枝。怎样才算是没有影响?如果剪枝后的误差小于剪枝前经度的上限,则说明剪枝后的效果与剪枝前的效果一致,此时要进行剪枝。
16.5.3 代价复杂度剪枝(CCP)
代价复杂度选择节点表面误差率增益值最小的非叶子节点,删除该非叶子节点的左右子节点,若有多个非叶子节点的表面误差率增益值相同小,则选择非叶子节点中子节点数最多的非叶子节点进行剪枝。
表面误差率增益值计算公式如下:
其中,R(t)表示叶子节点的误差代价,R(T)表示子树的误差代价,N(T)表示子树节点个数。r(t)为节点的错误率,p(t)为节点数量的占比;(t)为子节点i的错误率,表示节点i的数据节点占比。
16.6 CART模型
分类与回归树(CART)模型也是一种决策树模型。它即可以用于分类,也可以用于回归。回归生成树采用平方误差最小化策略,分类生成树采用基尼指数最小化策略。
16.6.1 基尼指数
基尼指数表示在样本中一个随机选中的样本被分错的概率。Gini指数越小表示集合中被选中的样本被分错的概率越小,也就是说集合的纯度越高,反之,集合越不纯。即:基尼指数(基尼不纯度)= 样本被选中的概率*样本被分错的概率。公式为:
表示选中的样本属于k类别的概率,则这个样本被分错的概率是(1-)。样本集合中有K个类别,一个随机选中的样本可以属于这k个类别中的任意一个,因而对类别就加和。样本集合D的Gini指数(假设集合中有K个类别)则:
16.6.2 CART算法