【超详细】机器学习(西瓜书)第4章决策树知识详解

引入

“这个瓜是好瓜吗?”我们对这样的问题进行决策时,通常会进行一系列的判断或子决策:我们先看“它是什么颜色?”如果它是“青绿色”的,那我们再看“它的根蒂是什么形态?”,如果是“蜷缩”,我们再判断“它敲起来是什么声音?”,如果是“浊响”,那么最后,我们得到最终的决策结果——它是个好瓜……这是人类在面临决策问题时一种很自然的处理机制,而决策树就是基于这样的树结构进行建立的。

一、简单概念

1. 决策树是一种常见的机器学习算法,它是基于树结构来进行决策的。

 2. 一般的,一棵决策树包含一个根节点若干个内部结点若干个叶节点

3. 叶结点对应于决策结果,其他每个结点则对应一个属性测试

4. 每个结点包含的样本集合根据属性测试的结果被划分到子结点中,特别地,根节点包含样本全集。

5.从根节点到每一个叶节点的路径对应了一个判定测试序列

6.决策树学习的目的是为了产生一棵泛化能力强,即处理未知样本能力强的决策树,其基本流程遵循简单而直观的“分而治之”策略。

二、决策树学习基本算法

先摆出基本算法的伪代码



 解释:

  决策树的生成是一个递归的过程,在决策树的基本算法中,有三种情形会导致递归返回:

(1)当前结点包含的样本全属于同一个类别,无需划分;

(2)当前属性集为空,或是所有样本在所有属性上的取值相同,无法划分;

在(2)中的情形下,我们把当前结点标记为当前叶节点,并将其类别设定为该节点所含样本最多的类别

(3)当前结点包含的样本集合为空,不能划分;

在(3)中的情形中下,同样把当前结点标记为叶节点,但将其类别设定为其父结点所含样本最多的样本

注意:情形(2)是在利用当前结点的后验分布,而情形(3)则是把父结点的样本分布作为当前节点的先验分布。

接下来用Titanic简化数据集来具体说明三种情况

数据集D中有7组数据,Xi代表各组数据下不同属性下的不同取值,y即存活情况,y i 代表最终分类结果。X i ={性别 i,船舱等级 i,登船港口 i},y i={0,1}

根据上面的数据集画出的决策树如下:

红色数字代表第几类递归返回,蓝色圆圈中的数字代表叶结点。

(1)结点1在“ 性别 = 女 ”这一分类下,所有的存活情况全部为1 ,没有继续划分的必要,遂把该结点直接作为叶结点,种类就为1.

(2)结点2在“ 船舱等级 = 1”这一划分之后,所有的经过结点2的数据集Dv在所有的属性上的取值相同,无法继续划分,所以把该结点标记为叶结点,划分的种类为Dv中出现次数最多的类别0.  (数据集Dv包含数组3,4,7,均为M,1,S,结果种类为0,1,0)
         结点4和结点5,同理所有属性取值相同或者说是划分完了所有的属性(新属性集为空),无法继续划分,直接标记为叶结点,虽然就只有一组数据但是他们也是属于第二类递归返回的范围。

(3)结点3,在“ 性别 = 男 ”之后,“ 船舱等级 = 3”的样本集合为空集,不能划分,直接标记为叶结点,返回的种类为父结点 (也就是“ 性别 = 男 ”时)数据集的类别中出现次数最多的类别0. (从全部数据集中我们可以看出Pclass属性的取值为1,2,3,但是数据组3,4,5,6,7中都没有“ 船舱等级 = 3”,所以该取值下为空集)

三、划分选择

决策树学习的关键是算法第8行,即如何选择最优划分属性。一般而言,随着划分过程不断进行,我们希望决策树的分支结点所包含的样本尽可能属于同一类别,即结点的“纯度”越来越高。

3.1度量样本集合纯度的指标

3.1.1信息增益

在使用信息增益之前我们先来了解一下信息熵。

信息熵是对事件中不确定信息的量度。自信息量是信源发出某一具体消息所含有的信息量,发出的消息不同所 含有的信息量不同。因此自信息量不能用来表征整个信源的不确定度。 我们定义平均自信息量来表征整个信源的不确定度。平均自信息量又称 为信息熵信源熵,简称

那么,如何计算信息熵?这是一个概率的计算问题:

假定离散属性 a V 个可能的取值 ,若使用a 来对样本集 D 进行划分,则会产生 V 个分支结点,其中第 v 个分支结点包含了 D 中所有在属性a 上取值为 的样本,记为Dv,我们可根据式 (4.1)
算出Dv 的信息熵。
再考虑到不同的分支结点所包含的样本数不同,给分支结点赋予权重 |Dv| / |D|  , 即样本数越多的分支结点的影响越大,
于是可计算出用属性a 对样本集 D 进行划分所获得的“信息增益”(information gain)

信息增益越大,表示使用属性a划分所获得的"纯度提升“越大,结果越好。

著名的ID3算法就是以信息增益为准则进行属性选择。

