目录
五、第五章 决策树
1、决策树模型与学习
决策树
决策树与条件概率分布
决策树学习
2、特征选择
信息增益
3、决策树生成
ID3算法
4、决策树的剪枝
CART算法
决策树是一种基本的分类与回归方法。本章主要讨论用于分类的决策树。决策树模型呈树形结构,在分类问题中,表示基于特征对实例分类的过程。它可以认为是if-then规则的集合,也可以认为是定义在特征空间与类空间上的条件概率分布。其主要优点是模型具有可读性,分类速度快。学习时,利用训练数据,根据损失函数最小化的原则建立决策树模型。预测时,对新的数据利用决策树模型进行分类。决策树学习包括3个步骤:特征选择、决策树生成和决策树的剪枝。
分类决策树模型时一种描述对实例进行分类的树形结构。决策树由结点和有向边组成。结点由两种类型:内部结点和叶结点。内部结点表示一个特征或属性,叶结点表示一个类。用决策树分类,从根结点开始,对实例的某一特征进行测试,根据测试结果,将实例分配到子结点,这时,每个子结点对应该特征的一个取值。如此递归地对实例进行测试并分配,直至达到叶节点。最后将实例分到叶节点的类中。
决策树还表示给定特诊条件下类的条件概率分布,这一条件概率分布定义在特征空间的一个划分上。将特征空间划分为互不相交的单元或区域,并在每个单元定义一个类的概率分布就构成了一个条件概率分布。
决策树学习本质上是从训练数据集中归纳出一组分类规则。与训练集不相矛盾的决策树(即能对训练数据进行正确分类的决策树)可能有多个,也可能一个都没有。我们需要的是一个与训练数据矛盾较小的决策树,同时具有很好的泛化能力。从另一个角度看,决策树学习是由训练数据集估计条件概率模型。基于特征空间划分的类的条件概率模型有无穷多个。我们选择的条件概率模型应该不仅对训练数据有很好的拟合,而且对位置数据有很好的预测。
特征选择在于选取具有分类能力的特征,这样可以提高决策树学习的效率。如果利用一个特征进行分类的结果与与随机分类的结果没有很大差别,则称这个特征是没有分类能力的。经验上扔掉这样的特征对决策树学习的精度影响不大。通常特征选择的准则是信息增益或信息增益比。
首先给出熵与条件熵的定义:
在信息论与概率统计中,熵是表示随机变量不确定性的度量。设X是一个取有限个值得离散随机变量,其概率分布为
则随机变量X的熵的定义为
若其中,则定义H(X)=0。
设有随机变量(X,Y),其联合概率分布为
条件熵H(Y|X)表示在已知随机变量X的条件下随机变量Y的不确定性。随机变量X给定的条件下随机变量Y的条件熵H(Y|X)定义为X给定条件下Y的条件概率分布的熵对X的数学期望:
这里,
当熵和条件熵中的概率由数据估计得到时,所对应的熵与条件熵分别称为经验熵和经验条件熵。
信息增益:
特征A对训练数据集D的信息增益g(D,A)定义为集合D的经验熵H(D)与特征A给定条件下D的经验条件熵H(D|A)之差,即
一般地,熵H(Y)与条件熵H(Y|X)之差称为互信息。决策树学习中的信息增益等价于训练数据集中类与特征的互信息,也就是
信息增益比:
以信息增益作为划分训练数据集的特征,存在偏向于选择取值较多的特征的问题。使用信息增益比可以对这一问题进行校正。这是特征选择的另一准则。
特征A对训练数据集D的信息增益比定义为其信息增益与训练数据集D关系特征A的值的熵之比,即
输入:训练数据集D,特征集A阈值
输出:决策树T
(1) 若D中所有实例属于同一类,则T为单结点树,并将作为该结点的标记,返回T;
(2) 若A = ,则T为单结点,并将D中实例数最大的类作为该结点的类标记,返回T;
(3) 否则,计算A中各特征对D的信息增益,选择信息增益最大的特征;
(4) 如果的信息增益比小于阈值,则置T为单结点树,并将D中实例数最大的类作为该结点的类作为标记,返回T;
(5) 否则,对的每一可能取值ai,依照=ai将D分割为若干非空子集Di,将Di中实例数最大的的类作为标记,构建子结点,由结点及其子结点构成树T,返回T;
(6) 对第i个子结点,以Di为训练集,以A-{Ag}为特征集,递归的调用步骤(1)~步骤(5),得到子树Ti,返回T;
C4.5算法与ID3算法相比,C4.5算法在生成过程中,用信息增益比来选择特征。
决策树生成算法递归地产生决策树,直到不能继续下去为止。这样产生的树往往对训练数据的分类很准确,但对未知的测试数据的分类却没有那么准确,即出现过拟合现象。过拟合的原因在于学习时过多地考虑如何提高对训练数据正确分类,从而构建出过于复杂的决策树。解决这个问题的办法是考虑决策树的复杂度,对已生成的决策树进行简化。
树的剪枝算法:
输入:生成算法产生的整个树T,参数α。
输出:修剪后的子树Tα
(1) 计算每个结点的经验熵。
(2) 递归地从树的叶结点向上回缩。
设一组叶结点回缩到其父结点之前与之后的整体树分别为TB与TA,其对应的损失函数值分别是Cα(TB)与Cα(TA),如果有Cα(TB)≤Cα(TA)则进行剪枝,即将父结点变为新的叶结点。
(3) 返回步骤(2),直至不能继续为止,得到损失函数最小的子树Tα。
分类与回归树(classification and regression tree,CART)模型是应用广泛的决策树学习方法。CART同样由特征选择、树的生成及剪枝组成,既可以用于分类也可以用于回归。
CART 是在给定输入随机变量X条件下输出随机变量Y的条件概率分布的学习方法。CART假设决策树是二叉树,内部结点特征的取值为“是”和“否”,左分支是取值为“是”的分支,右分支是取值为“否”的分支。这样的决策树等价于递归地二分每个特征,将输入空间即特征空间划分为有限个单元,并在这些单元熵确定预测的概率分布,也就是在输入给定的条件下输出的条件概率分布。
CART算法由两步组成:
(1) 决策树生成:基于训练数据集生成决策树,生成的决策树要尽量大。
(2) 决策树剪枝:用验证集对已生成的树进行剪枝并选择最优子树,这时用损失函数最小作为剪枝的标准。
基尼指数:
对于给定的样本集合D,其基尼系数为
如果样本集合D根据特征A是否取某一可能值a被分为D1和D2两部分,则特征A的条件下,集合D的基尼指数定义为
CART生成算法:
输入:训练数据集D,停止计算的条件
输出:CART决策树
根据训练数据集,从根结点开始,递归地对每个结点进行以下操作,构建二叉决策树:
(1) 设结点的训练数据集为D,计算现有特征对该数据集的基尼指数。此时,对每一个特征A,对其可能的取值a,根据样本点对A=a的测试为“是”或“否”将D分割成D1和D2两部分,计算A=a时的基尼指数。
(2) 在所有可能的特征A以及它们所有可能的切分点a中,选择基尼指数最小的特征及其对应的切分点作为最优特征与最优切分点。依最优特征与最优切分点,从现结点生成两个子结点,将训练数据集依特征分配到两个子结点中去。
(3) 对两个子结点递归地调用步骤(1)和步骤(2),直至满足停止条件。
(3) 生成CART决策树。
CART剪枝:
输入:CART算法生成的决策树T0
输出:最优决策树Tα
(1) 设k=0,T = T0
(2) 设α=+∞
(3) 自上而下地对各内部结点t计算C(Tt),|Tt|以及
这里,Tt表示以t为根结点的子树,C(Tt)是对训练数据的预测误差,|Tt|是Tt的叶结点个数。
(4) 对g(t) = α的内部结点t进行剪枝,并对叶结点t以多数表决法决定其类,得到树T。
(5) 设k=k+1,αk = α,Tk=T
(6) 如果Tk不是由根结点及两个叶结点构成的树,则回到步骤(2);否则,令Tk=Tn
(7) 采用交叉验证法在子树序列T0,T1,...,Tn选取最优子树Tα。