浅析决策树

目录

1.前言

2.基本算法

3划分选择

3.1信息增益

3.2 增益率

3.3基尼指数

4.剪枝

4.1预剪枝

4.2后剪枝


1.前言

决策树是一种常见的机器学习方法,决策树是基于树的结构来进行决策的,在现实中我们通常会进行一系列的判断或“子决策”。本文主要是对西瓜的好坏的决策分类,来对决策树的工作原理进行讲解。

2.基本算法

以上算法中有三个中断递归的条件,(1)当前的结点样本全都是一个类别的,不需要划分(2)当前的属性集没有样本后者所有样本在所有属性上取值相同(理解为无效的属性)(3)当前节点包含的样本集合为空,不能划分   注:(2)(3)都需要将此节点设为叶子节点,但是(2)其类别为当前节点所含样本属性最多的节点,(3)是设置其类别为父节点所含样本索性最多的节点

3划分选择

根据上图算法可见,决策树最核心的部分是算法第八行,划分属性,对于划分属性,我们希望决策树的每个分支节点所包含的样本尽可能属于同一类,也就是“纯度”高(通俗的说,就是根据某种度量方法如信息增益等,算出每个属性的度量值,优先选取数值较高的属性进行划分产生分支,而后继续选择属性划分,直到所有属性用完,形成一棵树

3.1信息增益

“信息熵”是度量样本纯度的方法之一

 对于一个离散的属性a有V个不同的取值{a1,a2,....,av},如果用a来对样本划分,则会有V个分支,Dv表示a中样本在av的样本,我们可以用|Dv/D|来表示权重,也就是在这个类别下样本所占的比例, 我们可以算出他的“信息增益”

 

 一般来说信息增益越大,也就是代表使用a属性划分样本的纯度越高

 例,如下是西瓜数据集

,该数据集包含 17 个训练样例,用以学 习一棵能预测设剖开的是不是好瓜的决策树.显然, IYI = 2. 在决策树学习开 始时,根结点包含 中的所有样例,其中正例占 P1 =8/17,反例占p2=9/17 ,根据式(4.1) 可计算出根结点的信息熵为:

然后,我们要计算出当前属性集合{色泽,根蒂,敲声,纹理,脐部,触感} 中每个属性的信息增益.以属性"色泽"为例,它有 个可能的取值: {青绿,乌 黑,浅自}.若使用该属性对 进行划分,则可得到 个子集,分别记为: D1 泽=青绿), D2 (色泽 乌黑), D3 色泽=浅白).

子集 包含编号为 {1 4, 6, 10, 13, 17} 个样例,其中正例占 p1=3/6反例占的=3/6; 包含编号为 {2 3, 7, 8, 9, 15} 个样例,其中正、反例分 别占 Pl = 4/6, P2 = 4/6; D3 包含编号为 {5 11, 12, 14, 16} 个样例,其中正、 反例分别占 p1=1/5 ,p2= 4/5.根据式 (4.1) 可计算出用"色泽"划分之后所获得 个分支结点的信息熵为:

再根据公式4.2算出“色泽”的信息增益:

 同理

 Gain(D ,根蒂) = 0.143; Gain(D ,敲声) = 0.141; Gain(D ,纹理) = 0.381; Gain(D ,脐部) = 0.289; Gai (D 触感) = 0.006.

显然属性“纹理”的信息增益最大,于是选取“纹理”进行划分,

 然后除开纹理的其他属性,再进行选取,选取出信息增益最大的属性,如“清晰”分支,该结点包含的样例集合 中有编号为 {1 2, 3, 4, 5, 6, 8, 10, 15} 个样例,可用属性集合为{色泽,根蒂,敲声,脐部 触感}.计算出各属性的信息增益:

Gain(D 色泽) = 0.043; Gain(D ,根蒂) = 0.458; Gain(D ,敲声) = 0.331; Gain(D ,脐部) = 0.458; Gain(D ,触感) = 0.458.

"根蒂"、 "脐部"、 "触感" 个属性均取得了最大的信息增益,选出其中一个,依次这样选出属性,得出决策树

3.2 增益率

 对于西瓜数据集,我们没有考虑一个属性“编号”,如果我们以编号为例,那么将分出17各分支,每个分支只有一个样本,这样的分的太细,不具有泛化能力,也就是类似过拟合,而信息增益就是偏向可取值数目多的属性。

于是我们避免这种情况,使用增益率,

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

 增益率是偏向属性值取值数目小的方向,但是这可能会使寻找的属性信息增益很低,于是管用做法:先找出信息增益高于平均水平的属性,再找出增益率最高的属性

3.3基尼指数

