第五章 决策树
概述
1.可以认为是if-then的集合,也可以认为是定义在特征空间与类空间上的条件概率分布。
2.主要优点是模型具有可读性,分类速度快。
3.包括三个步骤:特征选择、决策树的生成和决策树的修剪。
5.1 决策树模型与学习
决策树的损失函数通常是正则化的极大似然函数。
现实中决策树算法通常采用启发式方法,近似求解这一最优化问题,这样得到的决策树是次最优的
决策时常用的算法有ID3、C4.5与CART。
5.2 特征选择
特征选择在于选取对训练数据具有分类能力的特征,可以提高决策树学习的效率。
通常特征选择的准则是信息增益或信息增益比。
信息增益
熵表示随机变量不确定性的度量。随机变量X熵的定义为
若p=0,则定义0log0 = 0。当式中的对数以2为底或以e为底,这时熵的单位分别称为比特或者纳特。
当随机变量只取两个值,例如1或0,即X的分布为:
熵为:
当p=0或p=1时H(p)=0,随机变量完全没有不确定性,当p=0.5时,H(p)=1,熵取值最大,随机变量不确定性最大。
条件熵H(Y|X)表示在X条件下Y的不确定性:
当熵和条件熵中的概率由数据估计(特别是极大似然估计)得到时,所对应的熵与条件概率分别称为经验熵和经验条件熵。
信息增益表示得知特征X的信息而使类Y的信息的不确定性减少的程度
定义5.2 (信息增益) 特征A对训练集D的信息增益g(D,A),定义为集合D的经验熵H(D),与特征A给定条件下D的经验条件熵H(D|A)之差,即
一般的,熵H(Y)与条件熵的差称为互信息。信息增益等价于互信息。
根据信息增益准则的特征选择方法是,对训练数据集D,计算其每个特征的信息增益,并比较它们的大小,选择信息增益最大的特征。
信息增益比
特征A对训练数据集D的信息增益比 gR(D,A) g R ( D , A ) 定义为其信息增益g(D,A)与训练数据集D关于特征A的值的熵 HA(D) H A ( D )
之比,即
5.3 决策树的生成
ID3算法
ID3算法的核心是在决策树的各个结点用信息增益准则选择特征,递归的构建决策树。具体方法是:从根节点开始,对结点计算所有可能特征的信息增益,选取信息增益最大的特征作为结点的特征,由该特征的不同取值建立子结点;再对子结点递归的调用以上方法,构建决策树。直到所有的特征的信息增益均很小或没有特征可以选择为止。
ID3算法主要用来处理离散性问题,不适合用于处理连续性问题。
算法 (ID3 算法)
输入:训练数据集D,特征集A,阈值 ε ε ;
输出:决策树T
(1)若D中所有实例属于同一类C,则T为单结点树,并将C作为该结点的类标记,返回T;
(2)若A是空集,则T为单结点树,并将D中实例数最大的类C作为该结点的类标记,返回T;
(3)否则,计算A中各特征对D的信息增益,选择信息增益最大的特征。
(4)如果所选择的特征的信息增益小于阈值,则T为单结点树,并将D中实例数最大的类作为该结点的类标记,返回T;
(5)否则,对所选特征的每一个可能值a,依据A=a将D分割为若干非空子集 Di D i ,将 Di D i 中实例数最大的类作为标记,构建子结点,由结点及其子结点构成树T,返回T;
(6)对第i个子结点,以 Di D i 为训练集,以除去已用特征外的其他特征作为特征集,递归的调用(1)~(5)的过程,得到子树并返回。
C4.5的生成算法
C4.5算法与ID3算法相似,只不过用信息增益比代替信息增益来选择特征。
5.4 决策树的剪枝
如果不进行树的剪枝操作,决策树可能过于复杂,泛化能力差,即出现过拟合。具体的,剪枝过程是从已生成的树上裁掉一些子树或者叶结点,并将其根结点或父结点作为新的叶结点。
决策树的剪枝往往通过最小化决策树整体的损失函数值来进行的。假设有T个结点,t是树T的叶结点,叶结点上有 Nt N t 个样本点,其中k类的样本点有 Ntk N t k 个,k=1,2,3,…,K,决策树学习的损失函数可以定义为:
其中经验熵为:
|T|表示模型的复杂度, α≥0 α ≥ 0 控制两者之间的影响,较大的 α α 趋向选择较为简单的树,较小的 α α 趋向选择较为复杂的树,当 α α =0时,只考虑树对数据分类的准确程度,不考虑模型的复杂度。
决策树生成算法学习局部的模型,决策树剪枝算法学习整体的模型
算法 (树的剪枝算法)
输入:生成算法生成的树T,参数
输出:修剪后产生的子树 Tα T α ;
(1)计算每个结点的经验熵。//为下一步计算损失函数值做打算。
(2)递归地从树的结点向上回缩。
如果剪枝后的整体树的损失函数值小于剪枝前的值,那么进行剪枝,即将父结点变为新的叶结点。
(3)重复步骤(2),得到损失函数值最小的子树。
5.5 CART算法
回归树生成(最小二乘回归树生成算法)
Y是连续变量
输入:训练数据集D;
输出:回归树f(x).
在训练集所在的空间中,递归的将每个区域划分为两个子区域并决定每个子区域上的输出值,构建二叉决策树。
(1)选择最优切分变量和最优切分点s,求解
遍历变量j,对固定变量j扫描切分点s,选择使上式最小的对(j,s)。
(2)对选定的对(j,s)划分区域并决定相应的输出值。
(3)继续对两个子区域调用步骤(1),(2),直至满足停止条件。
(4)将输入空间划分为M个区域,生成决策树。
分类树的生成
Y是离散变量
基尼指数
分类问题中,假设有K个类,样本点属于第k类的概率为 pk p k ,则概率分布的基尼指数为
如果样本集合D根据特征A是否取某一可能值a被分割成 D1 D 1 , D2 D 2 两部分,则在特征A的条件下,集合D的基尼指数为:
CART生成算法
输入:训练数据集D,停止计算的条件(样本个数小于预定阈值,或样本的基尼指数小于阈值,或者没有更多特征)。
输出:CART决策树。
根据训练数据集,从根结点开始,递归的对每个结点进行以下操作,构建二叉树。
(1)设结点的训练数据集为D,计算现有特征对该数据集的基尼指数。对每个特征A,对其每个取值a,根据A是否等于a将其分为两类,计算A=a时的基尼指数。
(2)在其所有特征及其所有取值中,选择基尼指数最小的特征及其取值作为最优特征及最优切分点。并将数据划分到两个子结点中。
(3)对两个子结点递归的调用(1),(2),直至满足停止条件。
(4)生成最终的决策树。
CART剪枝
损失函数:
T为任意子树,C|T|为训练数据的预测误差,|T|是子树的叶结点个数
α α 的意义同5.4
CART剪枝算法
输入:CART算法生成的决策树 T0 T 0
输出:最优决策树 Tα T α
(1)设k=0,T= T0 T 0
(2)设 α=+∞ α = + ∞
(3)自上而下的对各内部结点计算
(4)对 g(t)=α g ( t ) = α 的内部结点t进行剪枝,并对叶结点t以多数表决法决定其类,得到树T
(5)设 k=k+1,αk=α,Tk=T k = k + 1 , α k = α , T k = T
(6)如果生成的树不是由根结点及两个叶结点构成的树,则回到步骤(3);否则令 Tk=Tn T k = T n
(7)采用交叉验证法在子树序列中选择最优子树。
通俗说法
对于一棵由CART生成算法生成的决策树,从它的叶结点上面的第一个内部结点开始,尝试剪去每一个这样的叶结点,选择其中 α α 最小的叶结点真正剪去,以此向上重复此过程,直至根结点成为最后一棵子树(单结点树),然后,使用一个验证集按照选定的指标(基尼指数、平方误差)对这些剪枝后的子树进行筛选,选出最佳子树。