基于信息增益的ID3决策树介绍。

本文介绍了ID3决策树算法,主要围绕信息熵和信息增益的概念展开。通过信息熵衡量样本集合的纯度,信息增益用于选择最优划分属性。在西瓜数据集的例子中,展示了如何计算信息熵和信息增益,以确定最佳划分属性,如色泽、根蒂、敲声等。最后,总结了决策树的基本知识和应用。
摘要由CSDN通过智能技术生成

这篇文章介绍一下一种常见的机器学习算法:决策树。这篇文章的主要是根据《机器学习》中的知识点汇总的,其中使用了《机器学习实战》的代码。关于决策树中基本信息以及公式更加推荐看一看《机器学习》这本书,书中不仅仅介绍了ID3决策树,而且还包含了C4.5以及CART决策树的介绍。所以本篇文章将使用西瓜书(也就是《机器学习》,以后都用西瓜书代替)中的数据集来进行测试。


决策树的介绍。

顾名思义,决策树这个名字可以分为两部分:决策和树。树的意思就是这个算法模型是以树状的形态进行表示的。而树的生成是和“决策”这一过程有关的。

那么决策是什么呢?

我们以二分类任务为例,以西瓜书数据集2.0作为测试数据,该数据最终会有两种不同的分类:好瓜和坏瓜。我们如果想要对一个西瓜进行分类,按照日常的思维就是买瓜的时候就会看看这个西瓜的外形是否正常,敲击西瓜听声音等等手段来判断这个瓜好不好,其实我们在判断的过程中就是一个“决策”的过程。

假如以数据集中的特征为例,来判断某个西瓜是不是好瓜我们该怎么做呢?

我们先看“它是什么颜色的?”,如果是“青绿色”,则我们再看“它的根蒂是什么形态的?”,如果是“蜷缩”,我们再判断“它敲起来是什么声音?”,最后,我们得出最终决策:这是个好瓜。

在这个过程中,我们在观察西瓜颜色、根蒂、敲击声的时候就已经在做“决策”了,但是这个决策只会在判断西瓜的过程中起到一部分的作用,所以这个时候的决策称为“子决策”,而我们通过这多个“子决策”共同决定出一个最终决策:这是个好瓜。

将上述过程图形话就如下所示:

这里写图片描述

可以从图中能够大概看出是一个树状的图形,其中没有绘出的节点就是一些其他的情况,比如色泽等于浅白、乌黑等。

显然,决策过程的最终结论对应了我们所希望的判定结果,例如“是”或者“不是”好瓜;决策过程中提出的每个判定问题都是对某个属性的“测试”,例如“色泽=?”“根蒂=?”;每个测试的结果或是导出最终结论,或是导出进一步的判定问题,其考虑范围都是在上次决策结果的限定范围之内,例如若在“色泽=青绿”之后再判断“根蒂=?”,则仅再考虑青色瓜的根蒂,而不再考虑其他颜色的西瓜。

所以一个决策树可以分为以下几点进行表示:

  • 一般的,一颗决策树包含一个根节点、若干个内部节点和若干个叶节点;
  • 叶节点对应决策结果(比如说好瓜或者坏瓜);其他每个节点则对应于一个属性测试(也就是根据某个特征做出的判断,比如“根蒂=?”就是在数据集上对根蒂进行判断测试);
  • 每个节点包含的样本集合根据属性测试的结果被划分到子节点中(也就是说如果某个特征相同的特征值划分到同一个子节点中,比如“根蒂=蜷缩”,我们就把根蒂这个特征中特征值等于蜷缩的全部划分到一起(当然,需要满足上面一个特征的测试,也就是当前的色泽=青绿))
  • 根节点包含样本全集,根节点的时候还没有进行划分,所以包含样本全集。

划分选择。

我们从上面就能够看出,决策树的整个流程主要就是依赖根据特征所做出的“决策”,从而将样本及划分到下一个节点中去。

那么毫无疑问,决策树的关键点就是如何选择最优划分属性,也就是说西瓜中共有:色泽、根蒂、敲声、纹理、脐部、触感这么多的特征属性,我们优先根据哪一个特征去进行划分呢?

一般而言,随着划分过程的不断进行,我们希望决策树的分支节点所包含的样本尽可能属于同一类别,即节点的“纯度”越来越高。

