周志华的《机器学习》一书对决策树的讲解全面且细致,本文根据该书籍以及其他文献作出自己的理解,如有不恰当之处,还请指出,谢谢。

一、决策树概述

参照数据结构中树的定义,树由节点与边构成。决策树便是利用树的结构进行决策。

以二分类问题为例子,银行会通过一个人的个人信息(包括有职业,年龄,收入,学历)来决策是否贷款。决策的过程使用了如下图所示的决策树:

机器学习 --- 决策树

(1)

二、构建决策树算法

决策树算法使用了分治的思想,通过递归地选择最优特征,根据该特征对训练数据集进行划分,使得各子类有一个较好的分类过程。

设数据集 机器学习 --- 决策树

属性集 机器学习 --- 决策树

参照(1)图的实例,这里的数据集 机器学习 --- 决策树 中的一个实例, 机器学习 --- 决策树 表示第 机器学习 --- 决策树 个人的个人信息(是个向量,包含有职业,年龄,收入,学历), 机器学习 --- 决策树 表示是否贷款给这个人。以根节点为例,职业可以划分成自由职业,白领,工人,那么属性集 A={自由职业,白领,工人 } ,算法用伪代码型式给出:

TreeGenerate(D,A)

生成节点node

if D中的样本全属于同一类别 C
   将node标记成这个类别C的叶子节点
   return
end if

if 属性集无法区分 or D中的样本再A上取值相同
   将node标记成叶子节点,类别标记成D中样本最多的类
   return
end if

从A中选择最优划分属性a

