统计学习第五章

5.1决策树

决策树是利用归纳法学习的。

一、思维模式

这是根据情人节当天所做的一个决策树。(决策树是一个多叉树) 

 有关贷款申请的决策树。

二、模型结构

 圆圈表示特征或属性;方框表示 类别。 我们就是根据特征来进行分类。

if--Then规则

从根节点到叶子节点的一条路径,就对应着一条规则。

每个叶节点都对应着一条规则,且每个叶节点所对应的规则还不一样。

一个叶节点/一个类:可能对应着多条路径(即从不同的路径可能获得相同类别,例如上面贷款的决策树,“可以偿还”这个类别就有多条路径)

每个实例:对应着一条路径

if---Then规则是 互斥的,完备的。互斥:通过属性特征进行分叉,互相之间没有交集;且分完的两个叉合在一起 是完整完备的。

构造决策树

能将训练数据集的大部分数据正确分类就可以了。为什么是大部分,而不是全部?----- 第一章所讲,选择模型时,不仅考虑它对已知数据的拟合能力,还要考虑模型对未知数据的泛化能力(预测)

拟合和泛化得到平衡,才是最优模型。

 5.2.1决策树:条件概率分布

第一章关于统计学习方法的分类时,按模型分类,可分为概率模型和非概率模型。

概率模型:条件概率模型。如:朴素贝叶斯法,决策树

非概率模型:感知机,k近邻树

黄色的那两块的概率都是>0.5的,所以认为这两块单元的分类时正类。

有多少个叶子节点,就有几个单元,但是类别的个数<=单元个数。

决策树可以看作是 由 if--Then规则所构成的集合,那么,多个if--then规则能组成一条又一条的路径,每条路径对应着特征空间中的一个又一个的小单元,所以,决策树还可以看成 是由给定条件下类的条件概率分布组成的。 

5.2.2决策树:决策树学习

与训练数据矛盾较小,即拟合能力好,泛化能力好即预测能力好。

5.3特征选择

5.3.1决策树:信息增益

对这个数据样本,根据选择特征的先后不同,构造的决策树不一样。

 

 就是因为这样,所以我们要进行特征选择。

信息增益:熵

信息增益是由熵构建而成。

随机变量有n个取值,每个取值对应的概率是Pi,那个该随机变量所对应的熵:

 该随机变量的概率是什么分布时,熵最大, 什么时候熵最小?

对于一件确定的事(百分比发生),或是你能肯定的事,那么这件事对你而言,熵就是0,因为这一定会发生,没有给你带来更多的信息(信息增益)

 

 H(D)中的D就是对应训练数据集。

H(D)是不知道任何特征信息的条件下,所得到的熵,

H(D|A)是知道了特征A后,所得到的条件熵,

H(D)- H(D|A) 就是我们对于一件模糊的事情,在知道了关于该事情的特征A后,在信息上有多少帮助。

熵---混乱程度麻,好像是这样。从一无所知的混乱程度,到知道其中一个特征后的混乱程度,

所减少的混乱完全是归功于这个特征。 

5.3.2决策树:信息增益例题解说

15个样本数据,D=15,最终所分类别是两个:允许申请贷款,不允许。我们认为“允许”的属于同一种变量,“不允许”的属于另一种随机变量。所以K=2,也就是上面的n=2。

知道年龄特征A1后,可把原来的数据集D分为三个子集(三种随机变量),

 

再看第二个特征A2:有工作;可把原训练集分为两个子集(两随机变量),有工作,没工作

H(D1)=0*log0 - 5/5*log(5/5) = 0+0=0

理解:对于D1这个子集,它不包含 不同意贷款 这种样本的,所以,对他而言,我们认为 不同意贷款 是一个不可能事件,则它所携带的信息量就是0.。类似的,由于它所有样本都是归属于同一类(同意贷款),那么对于后面这部分,是完全确定的事件,也不携带信息。 

再看第三个特征:是否有房。

