通俗易懂之决策树

决策树

看到决策树三个字。见名知意。他就是一个具有决策逻辑的树。这棵树将我们大脑内的逻辑具现化,及其类似与我们人脑所做的决策。还是不太清楚什么是决策树怎么办。那么就给你画一张图吧!
在这里插入图片描述
这样的大脑逻辑就是我们所说的决策树。从图中可以看出来。图中左边就是一个正常人(女人emmmm或者男人)的一个简易版的择偶决策。这样的一种大脑逻辑或者决策,就是决策树。好了!我们左边的树传入一条参数,传入了(29岁,中等长相,富有)就可以得到一个‘见’的结果。当然还有同学估计对这个决策树有异议,说只要有钱其他的条件都可以忽略。哈哈。确实对于一部分人是这样。同时我们也发现了。这棵树构建的并不是非常的谨慎,所以,决策是的关键但还是在于如何构建决策树

构建决策树

决策树的构建会遵循一个指标,这个指标就是信息增益。
一种叫ID3的算法,这个算法是按照信息增益来构建。
还有一种算法叫做C4.5的算法,这种算法是以信息增益的比来进行构建。
另外还有一种算法叫做CART算法,这种算法是按照基尼系数来创建。


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

在信息论和概率统计中呢,为了表示某个随机变量的不确定性,就引申出来一个概念叫做熵。如果假设X是一个有限个取值的离散型随机变量的话,很显然它的概率分布或者分布律就是这样:
概率分布
有了概率分布后,则这个随机变量X的熵的计算公式就是,log以2为低。
熵计算公式
从这个公式也可以看出,如果我概率是0或者是1的时候,我的熵就是0。(因为这种情况下我随机变量的不确定性是最低的),那如果我的概率是0.5,我的熵是最大也就是1。(就像扔硬币,你永远都猜不透你下次扔到的是正面还是反面,所以它的不确定性非常高)。所以呢,熵越大,不确定性就越高。
在我们实际情况下,我们要研究的随机变量基本上都是多随机变量的情况,所以假设有随便量(X,Y),那么它的联合概率分布是酱紫:
联合分布概率
那如果我想知道在我事件X发生的前提下,我事件Y发生的熵是多少的话,这种熵我们叫它条件熵。条件熵H(Y|X)表示随机变量X的条件下随机变量Y的不确定性。条件熵的计算公式是酱紫:

- List item
当然条件熵的一个性质也熵的性质一样,我概率越确定,条件熵就越小,概率越五五开,条件熵就越大。

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

所以信息增益如果套上机器学习的话就是,如果把特征A对训练集D的信息增益记为g(D, A)的话,那么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中计算每个特征的信息增益,然后看哪个最大就选哪个作为当前节点。然后继续重复刚刚的步骤来构建决策树。
ID3算法其实就是依据特征的信息增益来构建树的。具体套路就是从根节点开始,对节点计算所有可能的特征的信息增益,然后选择信息增益最大的特征作为节点的特征,由该特征的不同取值建立子节点,然后对子节点递归执行上面的套路直到信息增益很小或者没有特征可以继续选择为止。

ID3 构建决策树

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

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

C4.5构建决策树

C4.5算法继承了ID3算法的优点,并在以下几方面对ID3算法进行了改进:

  1. 用信息增益率来选择属性,克服了用信息增益选择属性时偏向选择取值多的属性的不足;
  2. 在树构造过程中进行剪枝;
  3. 能够完成对连续属性的离散化处理;
  4. 能够对不完整数据进行处理。

信息增益准则偏向于可取值数目较多的属性(例如:将”编号”作为一个划分属性,那么每个”编号”仅包含一个样本,分支结点的纯度最大,条件熵为0,信息增益=信息熵,信息增益达到最大值),为减少这种偏好带来的不利影响,使用了”信息增益率”来选择最优划分属性。

信息增益率

信息增益率是在信息增益的基础上,增加了属性A的信息熵。

信息增益率的定义如下:
在这里插入图片描述
其中,
在这里插入图片描述
该值表示数据集D按属性A分裂的v个划分产生的信息。

注意:信息增益率偏向于可取值数目较少的属性,所以C4.5算法不是直接选择增益率最大的划分属性,而是先从划分属性中找出信息增益高于平均水平的属性,再从中选择信息增益率最高的属性。

算法过程

训练集 :
在这里插入图片描述
属性集:
在这里插入图片描述
(1) 生成结点node;
(2) 如果数据集D都属于同一个类C,那么将node标记为C类叶子结点,结束;
(3) 如果数据集D中没有其他属性可以考虑,那么按照少数服从多数的原则,在node上标出数据集D中样本数最多的类,结束;
(4) 否则,根据信息增益率,先从划分属性中找出信息增益高于平均水平的属性,再从中选择信息增益率最高的属性。作为结点node的一个分支。
(5) 结点属性选定后,对于该属性中的每个值:
a) 每个值生成一个分支,并将数据集中与该分支有关的数据收集形成分支结点的样本子集Dv,删除结点属性那一栏;
b) 如果Dv非空,则转(1),运用以上算法从该结点建立子树。

CART构建决策树

CART树又名分类回归树,可用于分类和回归。

基尼指数

分类时数据集的纯度可以用基尼值来度量:

https://img2018.cnblogs.com/blog/1572437/201904/1572437-20190411194002838-1205757630.gif

纯度越大,基尼值越小。

属性A的基尼指数定义如下:

在这里插入图片描述

选择基尼指数最小的属性作为最优划分属性。

均方差

回归时数据集D的纯度可以用均方差来度量:

在这里插入图片描述

其中

在这里插入图片描述

选择均方差最小的属性作为最优划分属性。

算法过程

同上,第(4)步中计算”信息增益率”改为”基尼指数”或”均方差”即可。

算法比较

算法支持模型树结构特征选择连续值处理缺失值处理剪枝特征属性多次使用
ID3分类多叉信息增益不支持不支持不支持不支持
C4.5分类多叉树信息增益率支持支持支持不支持
CART分类,回归二叉树基尼系数,均方差支持支持支持支持

~~
~~
~~
~~
不足支持还望大佬多多补充。
文章参考其他博客:
url : https://www.cnblogs.com/cymx66688/p/10691933.html
url : https://blog.csdn.net/alw_123/article/details/85116747

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值