机器学习——决策树

决策树是根据树结构来进行决策的,决策树的最终结果对应了我们所希望的判定结果。一般的一棵树包含一个根节点、若干个内部节点和若干个叶节点;叶结点对应了决策树的结果,其他每个节点对应于一个属性测试;每个结点根据属性测试的结果别划分到子结点中;根结点包含样本的全集。

决策树的生成是一个递归过程,有三种情况会导致递归返回(也就是出结果):

1、当前结点包含的样本属性全部属于同一类别,无需划分

2、当前属性集为空,或者样本在所有属性值相同,无法划分。称为死结点,设定为所含样本最多的类别

3、当前结点包含的样本集合为空,不能划分。称为死结点,设定为其父结点所含样本最多的类别

情形2是利用当前结点的后验分布;情形3是把父结点的原本分布作为当前结点的先验分布。

划分选择

决策树的关键在于如何选择最优划分属性,我们希望决策树的分支结点所包含的样本尽可能的属于同一类别,即结点的纯度越高越好。

信息增益

“信息熵”是度量样本纯度最常用的指标,

假设样本集D中的第k类样本所占的比例$p_k,(k=1,2,3,...|y|)$,则D的信息熵为:

$Ent(D)=-\sum_{k=1}^{|y|}p_k\log _2p_k$

Ent(D)的值越小,则D的纯度越高

我们记为$D^v$为数据集D在第v个分结点在属性a上的取值。我们根据上式计算$D^v$的信息熵,

不同结点包含的样本数不同,我们给分支点赋予权重$\frac{|D_v|}{D}$,即样本数越多的分支点影响越大,于是可以计算出属性a样本集D进行划分所获得的“信息增益”。

$Gain(D,a)=Ent(D)-\sum_{v=1}^{V}\frac{|D^v|}{D}Ent(D^v)$

信息增益越大,意味着使用属性s来进行划分所获得的“纯度提升”越大,所以我们使用信息增益来进行决策树的划分属性选择。

 

例题:计算以下西瓜集的信息熵和信息增益

其中正例$p_1=\frac{8}{17}$,反例$p_2=\frac{9}{17}$,所以根结点的信息熵为:

$$Ent(D)=-\sum_{k=1}^{2}p_k\log_2p_k=-(\frac{8}{17}\log_2\frac{8}{17}+\frac{9}{17}\log_2\frac{9}{17})=0.998$$

然后我们要计算出当前属性集合{色泽、根蒂、敲声、纹理、脐部、触感}中每个属性的信息增益。以色泽为例,色泽有三个取值:{青绿、乌黑、浅白},若使用该属性对D进行划分,则可得到3个子集分别为$D^1$(色泽=青绿)有6个样例,正例$p_1=\frac{3}{6}$反例$p_2=\frac{3}{6}$

$D^2$(色泽=乌黑)有6个样例,正例$p_1=\frac{4}{6}$反例$p_2=\frac{2}{6}$

$D^3$(色泽=浅白)有5个样例,正例$p_1=\frac{1}{5}$反例$p_2=\frac{4}{5}$

分别计算信息熵

$$Ent(D^1)=-(\frac{3}{6}\log_2\frac{3}{6}+\frac{3}{6}\log_2\frac{3}{6})=1.000$$

$$Ent(D^2)=-(\frac{4}{6}\log_2\frac{4}{6}+\frac{2}{6}\log_2\frac{2}{6})=0.918$$

$$Ent(D^2)=-(\frac{1}{5}\log_2\frac{1}{5}+\frac{4}{5}\log_2\frac{4}{5})=0.722$$

计算色泽的信息增益:

$$Gain(D,色泽)=Ent(D)-\sum_{v=1}^{3}\frac{|D^v|}{|D|}Ent(D^v) \\
=0.998-(\frac{6}{17}*1.000+\frac{6}{17}*0.918+\frac{5}{17}*0.722) \\
=0.109$$

类似的我们可以计算出其他属性的信息增益:

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

显然属性“纹理”的信息增益最大,于是他被选为划分属性。

以图4.3中第一个分支结点(“纹理=清晰”)为例,该结点包含的样例集合$D^1$中有编号{1,2,3,4,5,6,8,10,15},9个样例,可用熟悉集合为{色泽、根蒂、敲声、脐部、触感},基于$D^1$计算出各属性的信息增益:

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

“根蒂”“脐部”“触感”3个属性均取得最大值的信息增益,最终得到:

增益率

  根据上面的介绍我们有意的忽略了“编号”,如果把“编号”也作为属性进行划分,计算它的信息增益为0.998,远大于其他划分的属性,(解释:“编号”将产生17个分支,每个分支结点仅包含一个样本,这些分支结点的纯度已经达到最大值,然而这样的决策树不具备泛化能力。

  实际上,信息增益准则对可取值数目较多的属性有所偏好,为了减少这偏好带来的影响,使用“增益率”来进行划分属性。增益率定义为:

$$Gain_ratio(D,a)=\frac{Gain(D,a)}{IV(a)}$$

  其中:

$$IV(a)=-\sum_{v=1}^{V}\frac{|D^v|}{|D|}\log_2\frac{|D^v|}{|D|}$$

  称为属性a的固定值,属性a的可能取值越多(V越大),则IV(a)的值通常会越大。对上道题目的数据集IV(触感)=0.94(V=2),IV(色泽)=1.580(V=3),IV(编号)=4.088(V=17)。

  但是增益率多取值较少的属性有一定的偏好,所以:从候选划分属性中找出信息增益高于平均水平的属性,从中选择增益率最高的。

基尼指数

基尼指数定义为:$$Gini(D)=\sum_{k=1}^{|y|}\sum_{k'\not\equiv k}p_kp_{k'}$$

$$=1-\sum_{k=1}^{|y|}p_k^2$$

  基尼指数反应了从数据集D中随机抽取两个样本,其类别标记不一致的概率。因此Gini(D)越小,这数据集D的纯度越高。属性a的基尼指数定义为:

$$Gini\_index(D,a)=\sum_{v=1}^{V}\frac{|D^v|}{|D|}Gini(D^v)$$

于是我们选择在属性集合A中,使得划分后基尼指数最小的属性作为最优划分属性,$a^*=arg\min_{a\in A}Gini\_index(D,a)$

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凌逆战

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值