决策树详解

来源:互联网 发布:ubuntu vsftpd配置详解 编辑:程序博客网 时间:2024/06/07 07:04

介绍

机器学习中,决策树是一个预测模型,代表的是对象属性与对象值之间的一种映射关系。对于样本数据集,对象属性就是样本特征,有很多,对象值就是类标签,只有一个。分类决策树模型由结点和有向边组成。结点分为内部结点和叶结点。内部结点表示一个特征(属性),叶结点表示一个类标签。

从数据产生决策树的机器学习技术叫做决策树学习。决策树学习的算法通常是一个递归地选择最优特征,并根据特征对数据集进行分割,使得各个子数据集有一个最好的分类的过程。决策树学习过程:特征选择,决策树生成。

决策树的构建

构建根节点,将所有训练数据都放在根结点,按照这一特征将训练数据集分割成子集,如果这些子集已经能够被基本正确分类,则构建叶结点,并将这些子集分到对应的叶结点去。如果还有子集不能被基本正确分类,则对这些子集继续选择新的最优特征,继续对其进行分割,构建相应的结点,如此递归下去,直到所有训练数据子集被基本正确分类或者没有合适的特征为止。最后每个子集都被分到叶结点上,都有了明确的类。这就构成了一颗决策树。

通俗的理解就是:首先对于一个数据集,每一个样本都包含n个特征以及一个标签。首先,我们把这n个特征都作为第一个分裂结点,然后来分裂数据集,然后通过量化来计算那个结点是当前最好的分类特征,就选用次特征作为这个结点的特征。这个特征有几属性值,则从这个结点出发有几条边,每一条边代表当前特征的一个属性值,根据此特征,将数据集分成多个子集。如果此时边的叶子结点所包含的数据子集都属于一种标签,则这条路径决策树生成结束。如果包含多种标签,则重做上面的过程,直到每条路径的叶子结点的数据子集都是同一标签的。

为了找到决定性的特征、划分出最好的结果,我们必须评估数据集中蕴含的每个特征,寻找分类数据集的最好特征。完成评估之后,原始数据集就被划分为几个数据子集。这些数据子集会分布在第一个决策点的所有分支上。如果某个分支下的数据属于同一类型,则该分支处理完成,称为一个叶子节点,即确定了分类。如果数据子集内的数据不属于同一类型,则需要重复划分数据子集的过程。如何划分数据子集的算法分为几种,常见的算法有三个ID3、C4.5、CART。

算法

常用的几种决策树算法有ID3、C4.5、CART:

ID3

选择信息熵增益最大的feature作为node,实现对数据的归纳分类。ID3算法由Ross Quinlan发明,建立在“奥卡姆剃刀”的基础上:越是小型的决策树越优于大的决策树(be simple简单理论)。ID3算法中根据信息论的信息增益评估和选择特征,每次选择信息增益最大的特征做判断模块。

C4.5

是ID3的一个改进,比ID3准确率高且快,可以处理连续值和有缺失值的feature。。C4.5算法用信息增益率来选择属性,克服了用信息增益选择属性时偏向选择取值多的属性的不足在树构造过程中进行剪枝;能够完成对连续属性的离散化处理;能够对不完整数据进行处理。准确率较高,但效率低。

CART

使用基尼指数的划分准则,通过在每个步骤最大限度降低不纯洁度,CART能够处理孤立点以及能够对空缺值进行处理。CART假设决策树是二叉树。

数学原理

首先要明确几个概念:信息,自信息量,熵,困惑度,联合熵,条件熵,互信息,信息增益,信息增益比,基尼指数

信息

信息是关于事物的运动状态和规律的认识,它可以脱离具体的事物而被摄取、传输、存贮、处理和变换。

信息论,就是用数理统计方法研究信息的基本性质以及度量方法,研究最佳解决信息的摄取、传输、存贮、处理和变换的一般规律的科学。它的成果将为人们广泛而有效地利用信息提供基本的技术方法和必要的理论基础。

自信息量I(ai)表示一个消息ai出现后所带来的信息量,用其概率的负对数来表示,即I(ai)=-log2p(ai),因此I(ai)是非负值,并且是概率p(ai)的单调递减函数。一个消息出现的概率越大,则它出现所带来的信息量越小,很好理解,举个例子,当你听说一件几乎不可能发生的事情发生时,你是不是会觉得信息量巨大。