用信息增益进行划分的过程实际上类似于一个递归过程,小栗子在这里附上了自己的理解,如有错误请在下方评论。 

结合上面的过程,我们可以再来理解一下西瓜书上的例子

3.2 信息增益率

        在上面的介绍中,我们有意忽略了表 4 .1 中 的 “编号”这 一 列 .若把”编号”也作为一个候选划分属性,则根据式(4.2)可计算出它的信息增益为0.998,远大于其他候选划分属性.这很容易理解:“编号”将产生17个分支,每个分支结点仅包含一个样本,这些分支结点的纯度已达最大.然而,这样的决策树显然不具有泛化能力,无法对新样本进行有效预测.
        实际上,信息增益准则对可取值数目较多的属性有所偏好,为减少这种偏好可能带来的不利
影响,著名的C4.5决策树算法 [Quinlan, 1993] 不直接使用信息增益,而是使用“增益率”(gain ra tio )
来选择最优划分属性.采用与式(4.2)相同的符号表示,增益率定义为

 其中

称为属性 a 的 “固有值" (intrinsic value) [Quinlan, 1 9 9 3 ].属 性 a 的可能取值数目越多(即V
大),则 IV (a )的值通常会越大.例如,对 表 4 .1 的西瓜数据集 2 .0 , IV (触感) = 0.874 (V =
2),IV(色泽)= 1.580 (V = 3), IV(编号) =4.088 (V = 17)

需注意的是,增益率准则对可取值数目较少的属性有所偏好,因 此 C4.5算法 并不是直接选择增益率最大的候选划分属性,而是使用了一个启发式[Quinlan, 1993]:先从候选划分属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的.

3.3 基尼指数

        CART 决 策 树 [Breiman et a l, 1984](CART 是Classification and Regression Tree 的简称,这是一种著名的决策树学习算法,分类和回归任务都可用.)
使 用 “基 尼 指 数 "( Gini index) 来选择划分属性.采用与
式(4.1)相同的符号,数据集的纯度可用基尼值来度量:

       

        直观来说, Gini(P) 反映了从数据集 D 中随机抽取两个样本,其类别标记不一致的概率.因
此,Gini(D)越小,则数据集 D 的纯度越高.
于是,我们在候选属性集合 4 中,选择那个使得划分后基尼指数最小的属 性作为最优划分属性,即
 

四、剪枝处理

        剪枝(pruning)是决策树学习算法对付“过拟合”的主要手段.在决策树学习中,为了尽可能正确分类训练样本,结点划分过程将不断重复,有时会造成决策树分支过多,这时就可能因训练样本学得“太好”了,以致于把训练集自身 的一些特点当作所有数据都具有的一般性质而导致过拟合.因此,可通过主动去掉一些分支来降低过拟合的风险.

       决策树剪枝的基本策略有“预剪枝”(prepruning)和 “后剪枝 " (post-pruning) [Quinlan, 1993].

4.1 预剪枝

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

        如何判断决策树泛化性能是否提升呢?这可使用2.2节介绍的性能评估方法.

       
        本节假定采用留出法,即预留一部分数据用作“验证集”以进行性能评估 .
        例如对表4.1 的西瓜数据集 2.0 , 我们将其随机划分为两部分,如表 4 . 2 所示,编号为
{1,2,3,6,7,10,14,15,16,17} 的样例组成训练集,编号为(4 ,5,8,9,11,12,13)的样例组成验证集.
预剪枝方法提炼
(1)不选择当前属性划分,该结点将被标记为叶节点,比较好瓜样例数和坏瓜样例数,将其类别标记为训练样例数最多的类别;(依据决策树算法第6行)
     然后用验证集对其评估,得到验证集精度 z1;
(2)如果依据当前属性划分,其分支结点将被标记为叶节点,同样将其类别标记为样例数最多的类别;
     然后用验证集对其评估,计算验证集精度 z2;
(3)比较两次的精度,如果z1>z2,则不选择当前属性划分;如果z1<z2,则选择当前属性进行划分。

        我们根据以上提炼的方法对西瓜书上的例子进行进一步的理解。

      在划分之前,所有样例集中在根结点。
      若不进行划分,则根据算法 4.2 第 6 行,该结点将被标记为叶结点,其类别标记为训练样例数
最多的类别,假设我们将这 个 叶 结 点 标 记 为 “好瓜”.用 表 4 .2的验证集对这个单结点决策树进
行评估时,则编号为{4,5,8}的样例被分类正确,另外4 个样例分类错误,于是,验证集精度为 
 3/7 x 100% = 42.9%
      在 用 属 性 “脐部”划分之后,图 4 .6 中的结点②、③ 、4  、分 别 包 含 编 号 为{1,2,3,14}
{6,7,15,17}、{10,16} 的训练样例,因 此 这 3 个结点分别被 标 记 为 叶 结 点 “好瓜”、 “好 瓜
”、 “坏 瓜 ”.此 时 ,验证集中编号为 (4 ,5 ,8 ,11 ,12 )的样例被分类正确,验证集精度为 5/7 x
100% = 71.4% > 42.9%.
      于是,用 “脐部”进行划分得以确定。

