大数据大数据,机器学习,人工智能大数据 爬虫Python AI Sql

决策树算法理解

2018-11-04  本文已影响11人  AwesomeTang

为了更好的理解决策树算法,我们先来看个小例子:

假设我们知道一个人特征「黑色皮肤,头发鬈曲,身高175cm」,现在需要去判断这个人是来自非洲还是亚洲。
根据我们经验来说,这个人大概率是来自于非洲,为什么呢,因为首先他是黑色皮肤,这个基本就能确定是来自非洲了,而且他还是卷发,我们知道头发鬈曲也是黑色人种的一大特征,所以我们判断这个人是来自于非洲。

这其实也就是决策树算法在训练过程中需要完成的,在多个特征中,我们需要找出最能区分结果的特征,区分结果差的直接丢掉。

决策树(ID3算法为例)

目前决策树算法中分为ID3,C4.5和CART三种,区别在于ID3在使用信息增益来选则分类属性,C4.5使用信息增益比,CART使用基尼系数,整体逻辑都一样,公式如下:

我们本篇将以ID3为例,我们需要理解三个概念:

通俗理解:首先我们整个数据集的复杂度可能是0.9,然后我们在知道特征A之后复杂度变为了0.2,在知道特征B的时候复杂度性变成了0.5,特征A和特征B的信息增益分别是0.7和0.4,那这样我们就能判断特征A是比特征B更能区分结果的特征,所以我在判断的时候会优先看特征A。

Example

我们现在有如下数据,需要通过声音,头发和体重三个特征去判断性别。


获取决策树步骤如下:

  1. 计算熵:
    entropy = -(\frac {6}{11}*log_2 \frac {6}{11} +\frac {5}{11}*log_2 \frac {5}{11})\approx 0.994

  2. 分别计算「声音,头发,体重」的条件熵:
    a. 声音粗:entropy_{声音粗} = -(\frac {1}{7}*log_2 \frac {1}{7} +\frac {6}{7}*log_2 \frac {6}{7})\approx 0.592
    b.声音细:entropy_{声音细} = -(\frac {1}{4}*log_2 \frac {1}{4} +\frac {3}{4}*log_2 \frac {3}{4})\approx 0.811
    c. 条件熵:
    entropy_{声音} = \frac {4}{11}*entropy_{声音细} +\frac {7}{11}*entropy_{声音粗} \approx 0.672

  3. 计算信息增益:
    gain_{声音} =0.994-0.672\approx 0.323
    计算头发和体重的也一样,就不重复了,直接放结果
    gain_{头发} =0.994-0.796\approx 0.198
    gain_{体重} =0.994-0.730\approx 0.264

  4. 声音的信息增益最大,所以我们选择声音作为根结点;

  5. 这时候我们会生成两个节点,声音粗和声音细。我们接下来要做的是分别判断是否满足停止条件,若满足, 则将其设为子节点停止分裂,输出结果即占比最大的类别,若不满足,则重复1-4步。

停止条件:关于停止条件我们可以简单分为被动停止和主动停止。

最后我们会得到一个如下的树:


最后

整个决策树的生成逻辑也就是这样,还是挺简单的,相对于其他算法,决策树计算简单,而且输出结果解释性很强,你可以很直观的看到这么一棵「树🌲」,但缺点也很明显,就是当特征或者特征值过多的时候很容易出现过拟合现象

上一篇下一篇

猜你喜欢

热点阅读