机器学习之决策树

决策树

(本文参考西瓜书,作为自己学习的记录)

基本流程

决策树(decision tree) 是一类常见的机器学习方法.以二分类任务为例,我
们希望从给定训练数据集学得一个模型用以对新示例进行分类,这个把样本
分类的任务,可看作对"当前样本属于正类吗?“这个问题的"决策"或"判
定"过程.顾名思义,决策树是基于树结构来进行决策的,这恰是人类在面临决
策问题时一种很自然的处理机制
.例如,我们要对"这是好瓜吗?“这样的问题
进行决策时,通常会进行一系列的判断或"子决策"我们先看"它是什么颜
色?”,如果是"青绿色”,则我们再看"它的根蒂是什么形态?",如果是"蜷
缩",我们再判断"它敲起来是什么声音?",最后?我们得出最终决策:这是个
好瓜.这个决策过程如图 4.1 所示.

在这里插入图片描述
图1 西瓜问题的一棵决策树
显然 决策过程的最终结论对应了我们所希望的判定结果,例如"是"或
“不是"好瓜;决策过程中提出的每个判定问题都是对某个属性的"拥 试”,
例如"色泽=?" “根蒂:?”;每个测试的结果或是导出最终结论,或是导出
进一步的判定问题,其考虑范国是在上次决策结果的限定范围之内,例如若在
“色泽=青绿"之后再判断"根蒂=?”,则仅在考虑青绿色瓜的根蒂.
叶结点对应于决策结果?其他每个结点则对应于一个属性测试;每个结点包含
的样本集合根据属性测试的结果被划分到子结点中;根结点包含样本全集.从
根结点到每个叶结点的路径对应了一个判定测试序列.决策树学习的目的是为
了产生一棵泛化能力强,即处理未见示例能力强的决策树,其基本流程遵循简
单且直观的"分而治之" (divide-and-conquer) 策略

划分选择

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

信息增益

信息熵(information entropy)是度量样本集合纯度最常用的一种指标.
假定当前样本集合 中第 类样本所占的比例为 Pk(k=1,2…|y|),则D的信息熵为,

在这里插入图片描述

