通俗理解决策树ID3

本人已经打算将这一系列博文做成动画趣味科普的形式来呈现,感兴趣的话可以点这里

0.什么是决策树

决策树说白了就是一棵能够替我们做决策的树,或者说是我们人的脑回路的一种表现形式。比如我看到一个人,然后我会YY这个男人有没有买车。那我的脑回路可能是酱紫的:
在这里插入图片描述
其实这样一种脑回路的形式就是我们所说的决策树。所以从图中能看出决策树是一个类似于人们决策过程的树结构,从根节点开始,每个分枝代表一个新的决策事件,会生成两个或多个分枝,每个叶子代表一个最终判定所属的类别。很明显,如果我现在已经构造好了一颗决策树的话,现在我得到一条数据(男, 29),我就会认为这个人没有买过车。所以呢,关键问题就是怎样来构造决策树咯。

1.构造决策树

构造决策树时会遵循一个指标,有的是按照信息增益来构建,这种叫ID3算法,有的是信息增益比来构建,这种叫C4.5算法,有的是按照基尼系数来构建的,这种叫CART算法。然后这篇博文主要来聊聊ID3算法是怎样来构建出一颗决策树的。

2.熵

整个ID3其实主要就是围绕着信息增益来的,所以要弄清楚ID3的算法流程,首先要弄清楚什么是信息增益,但要弄清楚信息增益之前有个概念必须要懂,就是熵。所以先看看什么是熵。

在信息论和概率统计中呢,为了表示某个随机变量的不确定性,就YY出来了一个概念叫熵。如果假设X是一个有限个取值的离散型随机变量的话,很显然它的概率分布或者分布律就是酱紫:
在这里插入图片描述
有了概率分布后,则这个随机变量X的熵的计算公式就是(PS:这里的log是以2为底):
在这里插入图片描述
从这个公式也可以看出,如果我概率是0或者是1的时候,我的熵就是0。(因为这种情况下我随机变量的不确定性是最低的),那如果我的概率是0.5也就是五五开的时候(给卢姥爷烧根香),我的熵是最大也就是1。(就像扔硬币,你永远都猜不透你下次扔到的是正面还是反面,所以它的不确定性非常高)。所以呢,熵越大,不确定性就越高。

在我们实际情况下,我们要研究的随机变量基本上都是多随机变量的情况,所以假设有随便量(X,Y),那么它的联合概率分布是酱紫:
在这里插入图片描述
那如果我想知道在我事件X发生的前提下,我事件Y发生的熵是多少的话,这种熵我们叫它条件熵。条件熵H(Y|X)表示随机变量X的条件下随机变量Y的不确定性。条件熵的计算公式是酱紫:
在这里插入图片描述
当然条件熵的一个性质也熵的性质一样,我概率越确定,条件熵就越小,概率越五五开,条件熵就越大。

OK,现在已经知道了什么是熵,什么是条件熵。接下来就可以看看什么是信息增益了。所谓的信息增益就是表示我已知条件X后能得到信息Y的不确定性的减少程度。就好比,我在玩读心术。你心里想一件东西,我来猜。我已开始什么都没问你,我要猜的话,肯定是瞎鸡儿猜。这个时候我的熵就非常高对不对。然后我接下来我会去试着问你是非题,当我问了是非题之后,我就能减小猜测你心中想到的东西的范围,这样其实就是减小了我的熵。那么我熵的减小程度就是我的信息增益。

所以信息增益如果套上机器学习的话就是,如果把特征A对训练集D的信息增益记为g(D, A)的话,那么g(D, A)的计算公式就是:
在这里插入图片描述

如果看到这一堆公式可能会懵逼,那不如举个栗子来看看信息增益怎么算。假设我现在有这一个数据表,第一列是性别,第二列是活跃度, 第三列是客户是否流失的label。
在这里插入图片描述
那如果我要算性别和活跃度这两个特征的信息增益的话,首先要先算总的熵和条件熵。(5/15的意思是总共有15条样本里面label为1的样本有5条,3/8的意思是性别为男的样本有8条,然后这8条里有3条是label为1,其他的数值以此类推)
总熵=(-5/15)*log(5/15)-(10/15)*log(10/15)=0.9182
性别为男的熵= -(3/8)*log(3/8)-(5/8)*log(5/8)=0.9543
性别为女的熵=-(2/7)*log(2/7)-(5/7)*log(5/7)=0.8631
活跃度为低的熵=-(4/4)*log(4/4)-0=0
活跃度为中的熵=-(1/5)*log(1/5)-(4/5)*log(4/5)=0.7219
活跃度为高的熵=-0-(6/6)*log(6/6)=0

现在有了总的熵和条件熵之后我们就能算出性别和活跃度这两个特征的信息增益了。
性别的信息增益=总的熵-(8/15)*性别为男的熵-(7/15)*性别为女的熵=0.0064

活跃度的信息增益=总的熵-(6/15)*活跃度为高的熵-(5/15)*活跃度为中的熵-(4/15)*活跃度为低的熵=0.6776

那信息增益算出来之后有什么意义呢?回到读心术的问题,为了我能更加准确的猜出你心中所想,我肯定是问的问题越好就能猜得越准!换句话来说我肯定是要想出一个信息增益最大的问题来问你,对不对?其实ID3算法也是这么想的。ID3算法的思想是从训练集D中计算每个特征的信息增益,然后看哪个最大就选哪个作为当前节点。然后继续重复刚刚的步骤来构建决策树。

3.ID3

ID3算法其实就是依据特征的信息增益来构建树的。具体套路就是从根节点开始,对节点计算所有可能的特征的信息增益,然后选择信息增益最大的特征作为节点的特征,由该特征的不同取值建立子节点,然后对子节点递归执行上面的套路直到信息增益很小或者没有特征可以继续选择为止。

这样看上去可能会懵,不如用刚刚的数据来构建一颗决策树。

一开始我们已经算过信息增益最大的是活跃度,所以决策树的根节点是活跃度 。所以这个时候树是酱紫的:
在这里插入图片描述
然后发现训练集中的数据表示当我活跃度低的时候一定会流失,活跃度高的时候一定不流失,所以可以先在根节点上接上两个叶子节点。
在这里插入图片描述
但是活跃度为中的时候就不一定流失了,所以这个时候就可以把活跃度为低和为高的数据屏蔽掉,屏蔽掉之后5条数据,接着把这5条数据当成训练集来继续算哪个特征的信息增益最高,很明显算完之后是性别这个特征,所以这时候树变成了酱紫:
在这里插入图片描述
这时候呢,数据集里没有其他特征可以选择了(总共就两个特征,活跃度已经是根节点了),所以就看我性别是男或女的时候那种情况最有可能出现了。此时性别为男的用户中有1个是流失,1个是不流失,五五开。所以可以考虑随机选个结果当输出了。性别为女的用户中有全部都流失,所以性别为女时输出是流失。所以呢,树就成了酱紫:
在这里插入图片描述
好了,决策树构造好了。从图可以看出决策树有一个非常好的地方就是模型的解释性非常强!!很明显,如果现在来了一条数据(男, 高)的话,输出会是不流失。

OK,这是我对ID3算法的简单理解,希望对你有所帮助,当然也欢迎各位大佬吐槽。先溜~~~

  • 12
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

alw_123

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

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

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

打赏作者

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

抵扣说明:

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

余额充值