假设,按照色泽来划分的话,划分完成之后整个西瓜样本集正好被分为两类了,一类全部都是好瓜,另一类全部都是坏瓜,那么在两个分支的纯度都是百分之百了。

这里写图片描述

但是,如果我们按照根蒂来划分的话,划分完成之后,两个分支里面好瓜和坏瓜都是各占50%,那么这两个分支的纯度就是百分之五十,那么我们就需要继续选取特征继续划分。

这里写图片描述

很显然,上述中选取“色泽”这个特征来划分更好一点,因为这样划分完的纯度最高(纯度的计算并不是这样的,这里只是为了能够更好的理解“纯度”这个概念才这样计算的)。

那么究竟如何在众多特征中,选取一个特征来进行划分使得各个分支的纯度最大呢?

注:
根据不同的划分方法,决策树就被分为好几种类型,如果使用”信息增益“的方法进行划分,这样的决策树称为ID3决策树,如果使用”增益率“来划分,这样的决策树称为C4.5决策树,如果使用“基尼指数”来划分,这样的决策树称为CART决策树,下面介绍一下“信息增益”的划分方法。


信息熵。

那么问题就来到了“纯度”的计算,通过什么样的算法得到的各个分支纯度最大是现在的问题所在。

这里就引入了“信息熵”这个概念,信息熵是度量样本集合纯度最常用的一种指标。(这里的信息熵是克劳德·艾尔伍德·香农提出的,在《数学之美》中有过这段内容:记得有个国外的学者说过,人们通常把香农与爱因斯坦,牛顿相提并论,这是不公平的—-对香农是不公平的。香农为现代信息革命打下了理论基础)

下面就进入到了如何计算“信息熵”的阶段,首先信息熵的定义为如下:

假定当前样本集合D中第k类样本所占的比例为 pk k =1,2,…,| y |(注意这里的k为下标)),则D的信息熵定义为:

这里写图片描述

注:在Word中按下[Alt]+[=]即可编辑公式。

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

我们来根据西瓜数据集2.0(数据集可见:西瓜数据集)计算一下信息熵:

在该数据集中,一共包含17个训练样例,因为数据集中的分类结果只有好瓜和坏瓜两种。所以与上述的信息熵描述对应的就是:这17个训练样例就是样本集合D,集合中共有好瓜和坏瓜,那么集合一共只有两类,所以| y |=2,自然k的取值为1和2。

所以在决策树开始之前,根节点是包含所有的样本集也就是17个样本,其中好瓜的比例为: p1=817 ,那么坏瓜的比例为: p2=917 ,那么套入信息熵公式中:

这里写图片描述

这样就能够算出根节点的信息熵了,显然这个信息熵很大,所以这个时候根节点的纯度并不高(再次提醒, Ent(D) 越小,D 的纯度越高。)

同时,计算信息熵时约定:若 p =0,则 plog2p=0

并且 Ent(D) 的最小值为0,最大值为 log2|y|

这个也很好证明:

最小值证明:
当样本中只有一种分类,那么 p1=1 ,带入公式中 log21=0 ,所以计算得到的 Ent(D)=0 ,此时纯度最高,即样本集中只有一个分类。

最大值证明:
当集合中 D 共有 y 个分类,并且样本的分类所占的比重都一样,那么 p1=p2=...=py=1y ,那么可推出 Ent(D)=log21y=log2y1=log2y 。这里的 y 显然为正,所以多一个绝对值符号也无妨。而此时显然纯度最低,毕竟每个分类所占的比重都一样,比较混杂。

这样我们就能够通过计算信息熵的方法,将当前节点样本中的“纯度”计算出来。既然信息熵越小纯度越高,那么我们的目标就是通过属性的划分,让子类中的信息熵变得越来越小。


信息增益。

如何选取特征进行划分,从而让子类中的信息熵变得越来越小呢?这里就引入了“信息增益”这个概念。

首先看一下“信息增益”的概念和计算过程:

假定离散属性 a V 个可能取的值{ a1,a2,...,aV },若使用 a 来对样本集 D 进行划分,则会产生 V 个分支节点,其中第 v 个分支节点包含了 D 中所有在属性 a 上取值为 av

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值