预剪枝优缺点
(1)优点:
    预剪枝使得决策树的很多分支都没有“展 开”,这不仅降低了过拟合的风险,还显著减少了决策树的训练时间开销和测试时间开销.
(2)缺点:
    但另一方面,有些分支的当前划分虽不能提升泛化性能,甚至可能导致泛化性能暂时下降,但在其基础上进行的后续划分却有可能导致性能显著提高;预剪枝基于“贪心”本质禁止这些分支展开,给预剪枝决策树带来了 欠拟合的风险。

4.2 后剪枝

        后剪枝则是先从训练集生成一棵完整的决策树, 然后自底向上地对非叶结点进行考察,若将该
结点对应的子树替换为叶结点能带来决策树泛化性能提升,则将该子树替换为叶结点。
后剪枝方法提炼
(1)已知构造出的完整的决策树的精度是z1;
(2)自底向上找到一个非叶结点,若剪除其领衔的分支,并将其替换为叶结点后的决策树的精度z2>z1,则将该非叶结点剪除,若z2<z1,则不进行剪除。

后剪枝的优缺点
(1)优点:
    一般情形下,后剪枝决策树的欠拟合风险很小,泛化性能往往优于预剪枝决策树。
(2)缺点:
    后剪枝过程是在生成完全决策树之后进行的,并且要自底向上地对树中的所有非叶结点进行逐一考察,因此其训练时间开销比未剪枝决策树和预剪枝决策树都大得多。

五、连续与缺失值

5.1 连续值处理

到目前为止我们仅讨论了基于离散属性来生成决策树。现实学习任务中常会遇到连续属性,有必要讨论如何在决策树学习中使用连续属性。

由于连续属性的可取值数目不再有限,因此,不能直接根据连续属性的可取值来对结点进行划分。

此时,连续属性离散化技术可派上用场。

最简单的策略是采用二分法对连续属性进行处理。这正是C4.5决策树算法中采用的机制。

5.2缺失值处理

现实任务中常会遇到不完整样本,即样本的某些属性值缺失.例如由于诊测成本、隐私保护等因
素,患者的医疗数据在某些属性上的取值(如HIV测试结果)未知;尤其是在属性数目较多的情况
下,往往会有大量样本出现缺失值. 如果简单地放弃不完整样本,仅使用无缺失值的样本来进行学
习,显然是对数 据信息极大的浪费.显然,有必要考虑利用有缺失属性值的训练样例来进行学习.

 

5.2.1 问题一   如何在属性值缺失的情况下进行划分属性的选择?

5.2.2 问题二 给定划分属性,若样本在该属性上的值缺失,如何对样本进行划分?

 

六、多变量决策树

        若我们把每个属性视为坐标空间中的一个坐标轴,则 d 个属性描述的样本就对应了 d 维空间
中的一个数据点,对样本分类则意味着在这个坐标空间中寻找不同类样本之间的分类边界.
决策树 所形成的分类边界有一个明显的特点: 轴平行(axis-parallel),即它的分类边界由若干个与坐标轴平行 的分段组成。
以表 4 .5 中的西瓜数据 3 .0 a 为例 ,将它作为训练集可学得图 4.10 所示的决策树 ,这棵树所对应的
分类边界如图 4.11所示.

        显 然 ,分 类 边 界 的 每 一 段 都 是 与 坐 标 轴 平 行 的 .这 样 的 分 类 边 界 使 得 学 习
结 果 有 较 好 的 可 解 释 性 ,因 为 每 一 段 划 分 都 直 接 对 应 了 某 个 属 性 取 值 .但 在 学
习任务的真实分类边界比较复杂时,必须使用很多段划分才能获得较好的近似,如图4.12所示;
        此时的决策树会相当复杂,由于要进行大量的属性测试,预测时间开销会很大. 若能使用斜的划分边界,如 图 4.12中红色线段所示,则决策树模型将大为简 化 .
       “多变量决策树" (multivariate decision tre e )就是能实现这样的“斜划 分”甚至更复杂划分的决策树。

        以实现斜划分的多变量决策树为例,在此类决策树中,非叶结点不再是仅对某个属性,而是对属性的线性组合进行测试;换言之,每 个 非 叶 结 点 是 一 个 形 如

的线性分类器,其 中 \omega _{i}   是属性  ai 的权重,她和t 可在该结点所含的样本集和属性集上学得.于是,与
传统的“单 变 量 决 策 树 "(univariate decision tre e ) 不同,在多变量决策树的学习过程中,
不是为每个非叶结点寻找一个最优划分属性,而是试图建立一个合适的线性分类器。
例如对西瓜数据 3 .0 a , 我们可学得图 4.13 这样的多变量决策树,其分类边界如图4.14 所示.

  • 5
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值