最后一个特征:信贷情况

 最后,计算信息增益,发现 “有房子”这个特征的信息增益最大,所以它是最优特征, 决策树的根节点就应该以该特征作为根节点。

5.3.3决策树:信息增益比

在有了信息增益 来选择最优特征后,还可以用信息增益比来选择最优特征。

为什么还要信息增益比呢?

因为 信息增益  有时候更倾向于选择具有更多取值的那个特征。

信贷情况有三个取值,有工作 有两个取值。

由于信贷情况取值个数  > 有工作 取值个数,  有可能因为这个原因,造成 信贷情况的信息增益> 有工作的信息增益。

看上一节的最后的图就知道。

如何能降低 取值个数 对信息增益的影响呢??------利用信息增益比

用该特征的信息增益/该特征的熵

其实就是在数据集的混乱程度下,知道该特征的单位信息,能获得多少信息增益。

对于特征:有工作、信贷情况。

比较信息增益和信息增益比的话,选择出来的特征不同。

那么,究竟应该用谁来选择特征好呢? ------没法一概而论。

信息增益倾向于选择取值较少的特征。 

5.4决策树的生成

5.4.1决策树的生成:ID3算法

上面第三个步骤其实可作为第二个步骤的说明。

 

若D1,D2,,,,Dn中某一个子集 Di 不能认为是单节点的子集的话,还得将该子集接着从剩下的特征中选择信息增益最大的特征,继续决策树的开枝散叶。

什么时候生成完毕?当所有的剩余特征的信息增益都< \epsilon 时。

5.4.2决策树的生成:C4.5算法

算法思路跟ID3相差不大,就是选择特征的方式改为用信息增益比。

且C4.5不仅可以处理离散型的描述特征,而且可以处理连续型的。

缺点是:信息增益比计算比较麻烦, 尤其是在处理连续型变量的时候。且需要对数据进行多次的顺序排序,导致它的低效性。即当数据量非常大时,很难运行。

 5.4.3决策树的生成:例题讲解

首先,数据的类别不仅有一个,而且,特征集A中不是空集。计算得到的信息增益也都不小于阈值

故选择信息增益最大的特征来作为根节点。

信息增益最大的特征:有自己的房子(其分为两个子集:有自己的房;没自己的房)

画一下当前的决策树:

 对于子集D2的9个数据,既有同意贷款的,又有不同意贷款的。

故根据特征选择,确定圆圈应该选定的内部特征。

以D2作为一个新的数据集,{ A1,A2,A4 }作为新的特征集,(刚刚的“有自己的房子”为A3)

计算各个特征的信息增益。

 在D2中,知道A1后,所能获得的信息增益:仅D2下的经验熵H(D2) 减去  知道A1后,D2的条件熵

 

 得到信息增益最大的特征:有工作

5.5决策树------剪枝

对已知数据的预测能力:拟合;

对未知数据的预测能力:泛化

根节点处的深度:0

 

决策树是通过训练数据集一步一步生成的,所以,我们往往生成过程中,过于强调对于训练数据集的预测能力,就容易出现过拟合现象,因此,剪枝的目的:防止过拟合,处理决策树的过拟合问题

生成决策树过程中,对于一个节点后的分叉是否要剪枝:若生成这个节点后,它的泛化能力能提高,则让其生成;否则剪掉。

5.5.1决策树:预剪枝(1)

预剪枝的方法:

通过一个例子来了解:

拿到数据后,首先看是否有Y, 有Y那就是监督学习。 没有Y那就是无监督学习。若数据集中,部分数据包含输出,部分不包含输出,那就是半监督学习。

再看输出变量是连续的还是离散的,连续即回归问题,离散则为分类问题。

 预剪枝:限制深度

 如果我们限定决策树的深度为2的话,就得把3,4层给剪掉。那么色泽应该怎么替代。 

 按照原决策树,把数据中:纹理为清晰,根蒂为稍卷缩的数据拿出来,发现:好瓜两个,坏瓜1个。则 预测认为对于纹理为清晰,根蒂为稍卷缩的西瓜 为 好瓜。