for a' in a
   为 node 建立一个分支,D'表示样本D中在a上取值为a'的样本子集
   if D'为空
      将分支节点标记为叶子节点,类别标记为D中样本最多的类
      return;
   else
      TreeGenerate(D,A\{a'})   // 这里的A\{a'},表示集合A除去a'部分
   end if
end for

 

三、划分选择

整个决策树算法中,最关键的部分是如何从A中选择最优的划分属性。

 

1.信息增益

信息熵是度量样本集合纯度最常用的一种指标,设当前集合 机器学习 --- 决策树 中第 机器学习 --- 决策树 类样本所占比例为 机器学习 --- 决策树 ,则 机器学习 --- 决策树 的信息熵定义为:

机器学习 --- 决策树

其中 机器学习 --- 决策树 的值越小, 机器学习 --- 决策树 的纯度越高

设属性集为 机器学习 --- 决策树 ,使用a对样本集 机器学习 --- 决策树 进行划分,则会产生 机器学习 --- 决策树 个分支节点,这样 机器学习 --- 决策树 就被划分成了 机器学习 --- 决策树 个样本子集合,记作 机器学习 --- 决策树 。由(1)式,可以计算出 机器学习 --- 决策树 相对于 机器学习 --- 决策树 信息熵,这样对于 机器学习 --- 决策树 各类别,有:

机器学习 --- 决策树

定义信息增益为:

机器学习 --- 决策树

当信息增益越大的时候,表示使用属性 机器学习 --- 决策树 进行划分所获得的纯度提升越大。因此整个优化目的为:

机器学习 --- 决策树

 

使用周志华《机器学习》中的例子,一步步构建一个完整的决策树

假设数据集为:

机器学习 --- 决策树

样本总数目为17个

下面分别计算各属性的信息增益:

对色泽属性,有8个正例,9个反例。正例占 机器学习 --- 决策树 ,反例占 机器学习 --- 决策树 ,因此:

机器学习 --- 决策树

色泽有三个可能的取值{青绿,乌黑,浅白},因此将数据集 机器学习 --- 决策树 分成三个子集。

子集合 机器学习 --- 决策树 表示色泽属性为青绿,有6个样例,其中正例占 机器学习 --- 决策树 ,反例占 机器学习 --- 决策树

子集合 机器学习 --- 决策树 表示色泽属性为乌黑,有6个样例,其中正例占 机器学习 --- 决策树 ,反例占 机器学习 --- 决策树

子集合 机器学习 --- 决策树 表示色泽属性为浅白,有5个样例,其中正例占 机器学习 --- 决策树 ,反例占 机器学习 --- 决策树

因此对应子集合的信息增益熵为:

机器学习 --- 决策树

机器学习 --- 决策树

机器学习 --- 决策树

因此信息增益熵为:

机器学习 --- 决策树

同理计算出

机器学习 --- 决策树

机器学习 --- 决策树

机器学习 --- 决策树

机器学习 --- 决策树

机器学习 --- 决策树

机器学习 --- 决策树

这里纹理信息熵最大,因此纹理被选择为划分属性。之后对每个分支节点进一步划分,此时可选的属性集合为{色泽,根蒂,敲声,脐部,触感},基于 机器学习 --- 决策树 计算出各属性的增益,在根蒂,脐部,触感三个属性上取得了最大信息增益,可任选一个作为划分属性。最终得到决策树:

机器学习 --- 决策树

 

2.增益率

上述的信息增益算法对取值数目较多的属性有所偏好,在著名的C4.5决策树使用增益率作为最优划分属性。增益率的定义为:

机器学习 --- 决策树

其中:

机器学习 --- 决策树

上述的增益率准则对可取值数目较少的属性有所偏好,因此C4.5决策树采用了先从划分属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的。

 

3.基尼指数

CART决策树使用基尼指数来划分属性。定义数据集 机器学习 --- 决策树 的基尼值:

机器学习 --- 决策树

基尼值反映从数据集 机器学习 --- 决策树 中随机抽取两个样本,其类别标记不一致的概率,所以 机器学习 --- 决策树 越小,数据集 机器学习 --- 决策树 纯度越高。属性 机器学习 --- 决策树 的基尼指数定义为:

机器学习 --- 决策树

 

四、剪枝处理

剪枝是决策树学习算法对付“过拟合”的主要手段。决策树剪枝的基本策略有预剪枝后剪枝

基于信息增益率的划分准则,有如下结构的决策树。

机器学习 --- 决策树

(1)

这时将之前的数据集划分成训练集(双线上部)和验证集(双线下部)

机器学习 --- 决策树

机器学习 --- 决策树

1.预剪枝

预剪枝指再决策树生成过程中,对每个节点再划分前先进行评估,若当前的划分不能带来泛化性能的提升,则停止划分,并将当前节点标记为叶子节点

基于信息增益准则,如上图所示,未采用任何划分规则时,假设将此根节点标记为叶子节点,并标记成好,因此验证集的精度为 机器学习 --- 决策树 ,若采用脐带属性作为划分准则,则验证集的精度为 机器学习 --- 决策树 ,因此用脐部进行划分得以确定。之后对上图中的节点2进行预剪枝,基于凹陷得到划分后验证集的精度小于划分前的精度,因此不允划分。对于节点3划分前精度等于划分后精度,未能提升验证集精度,因此也不允予划分。节点4的样本都为同一类别,因此不必进行划分。

 

预剪枝基于贪心算法的思想,然而这种剪枝效果有时带来的效果并不是很好,甚至可能会陷入欠拟合的情况中。但可以节省很多的计算资源。

 

2.后剪枝

后剪枝是指先从训练集生成一个完整的决策树,然后自底向上对非叶子节点进行考察,若该节点对应的子树替换成叶子节点,能带来泛化性能的提升,则将该子树替换为叶子节点

以图(1)的决策树为例,自底向上,先考虑第四层。如果将节点6替换成叶子节点,那么该叶节点包含编号{7,15}的训练样本。该节点的类别标记为好瓜,此时决策树的验证集精度提高到了57.1%,因此决定剪枝。

再考虑第三层,对于节点5,若将其子树替换成叶子节点,替换后的叶子节点包含编号为{6,7,15}的训练样本。叶节点类别标记为好瓜,此时验证机的精度提高到71.4%,因此决定剪枝

同理,对节点2验证后,决定剪枝,对节点3和1,不决定剪枝。最终决策树如下图所示:

机器学习 --- 决策树

因此后剪枝决策树欠拟合风险很小,泛化性能优于预剪枝,但是后剪枝过程的时间开销较预剪枝较大。

 

五、连续与缺失值

1.连续值处理

上述决策树都是基于离散属性来生成决策树,现实学习任务会遇到连续属性。而处理连续属性是采用C4.5决策树算法中的二分法离散化连续值。

给定样本集和连续属性 机器学习 --- 决策树 ,设 机器学习 --- 决策树 在 机器学习 --- 决策树 上出现了n个不同的取值,就将这n个值从小到大排序,记为{ 机器学习 --- 决策树 },设划分点为 机器学习 --- 决策树 ,将集合 机器学习 --- 决策树 分成了子集 机器学习 --- 决策树 ,如果属性 机器学习 --- 决策树 的值小于 机器学习 --- 决策树 ,则划分到 机器学习 --- 决策树 中,否则划分到 机器学习 --- 决策树 中。

这里划分点 机器学习 --- 决策树 选择是根据最大信息增益的基础上选择。首先,由于 机器学习 --- 决策树 在 机器学习 --- 决策树 上有n个取值,在区间 机器学习 --- 决策树 中所取的任意值的划分结果相同,因此需要考察 机器学习 --- 决策树 个候选划分点集合。这机器学习 --- 决策树个候选划分集合:

机器学习 --- 决策树

由如下公式:

机器学习 --- 决策树

机器学习 --- 决策树

将候选划分集合带入上式,求解信息增益最大情况下的划分点 机器学习 --- 决策树

 

以下述训练集合为例

机器学习 --- 决策树

对密度属性来说,候选划分集合为

机器学习 --- 决策树

当划分点取0.381时,信息增益最大为0.262

同样地,对含糖率说,当划分点取0.126,此时信息增益最大为0.349

因此: 机器学习 --- 决策树

机器学习 --- 决策树

最终可以得到决策树:

机器学习 --- 决策树

 

2.缺失值处理

机器学习 --- 决策树

如上图数据集,某些样例的部分属性出现缺失。而处理缺失数据的过程要解决两个问题:

  • 如何在属性值缺失的情况下进行划分属性选择
  • 给定划分属性的情况下,若样本在该属性上的值缺失,如何对样本进行划分

 

对于问题一用如下的方式进行求解:

给定训练集 机器学习 --- 决策树 和属性 机器学习 --- 决策树 ,令 机器学习 --- 决策树 表示 机器学习 --- 决策树 中在属性 机器学习 --- 决策树 没有缺失值的样本子集, 机器学习 --- 决策树 表示 机器学习 --- 决策树中属于第 机器学习 --- 决策树 类的样本,定义:

无缺失值样本所占比例: 机器学习 --- 决策树

无缺失样本中第 机器学习 --- 决策树 类所占比例: 机器学习 --- 决策树

无缺失样本中第 机器学习 --- 决策树 类占无缺失样本比例: 机器学习 --- 决策树

 

因此可以重新定义信息增益:

机器学习 --- 决策树

机器学习 --- 决策树 机器学习 --- 决策树

这里有:

机器学习 --- 决策树

 

对于问题二:

如果样本在该属性上出现了缺省值,则将样本按权值划分到所有子节点上,权值计算通过: 机器学习 --- 决策树

相关文章: