1. 决策树模型
决策树是一种基于树的结构来进行决策的模型。它从根结点开始,对样本的某一特征进行测试,根据测试结果将样本分配到子结点中;然后不断递归地对样本进行测试再分配,直到达到叶结点;最后将样本分到叶结点的类中。
决策树本质上就是从训练数据集中归纳出一组规则,可以把决策树看成是if-then规则的集合。决策树学习通常包括三个步骤:划分选择、决策树生成、决策树剪枝。决策树生成只考虑局部最优,决策树剪枝则考虑全局最优。
2. 优缺点
优点:
1. 决策树模型具有可解释性,输出结果易于理解;
2. 对中间值的缺失值不敏感;
3. 对数值大小不敏感,不需要提前进行归一化。
缺点:
1. 非常容易过拟合,导致泛化能力不强;
2. 样本的一点改变就会导致树结构的剧烈改变;
3. 寻找最优决策树是NP完全问题,一般采用启发式方法来近似求解,易陷入局部最优。
3. 划分选择
最优划分选择的目的是选取对训练数据具有分类能力的特征,使划分后的分支节点所包含的样本尽可能属于同一类别,提高决策树学习的效率。
通常划分选择准则包括信息增益、信息增益率、和基尼系数。
3.1 信息增益(Information gain)
在解释信息增益之前,我们先给出信息熵和条件熵的定义。
信息熵(Information entropy)是表示随机变量的不确定性的一种指标。那么集合的信息熵就定义为:
(1)
其中,代表
中第
类样本所占的比例,
,如果
,那么
。信息熵越小,说明集合
的不确定性越小,纯度越高。
条件熵(Conditional entropy)表示在已知随机变量的条件下随机变量
的不确定性。则在特征
给定的条件下
的条件熵:
(2)
信息增益(Information gain)表示得知特征可以使得数据集
的类别不确定性减少的程度。
假设离散属性有
个可能取值,产生
个分支结点,
表示第
个分支结点,包含了
中所有在特征
上取值为
的样本。那么,用特征
对样本集
进行划分所得到的信息增益就表示为集合
的信息熵
与特征
给定条件下
的条件熵
之差,即:
(3)
信息增益越大,说明使用特征进行划分所获得的“不确定性减少”越多。
ID3(Iterative Dichotomiser,迭代二分器)算法就是用信息增益作为划分准则,也就是选择能够最大化信息增益的特征作为最优划分特征。
3.2 信息增益率(Information gain ratio)
信息增益准则偏向于选择可取值数目较多的特征,信息增益率可以校正这一问题。
信息增益率定义为信息增益与训练集
关于特征
的熵
:
(4)
其中,,
代表
中
特征上取值为
的样本所占的比例。
与信息增益相反的是,增益率准则偏向于选择可取值数目较少的特征。
C4.5就是采用增益率作为划分准则,但它并不是直接选择增益率最大的候选划分特征,而是采用了一个启发式选择:先从候选划分特征中找出信息增益高于平均水平的特征,再从中选择增益率最高的。
3.3 基尼系数(Gini index)
数据集的不确定性可以用基尼系数来度量,给定数据集
的基尼系数定义为:
(5)
反映了从
中随机抽取两个样本,类别标记不一致的概率。
在特征的条件下,
的基尼系数定义为:
(6)
表示经特征
划分后集合
的不确定性,基尼系数值越大,样本集合的不确定性也越大。
CART(Classification and regression tree,分类回归树)以基尼系数作为划分准则,即选择能最小化基尼系数的特征作为最优划分特征。
4. 决策树生成
下面介绍ID3和C4.5的生成算法,CART有一些变化,之后再介绍。
输入:训练集,特征集
,阈值
过程:函数
1. 生成结点;
2. 如果中样本全属于同一类
,则置
为
类叶结点; 返回
;
3. 如果或者
中所有样本在
上取值都相同,则将
置为叶结点,其类别标记为
中样本数最多的类,返回
;
4. 否则,对中所有
都计算信息增益或增益率,从中选择最优划分特征
;
5. 如果特征的不确定性提升(如信息增益,信息增益比)小于阈值
,则将
置为叶结点,其类别标记为
中样本数最多的类,返回
;
6. 否则,按照的每一个可能值
,将
分割成若干个非空子集
,每个子集对应构建一个子结点,其类别标记为
中样本数最多的类,返回节点
及其子结点构成的树;
7. 最后,对所有分支结点,以
为训练集,
为特征集,递归调用
,得到子树
,并将其结合到
上。
输出:一棵以为根结点的决策树
。
5. 决策树剪枝
由于决策树生成算法递归地生成决策树,直到不能继续下去为止,容易造成分支过多,导致过拟合。剪枝(pruning)通过从已生成的树上减掉一些子树或者叶结点来简化决策树模型,缓解过拟合。
决策树剪枝可分为“预剪枝”(prepruning)和“后剪枝”(postpruning)。
(1)预剪枝
预剪枝是自上而下的剪枝,指在决策树生成过程中,对每个结点进行事先估计,如果当前结点的划分不能带来决策树泛化性能的提升,则停止划分并将当前节点标记为叶结点。
优点:
1. 预剪枝使很多分支都没有展开,降低了过拟合的风险。
2. 显著减少决策树的时间开销。
缺点:预剪枝的贪心本质禁止这些分支展开,带来了欠拟合风险。
(2)后剪枝
后剪枝是自下而上的剪枝,指对一棵已经生成的完整决策树自下而上地对非叶节点进行估计,如果将该结点对应的子树替换成叶结点能够带来决策树泛化性能的提升,则将该子树替换成叶结点。
相比于预剪枝,后剪枝是一种更常用的方法,因为在预剪枝中精确估计何时停止树增长很困难。
优点:欠拟合风险小,泛化性能往往优于预剪枝。
缺点:要对树中所有非叶结点进行逐一考察,时间开销很大。
后剪枝主要包括:Reduced-Error Pruning(REP,错误率降低剪枝),Pesimistic-Error Pruning(PEP,悲观错误剪枝),Cost-Complexity Pruning(CCP,代价复杂度剪枝),Error-Based Pruning(EBP,基于错误的剪枝)。
6. 代价复杂度剪枝算法
CCP剪枝最为常用,下面我们主要讨论CCP剪枝算法。
CCP剪枝算法由两步组成:
1. 剪枝,形成一个子树序列。
决策树学习的损失函数可以定义为:
(7)
其中,为任意子树,
是子树的叶结点个数,
表示模型对训练数据的预测误差,是
树中所有叶结点的预测误差之和(ID3是信息增益,C4.5是增益率,CART的回归树是均方差,决策树是基尼系数)。
是正则化参数,用来权衡对训练数据的拟合程度和模型复杂度。
表示子树
的整体损失。
对于一个固定的,一定存在使损失函数
最小的子树
,这样的最优子树是唯一的。
较大时,最优子树
偏小;
较小时,最优子树
偏大。极端情况下,
时整体树是最优的,
时,根结点组成的单节点树最优。
Breiman等人证明:可以用递归的方法对树进行剪枝。将
从小增大,
,产生一系列区间
;剪枝得到的子树序列对应着区间
的最优子树序列
,序列的子树是嵌套的。
具体来说,剪枝前,以为根结点的子树
的损失函数为:
。
剪枝后,以为单结点树的损失函数为:
。
那么一定存在一个,使得
。也就是说,只要
,则剪枝前和剪枝后的损失函数值相等。但显然剪枝后的
单结点树结点更少,更可取,因此有必要将子树
进行剪枝形成
。
对树中每一个内部结点
,都计算其
值,并选出最小的
值作为
,从
中减去使
最小的
,得到
。
是区间
的最优子树。如此剪枝下去,直到得到根结点。在这一过程中,不断增加
的值,产生新的区间。
2. 在剪枝得到的子树序列中通过交叉验证选取最优子树
。
利用独立的验证数据集,测试子树序列中各子树的预测误差,预测误差最小的决策树被当做最优决策树
,且对应的
也确定了。
算法流程如下:
输入:已经生成的决策树
过程:函数
1. 令,
;
2. 令;
3. 自下而上地对树中所有内部结点计算
,并将
置为
;
4. 对的内部结点
进行剪枝,并将叶结点
的类别标记为
中样本数最多的类,得到新的树
。
5. 令,
,
;
6. 如果是由根节点及其子结点构成的二层树(迭代结束条件),则令
;否则回到步骤3;
7. 采用交叉验证法在子树序列中选择最优子树
。
7. 连续值处理
上面仅讨论了利用离散特征来生成决策树,当遇到连续特征时,由于可取值数目不再有限。因此,需要对连续特征进行离散化。最简单的策略是采用二分法进行连续特征离散化。
给定样本集和连续属性
,将
的取值从小到大排序记为
,基于划分点
将
划分为
和
。
对于相邻的特征取值和
来说,划分点
取
中的任意值所产生的划分结果都相同,所以对连续属性
,候选划分点共
个,划分集合为:
(8)
即把的平均数
作为候选划分点。
与离散特征不同的是,如果当前节点划分特征是连续特征,该特征之后还可作为其后代结点的划分特征。
8. 缺失值处理
对于缺失值的处理,主要包含两个问题:
(1)如何在特征值缺失的情况下进行划分特征的选择?
假定特征有
个可能取值,
表示
中在特征
上取值为
的样本子集。
表示
中属于第
类的样本子集。假定给每个样本
赋予一个权重
,初始权重都为1。
需要明确的是,我们仅可以根据在特征上没有缺失值的样本子集
来进行划分选择。
我们只利用有特征值的样本子集
计算信息增益/增益率/基尼系数,并在结果上乘上无缺失值样本所占的比例
。
(2)给定划分属性,若样本在该属性上的值缺失,如何对样本进行划分?
如果样本在划分特征
上取值已知,则将
划入与其对应的子节点,且样本权值在子结点中保持为
;
如果样本在划分特征
上取值未知,则将
同时划入所有子节点,且样本权值调整为
,其中
表示无缺失值样本中在属性
上取值为
的样本所占的比例。
下篇将讲到在决策树生成和剪枝的基本算法上,CART的不同之处。
参考文献:
1. 《机器学习》第四章决策树3——周志华
2. 《统计学习方法》第五章决策树——李航
3. 决策树算法原理(上)