在信息论中,熵表示的是不确定性的量度,不确定性越高,熵越高,其意义是整个系统中的平均信息量。香农把信息定义为“用来消除不确定性的东西”。熵也可以被视为描述一个随机变量的不确定性的数量。一个随机变量的熵越大,它的不确定性越大。那么,正确估计其值的可能性就越小。越不确定的随机变量越需要大的信息量用以确定其值。

熵在信息论中的定义如下:
  如果有一个系统S内存在多个事件S = {E1,…,En}, 每个事件的机率分布 P = {p1, …, pn},则每个事件本身的讯息为
 Ie = − log2pi
  (对数以2为底,单位是位元(bit))
 Ie = − lnpi

I(A)度量事件A发生所提供的信息量,称之为事件A的自信息,P(A)为事件A发生的概率。如果一个随机试验有N个可能的结果或一个随机消息有N个可能值,若它们出现的概率分别为p1,p2,…,pN,则这些事件的自信息的和:[H=-SUM(pi*log(pi)), i=1,2…N]称为熵。

通俗理解就是事件A的N个可能发生所带来的信息量分别乘以N个可能发生的概率。

但是我们通常使用H(X)符号代表随机变量X的熵,
H(X)=E(I(X))
这里写图片描述

E代表期望值函数,I(X)代表随机变量X的自信息量。

困惑度

联合熵

H(X)代表整个系统的平均信息量,因此,H(X,Y)代表包含X,Y二个随机变量系统的联合熵。通俗理解是,我们平均需要使用H(X,Y)个位元(bit)(此时底数选2)才能表达其中一个(x , y)元素。

条件熵

假如x为已知的情况之下,那么我们需要再假如多少位元(bit)才能表示其中的(x,y)元素呢?这就是H(Y|X)的意义。

这里写图片描述

H(Y|X) = H(X,Y) – H(X)
证明:
这里写图片描述

互信息

对于二个随机变量X.Y,假如其概率分布分别为p1(x)和p2(y),其联合概率分布为p(x,y),则X,Y的互信息I(X;Y)定义如下:
这里写图片描述

假如随机变量X和Y无关(条件独立),则 其互信息为0:
这里写图片描述

互信息代表二个随机变量间共有的信息位元数(关联性),相当与X的熵H(X)与条件熵H(Y|X)之间的差:
这里写图片描述

由于互信息代表二者之间的关联性,关联性越强互信息越大,因此可用互信息度量二个随机变量之间的距离,定义距离为d(X,Y):
d(X,Y) = H(X,Y) - I(X,Y)

或者正则化后变为D(X,Y):

D(X,Y) = d(X,Y)/H(X,Y)<=1

信息增益

特征A对训练数据集D的信息增益定义为g(D,A):

g(D,A)=H(D)-H(D|A) 

决策树学习中信息增益等价于训练数据集中类与特征的互信息。
通俗的理解是:H(D)代表整个数据集的不确定性,H(D|A)表示知道A之后整个系统的不确定性,那么H(D)-H(D|A)就表示了加A之后系统不确定性减少的程度,即A带来的信息量。

决策树中ID3算法根据信息增益选择特征:对训练数据集(或子集)D,计算其每个特征的信息增益,比较它们的大小,选择信息增益最大的特征。

信息增益比

以信息增益作为划分训练数据集的特征,偏向于选择取值较多的特征的问题,使用信息增益比可以解决这个问题。
信息增益比

gA(D,A)=g(D,A)/HA(D)

基尼指数

我们知道,在ID3算法中我们使用了信息增益来选择特征,信息增益大的优先选择。在C4.5算法中,采用了信息增益比来选择特征,以减少信息增益容易选择特征值多的特征的问题。但是无论是ID3还是C4.5,都是基于信息论的熵模型的,这里面会涉及大量的对数运算。能不能简化模型同时也不至于完全丢失熵模型的优点呢?有!CART分类树算法使用基尼系数来代替信息增益比,基尼系数代表了模型的不纯度,基尼系数越小,则不纯度越低,特征越好。这和信息增益(比)是相反的。

具体的,在分类问题中,假设有K个类别,第k个类别的概率为pk, 则基尼系数的表达式为:

  1. 列表内容

参考:
1.http://blog.csdn.net/yueyedeai/article/details/15225677
2.http://ccckmit.wikidot.com/st:mutualinformation
3.http://sklearn.lzjqsdd.com/modules/tree.html
4.李航 统计学习方法

原创粉丝点击