预剪枝:阈值

算法中跟阈值相关的。

阈值设为0.4,阈值过高,使得所有特征的信息增益都小于阈值,进而变成单节点的决策树。

5.5.1决策树:预剪枝(2)

利用误差率

首先,利用训练数据集得到一个单节点的决策树,可以得到什么呢:

训练集中5个是好瓜,5个是坏瓜。 那么,单节点既可以是好瓜,也可以是坏瓜。

测试集中是3个好瓜,4个坏瓜.

若该决策树是单节点:好瓜。如下图

此时该决策树会把测试集中的所有实例都预测为好瓜,从而导致误差率:4/7

若把这个好瓜的叶节点变为内部节点。  即细化决策树:

计算训练集中10个数据的各特征的信息增益。

计算完发现,脐部的信息增益最大。

用该决策树去预测测试集:

发现此时的误差率是:2/7.

比之前那颗单节点(好瓜)的决策树 的误差率4/7更低。

说明,把原来的决策树从单节点 变为 1层的决策树后,误差率更低,即泛化能力更强。

================================================================

若把初始的决策树 视为 单节点(坏瓜)的决策树

此时的误差率为3/7. 也很明显,比细化为1层的决策树的误差率(2/7) 更高。

说明细化为1层的决策树 的泛化能力更好。

===========================================================

故无论是单节点的好瓜决策树,还是单节点的坏瓜决策树,都应该把它细化。

都应该从这颗决策树出发,判断是否应该再继续把叶子节点继续划分。

 对于第一个叶节点,关于 凹陷的, 其训练集中 脐部为凹陷的实例中,并非全部为好瓜。

故尝试接着划分,计算剩余特征的信息增益,发现 特征 色泽。

得到薪的决策树:

划分后,此时对测试集的误差率为3/7.

而没细化之前,误差率为2/7.   

说明在脐部为凹陷的这个叶节点处,再次划分使得决策树泛化能力变差,故不应该在这继续划分

接着,看第二个叶子节点,脐部稍凹 处 尝试继续划分,根据训练集计算,

 再看测试集中的误差率:

误差率为2/7,跟没划分前的决策树模型一样的误差率。

出于  奥卡姆剃刀原理,模型在相同的效果下,模型越简单越好,故不应继续划分。 

再看第三个叶子节点:脐部为平坦的叶节点

 训练集中 脐部为平坦的实例都是 坏瓜,没有错误,就没必要再划分。

所以,最后得到的决策树:(根据测试集误差率来预剪枝得到的)

5.5.2后剪枝

5.5..2--1后剪枝:降低错误剪枝

根据剪枝前后的泛化能力来决定是否剪枝,故需要使用测试集        。

注意:若剪枝后的误判个数跟剪枝前的一样的话,根据奥卡姆剃刀原理,也要剪枝(泛化能力相同,选择模型更简单的。)

实例 

由训练集得到的决策树如上,是否需要剪枝? 自下而上看,首先看最后那层的叶子是否需要剪掉,即纹理这个特征的子树是否要剪掉。

如果剪掉的话,纹理这里需要用什么叶子节点来替代?(好瓜还是坏瓜)

看训练集,脐部稍凹,根蒂稍蜷缩,色泽乌黑的几个实例中,占多数的是好瓜还是坏瓜。

 观察训练集,发现就两个实例,我们认为剪掉后用好瓜代替。

接着,求解该子树剪枝前后的误判个数。

发现剪枝前的误判个数为2。

而剪枝后,发现误判个数为1,故纹理那个子树应该剪掉。

从而,决策树就从深度为4变为深度为3.

接着,是否应该再继续剪枝呢?(自下向上)

是否应该把深度为3变为深度为2?    即色泽这个子树是否应该剪掉。

观察训练集,脐部稍凹,根蒂稍蜷缩的实例中,两个好瓜,1个坏瓜。那么,如果剪掉色泽的话,用叶节点好瓜代替。

     

     