1信息熵公式
Ent(D)的值越小,则D的纯度越高。
假定离散属性α有V个可能的取值 [α1 ,α2,…αV],若使用来α对样本集
D进行划分,则会产生V个分支结点?其中第v个分支结点包含了D中所有在
属性αv上取值为α_的样本 记为 D_v. 我们可根据式1计算出D_v的信息熵
再考虑到不同的分支结点所包含的样本数不同?给分支结点赋予权重 ID_vI/IDI
即样本数越多的分支结点的影响越大,于是可计算出用属性α对样本集 D进行划分所得的信息增益.
在这里插入图片描述
2信息增益
一般而言,信息增益越大,则意味着使周属性 来进行划分所获得的"纯
度提升"越大.因此,我们可用信息增益来进行决策树的划分属性选择,即a_
= argmax(Gain(D,a)),其中 a属于A。著名的ID3决策树算法就是根据信息增益来划分属性。
以表1中的西瓜数据集 2.0 为例,该数据集包含 17 个训练样例,用以学
习一棵能预测没剖开的是不是好瓜的决策树.显然,|y|=2.在决策树学习开
始时,根结点包含 中的所有样例,其中正例占 p1=8/17,反例占的 p2=9/17
是,根据式1 可计算出根结点的信息熵为:
在这里插入图片描述
在这里插入图片描述
表1 西瓜数据
然后,我们要计算出当前属性集合{色泽,根蒂,敲声,纹理,脐部,触感}
中每个属性的信息增益.以属性"色泽"为例,它有3个可能的取值: {青绿,乌
黑,浅自}.若使用该属性对进行划分,则可得到 3个子集,分别记为: D1
(色泽=青绿), D2 (色泽 =乌黑), D3 (色泽=浅白).
子集D1中包含编号为(1,4,6,10,13,17)的6个样本,其中,正样本所占比例为p1=3/6,负样本所占比例为p2=3/6.D2中包含(2,3,7,8,9,15)的6个样本,其中正样本占比为4/6,负样本占比为2/6.D3中包含(5,11,12,14,16)的5个样本,其中正样本占比为1/5,负样本占比为4/5.根据式1计算用色泽划分的信息熵:
Ent(D1)= -(3/6log(3/6)- (3/6log(3/6) = 1
Ent(D2)= -(4/6log(4/6)) - (2/6log(2/6) = 0.918
Ent(D3)= - (1/5log(1/5))- (4/5log(4/5)) = 0.722

于是可以计算出色泽的信息增益:
在这里插入图片描述
= 0.998 - (6/171+6/170.918+5/17*0.722)=0.109
同理,我们可计算出其他属性的信息增益:
在这里插入图片描述
显然,属性"纹理"的信息增益最大?于是它被选为划分属性.图 2 给出
了基于"纹理"对根结点进行划分的结果,各分支结点所包含的样例子集显示
在结点中.
在这里插入图片描述
图2 基于"纹理"属性对根结点划分
基于"纹理"属性对根结点划分

然后,决策树学习算法将对每个分支结点做进一步划分.以图 4.3 中第一
个分支结点( “纹理=清晰” )为例,该结点包含的样例集合 中有编号为 {1
2, 3, 4, 5, 6, 8, 10, 15} 个样例,可用属性集合为{色泽,根蒂,敲声,脐部
触感}.基于 计算出各属性的信息增益:(纹理不再在)
在这里插入图片描述
“根蒂”、 “脐部”、 “触感” 个属性均取得了最大的信息增益,可任
选其中之一作为划分属性.类似的,对每个分支结点进行上述操作,最终得到的
决策树如图 3所示.
在这里插入图片描述

图3在西瓜数据集 2.0 上基于信息增益生成的决策树

增益率

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

称为属性 的"固有值",属性 的可能取值数目越多(即 越大),则 IV(α) 的值通常会越大.
例如,对表 1 的西瓜数据集 2.0 ,有 IV(触感)=0.874(V=2),IV(色泽)=1.508(V=3),IV(编号)=4.088(V=17).
需注意的是,增益率准则对可取值数目较少的属性有所偏好?因此,?因此 C4.5
算法并不是直接选择增益率最大的候选划分属性,而是使用了一个启发式:先从候选划分属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的.

基尼指数

CART(classification and regression)决策数是根据基尼指数来划分属性的。数据集 的纯度可用基尼值来度量:
在这里插入图片描述

直观来说, Gini(D) 反映了从数据集中随机抽取两个样本,其类别标记
不一致的概率.因此,Gini(D) 越小,则数据集 的纯度越高.属性的基尼指数定义为

在这里插入图片描述
于是,我们在候选属性集合中,选择那个使得划分后基尼指数最小的属
性作为最优划分属性,即
在这里插入图片描述

剪枝处理

剪枝(pruning) 是决策树学习算法对付"过拟合"的主要手段.在决策树学
习中,为了尽可能正确分类训练样本,结点划分过程将不断重复,有时会造成决
策树分支过多,这时就可能因训练样本学得"太好"了,以致于把训练集自身
的一些特点当作所有数据都具有的一般性质而导致过拟合.因此,可通过主动
去掉一些分支来降低过拟合的风险.
决策树剪枝的基本策略有"预剪枝" (prepruning) 和"后剪枝"(postpruning)。
预剪枝是指在决策树生成过程中,对每个结点在划分前先进行估计,若当前结点的划分不能带来决策树泛化性能提升,则停止划分并将当前结点标记为叶结点;
后剪枝则是先从训练集生成一棵完整的决策树,
然后自底向上地对非叶结点进行考察,若将该结点对应的子树替换为叶结点能
80 带来决策树泛化性能提升,则将该子树替换为叶结点.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值