赞
踩
假设我们现在有这样一个数据集,记录了每次打篮球的时候,当天的天气、温度、湿度、刮风等情况
然后根据历史的数据集,我们用决策树算法生成了如下的图形:
这幅图相信大家很容易看懂,就是当天气是晴天的时候,打篮球;小雨的时候,不打篮球;如果是阴天,那就再看一下温度,温度低的话不打篮球,温度中的话打篮球。
如果用if else来描述这幅图就是
很多人写过类似if else的判断语句。但是你有没有想过,有这么多判断条件,为什么会先选这个条件做if判断,其他条件后做if判断呢?很多时候我们是根据自己的经验和分析,构建if else的判断分支。
而决策树模型会根据大量的历史样本数据,运用算法选择合适的属性作为节点,最终构造出类似流程图的树状结构。
决策树的基本结构包含根节点、子节点(有子节点就有父节点,子和父是相对的,一个子节点可能是下一个分支节点的父节点)、叶子节点。
1.根节点:就是决策树最开始的节点,刚才我们生成的决策树图中,根节点就是“天气”
2.子节点:就是树中间的一些节点,比如“温度”
3.叶子节点:最底部的节点,已经不能再分下去,也是决策的结果
在决策树的算法中,不管是ID3(信息增益),C4.5(信息增益率)还是CART(基尼系数),都在解决同样的问题:
1.选择哪个属性作为根节点
2.选择那些属性作为子节点
3.什么时候停止得到决策的结果,即叶子节点
为什么学决策树算法之前,要学习信息和熵的概念呢?
我们知道熵是用来衡量事物的不确定性,事物的不确定性越大,熵就越大。
同样的道理,如果一个数据集决策属性越杂,我们就说数据集的纯度越低,熵越大。如果决策属性的值都是打篮球,数据集纯度是最高的,没有任何不确定性,熵为0。当数据集决策属性的值有两个,一半是打篮球,一半是不打篮球,纯度最低,熵为1。
但是如果我们能找到某个条件属性(表中的天气、温度、湿度、刮风都称作条件属性),通过对数据集进行划分,使得决策属性(表中的是否打篮球称做决策属性)的不确定性降低,那么这个条件属性我们就作为决策树的节点。
根节点确认以后(比如例子中的天气),根据根节点的属性值(晴天、小雨、阴天都是天气属性的值),整个数据集又被划分为不同的子数据集(按照晴天、小雨、阴天,整个数据集分为不同的部分),然后对子数据集重复同样的计算,求出子数据集中使得决策属性不确定性最低的属性,将该属性作为子节点,直到不能再继续分下去,到叶子节点停止。
上面的表述可能有点不太好理解,我们还是以打篮球的例子,来重复整个ID3算法的过程。
我们有11个样本的数据集D,其中标签属性中有7个输出为打篮球,4个为不打篮球。数据集D的不确定性是0.9457。
我们可以看到,如果以天气作为属性进行划分,样本D的不确定性,从最初的0.9457降低到0.2504。由于ID3算法求的是信息增益,不确定性降低多少,实际上就是信息增加多少:
如果以温度作为属性划分,信息增益为0.5911。
湿度、刮风的计算细节就不再展示,同样的方法计算得出,当湿度作为属性进行划分,信息增益为0.6176;刮风作为属性进行划分,信息增益为0.0238。
计算结果显示,当天气作为属性时,信息增益最大。因为ID3算法就是寻找信息增益最大的属性作为节点,所以我们最终选取天气作为根节点。
天气已经确定为根节点,所以天气这个属性后面也不必再重复计算,以确保已经确定为节点的属性在任意路径最多只出现一次。
当天气等于晴天时,所有的结果都是打篮球,没有任何不确定性,所以不必再继续分下去,叶子节点就是打篮球;
当天气等于小雨时,所有的结果都是不打篮球,没有任何不确定性,所以也不必再继续分下去,叶子节点就是不打篮球;
当天气等于阴天时,结果有打篮球,也有不打篮球。所以我们必须再从温度、湿度、刮风等条件属性中,找到信息增益最大的属性作为节点,继续分裂下去。
计算方法和上面一样,分别求出当条件是温度、湿度、刮风时的信息增益。经过计算我们会发现选择属性温度时,信息增益最大,所以阴天这个分支,继续选择温度作为子节点。
温度作为节点之后,再继续分裂,没有任何不确定性。当温度为中的时候,结果都是打篮球,低的时候,结果是不打篮球。所以整个决策树就构造完成了。
我们可以看到,刮风这个属性并没有在决策树中。说明刮风作为属性的时候,没有降低任何不确定性,对判断是否打篮球没有帮助,所以被算法排除掉了。
ID3算法的规则非常简单,就是寻找信息增益最大的属性作为节点。信息增益最大,意味着使用这个属性之后,结果的不确定性最低。
熵的公式:
信息增益(information gain)的公式如下:
Ent是熵Entropy的缩写;
n是属性a所有值的数量,比如天气属性有三个值,{晴天、小雨、阴天},那么n=3;
Ent(D)是原集合D的熵;
这个公式描述的就是原集合D的熵在知道属性a之后熵减少了多少。熵减少意味着不确定减少,熵减少的数量就是信息增加的数量,获取信息可以减少不确定性。熵和信息的数量相等,意义相反。
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。