剪枝前的误判个数为1.

 剪枝后的误判个数也为1,  根据奥卡姆剃刀原理,泛化能力相同,选择模型复杂度更低的。

剪枝!

于是,深度就从3变为2了,  再看,深度是否能从2变为1呢

同样的方法步骤,发现还应该剪枝。

变成深度为1的决策树,如下:

这时候,再看是否应该把深度为1变为深度为0(即决策树只有一个根节点)

尝试后发现。不应该减为单节点树。

故,最后结果是:

5.5.2--2后剪枝:悲观错误剪枝(PEP)

error(Leaf i):叶子节点上的误判个数

N(T):样本总数

目标子树上单个叶子节点的误差:

Error(Leaf_{i}) = \frac{error(Leaf_{i})}{N(T)}

得到是一种离散的情况,它是离散的二项分布,该如何修正?

从离散的二项分布,到连续的正态分布修正:加个0.5

Error(Leaf_{i}) = \frac{error(Leaf_{i})+0.5}{N(T)}

 

 L是该子树上的叶子节点个数

悲观错误剪枝 实例演示:

圆圈:内部节点                        方框:叶子节点

T5指节点编号                           绿色:正类                红色:负类       

节点内部左边数字:正类 的实例个数

误判个数就看不是该叶子节点类别的个数

上图子树的误判个数:3+2+1=6

子树的样本总数:17+13=30

第二个例子:

 

悲观错误剪枝方法的特点:

5.5.2--3后剪枝:最小误差剪枝

最小分类错误概率怎么计算?

先假设决策树对样本的分类有K个类。(类1,类2,,,,类k)

P_{k}(T) :T表示节点T,k表示节点T属于第k类,P是概率。

N(T): 表示在节点T中的样本个数;n_{k}(T) :表示在节点T中,属于类别k的样本个数

使用贝叶斯思维,考虑先验概率:Pr_{k}(T):在节点T处,属于类别k的先验概率

m:表示先验概率对后验概率的影响。

一个节点只属于一类,节点T属于类别k的概率:P_{k}(T);节点T不属于类别k的概率:1 — P_{k}(T)

Error(T)是关于m的一个函数。  m是需要选出来的,不是指定的。

为方便讲解例子,现在指定先验概率Pr_{k}(T)=1/k,即样本属于每一类别的概率是相同的,

m= K;

接着,用这个Error(T)来演示:

计算步骤:

 现考虑T5是否可以剪掉?

决策树对样本实例就分为两类:正 、负。 故K=2

5.5.2--4后剪枝:基于错误剪枝(EBP:error base)

误判个数怎么算?  其实这里的误判个数是取的误判上界,且是给定一定的置信水平下求出来的。

假设对于一个节点T:样本个数是N(T), 误判个数是e(T);

误判率:从二项分布到正态分布连续性修正:\frac{e(T)+0.5}{N(T)}

一般会通过表格给我们几个 固定的上分位数,若你要使用的不是表格那几个,就用线性插值求。

在给定α,和q^{\alpha } 下,误判上界就很容易求了。就差观察决策树得到e(T) ,  N(T)

CF:置信水平,默认是25%

L是目标子树的叶子节点个数。 

5.5.2--5后剪枝:代价-复杂度剪枝(CCP: COST COMPLEXITY)

 

C(T): 代价,T这棵树在训练集中的预测误差(体现T的拟合程度)

|T| ; T这棵树的叶子节点个数 (一棵树的叶子节点越多代表这模型越复杂,表示T的复杂度,体现T的泛化能力)

α:惩罚项系数,α>=0,调节预测误差和模型复杂度的平衡,平衡模型的拟合能力和泛化能力

t=1,,,|T|。 每一个t,都是T这颗子树的叶子节点。

H_{t}(T):每个叶子节点的经验熵

每个叶子节点的权重:Wi

对于一个训练集而言,N是固定的,所以权重Wi=Nt/N 中的N可略去。

具体步骤:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值