决策树
决策树说白了就好像是if-else结构一样,它的结果就是你要生成这个一个可以从根开始不断判断选择到叶子节点的树,但是这里的if-else必然不会是让我们人为去设置的,我们要做的是提供一种方法,计算机可以根据这种方法得到我们所需要的决策树。这个方法的重点就在于如何从这么多的特征中选择出有价值的,并且按照最好的顺序由根到叶选择。完成了这个我们也就可以递归构造一个决策树了。
决策树思想,实际上就是寻找最纯净的划分方法,这个最纯净在数学上叫纯度,纯度通俗点理解就是目标变量要分得足够开(y=1的和y=0的混到一起就会不纯)。另一种理解是分类误差率的一种衡量。实际决策树算法往往用到的是,纯度的另一面也即不纯度,下面是不纯度的公式。不纯度的选取有多种方法,每种方法也就形成了不同的决策树方法,比如ID3算法使用信息增益作为不纯度;C4.5算法使用信息增益率作为不纯度;CART算法使用基尼系数作为不纯度。
决策树要达到寻找最纯净划分的目标要干两件事:建树和剪枝
一、建树:
1. 信息增益(ID3算法):
在信息论中,期望信息越小,那么信息增益就越大,从而纯度就越高。ID3算法的核心思想就是以信息增益来度量属性的选择,选择分裂后信息增益最大的属性进行分裂。该算法采用自顶向下的贪婪搜索遍历可能的决策空间。
1) 信息熵与信息增益:
在信息增益中,重要性的衡量标准就是看特征能够为分类系统带来多少信息,带来的信息越多,该特征越重要。在认识信息增益之前,先来看看信息熵的定义。熵这个概念最早起源于物理学,在物理学中是用来度量一个热力学系统的无序程度,而在信息学里面,熵是对不确定性的度量。在1948年,香农引入了信息熵,将其定义为离散随机事件出现的概率,一个系统越是有序,信息熵就越低,反之一个系统越是混乱,它的信息熵就越高。所以信息熵可以被认为是系统有序化程度的一个度量。
假如一个随机变量X的取值为X={x1,x2,..., xn},每一种取到的概率分别是{p1, p2,..., pn},那么X的熵定义为
![](https://images2017.cnblogs.com/blog/1206852/201710/1206852-20171017221400490-541129428.png)
意思是一个变量的变化情况可能越多,那么它携带的信息量就越大。
对于分类系统来说,类别C是变量,它的取值是C1, C2,..., Cn,而每一个类别出现的概率分别是P(C1), P(C2),..., P(Cn), 而这里的n就是类别的总数,此时分类系统的熵就可以表示为
![](https://images2017.cnblogs.com/blog/1206852/201710/1206852-20171017221450146-1446461942.png)
以上就是信息熵的定义,接下来介绍信息增益。
信息增益是针对一个一个特征而言的,就是看一个特征t,系统有它和没有它时的信息量各是多少,两者的差值就是这个特征给系统带来的信息量,即信息增益。
接下来以天气预报的例子来说明。下面是描述天气数据表,学习目标是play或者not play。
![](https://images2017.cnblogs.com/blog/1206852/201710/1206852-20171017221529568-568686802.png)
可以看出,一共14个样例,包括9个正例和5个负例。那么当前信息的熵计算如下
![](https://images2017.cnblogs.com/blog/1206852/201710/1206852-20171017221611271-109581709.png)
在决策树分类问题中,信息增益就是决策树在进行属性选择划分前和划分后信息的差值。假设利用属性Outlook来分类,那么如下图
![](https://images2017.cnblogs.com/blog/1206852/201710/1206852-20171017221649209-1691327319.png)
划分后,数据被分为三部分了,那么各个分支的信息熵计算如下
![](https://images2017.cnblogs.com/blog/1206852/201710/1206852-20171017221811834-1542794788.png)
![](https://images2017.cnblogs.com/blog/1206852/201710/1206852-20171017221841334-1311139909.png)
Entropy(S|T)代表在特征属性T的条件下样本的条件熵。那么最终得到特征属性T带来的信息增益为
![](https://images2017.cnblogs.com/blog/1206852/201710/1206852-20171017221935084-1245855481.png)
信息增益的计算公式如下
![](https://images2017.cnblogs.com/blog/1206852/201710/1206852-20171017222001537-1452514806.png)
其中S为全部样本集合,value(T)是属性T所有取值的集合,v是T的其中一个属性值,Sv是S中属性T的值为v的样例集合,|Sv|为Sv中所含样例数。
在决策树的每一个非叶子结点划分之前,先计算每一个属性所带来的信息增益,选择最大信息增益的属性来划分,因为信息增益越大,区分样本的能力就越强,越具有代表性,很显然这是一种自顶向下的贪心策略。以上就是ID3算法的核心思想。
Reference:
http://blog.csdn.net/acdreamers/article/details/44661149
http://www.cnblogs.com/fionacai/p/5894142.html
http://www.cnblogs.com/leoo2sk/archive/2010/09/19/decision-tree.html
http://wiki.mbalib.com/wiki/%E5%86%B3%E7%AD%96%E6%A0%91