基尼指数也是度量“纯度”的方法之一,

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

采用与式(4.2) 相同的符号表示,属性A 的基尼指数定义为

 

我们在候选属性集合 中,选择那个使得划分后基尼指数最小的属 性作为最优划分属性 

4.剪枝

剪枝就是将一些分支减去,因为分支繁多过后,会使决策树在训练集表现上过于完美,过度拟合于训练集,导致泛化能力低。

4.1预剪枝

预剪枝就是创建决策树时就进行判断,判断这个分支是否能够提升泛化能力,如果不能,就减掉。

我们会留出一些数据作为验证集,来判断泛化能力,

 基于信息增益准则,我们会选取属性"脐部"来对训 练集进行划分,并产生 3个分支,

将2号结点变成叶子节点,标记为"好瓜",用表 4.2 的验证集对这个单结点决策树进行评 时,则编号为 {4 5 8} 的样例被分类正确,另外 4个样例分类错误,于是,验证 集精度为3/7*100% = 42.9%,同理其他节点也是一样

我们发现,这个决策树是欠拟合的, 因此,预剪枝很有可能会使决策树欠拟合。

4.2后剪枝

后剪枝是已经生成了一棵决策树,我们对每个分支(下图具有编号的)进行裁剪,如果裁剪精度提升,那么就剪枝。

 如上图,我们先对6号进行分支,把它替换为叶结点.替换后的叶结点包含编号为 {7 15} 的训练样本,于是,该叶结点的类别标记为"好瓜",此时决策树的验证集精度提高至 57.1%,于是剪枝。

 考察结点⑤,若将其领衔的子树替换为叶结点,则替换后的叶结点包 含编号为 {6 15} 的训练样例,叶结点类别标记为"好瓜'七此时决策树验证 集精度仍为 57.1%. 于是,可以不进行剪枝.

最终精度为71.4%

 我们可以看出后剪枝明显是优于预剪枝(预剪枝与后剪枝主要区别就是一个是一边划分一边剪枝,一个是划分好生成决策树过后进行剪枝)。

5.后续问题

5.1 连续值属性处理

之前所涉及到的属性都是离散的,如果属性是连续的应该怎么处理?连续的值可能是无限的

处理方法就是将连续值离散化,最简单的方法就是二分法,用区间的形式将连续值,划分成许多区间,每个区间的值都用中值(在属性数据集上出现过不大于中值的最大值来表示)来表示

n-1个元素的候选划分点集合,

 

 改造信息增益的公式:

 

max代表使信息增益最大,举个例子:17个训练集数据,T密度={{0.244 0.294, 0.351, 0.381, 0.420, 0.459, 0.518, 0.574, 0.600, 0.621, 0.636, 0.648, 0.661, 0.681, 0.708, 0.746},带入上式,算出信息增益为0.262,对应的划分点为0.381(理解为密度小于0.381的瓜多数是坏瓜,大于的多数是好瓜,而且这个划分临界点是最理想的),那么分支应该这样画:

 

5.2 属性缺失处理

如果样本数据集很多的话,可以直接舍弃缺失属性的样本,如果样本数据集少,就应该处理属性缺失问题:

1.在属性缺失的情况下,怎么选择划分属性(也就是怎么根据信息增益等方法来计算各属性的“纯度”,来权衡先用哪个属性进行划分

2.用具有缺失信息的属性来划分样本,怎么进行划分(也就是没有属性值的这些样本应该被划入那个属性集合中去

对于问题1,我们可以暂时不考虑缺失属性的样本(需要加一个权重),直接计算有值的情况,算出信息增益。如下公式:

 

 字母上面加~表示舍去了缺失属性的样本(那么总体样本相应降低),无缺失值样本所占的比例(有值的样本数/总体样本数)

 对于问题2,在某个属性上划分,如果遇到缺失属性的样本,将它划入所有属性集合中,但是要乘以权重,权重就是在所有无缺失属性的样本中,这个属性分支下样本个数所占总样本个数的比例

举个例子:

算出了"纹理"在所有属性中取得了最大的信息增益,被用于对根结点进行划分.

划分结果是使编号为 {1,2,3, 4, 5, 6,15} 的样本进入"纹理=清晰"分支,编号 {7, 9, 13, 14, 17} 的样本边入"统理=稍糊"分支,而编号为 {11 ,12, 16} 的样 本进入"纹理=模糊"分支,且样本在各子结点中的权重保持为1.需注意的 是,编号为 {8} 的样本在属性"纹理"上出现了缺失值,因此它将同时进入三 个分支中,但权重在三个子结点中分别调整为7/17,5/17,3/17.

 

 

5.3 多变量决策树

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值