决策树详解

1.引例

  首先来看一个例子,这个例子是关于相亲的:
这里写图片描述

相亲的时候,我们通过比较一个一个的条件,来判断到底去不去见相亲对象,这种通过树状结构的判断就是典型的决策树。

2.决策树

  决策树是一种树型结构有节点有向边组成。

节点:
    内部节点:表示某一个属性或特征
    叶结点:代表一种类别

有向边/分支:
    代表一个测试输出

基本思想:采用自顶向下的递归方法,以信息熵(或其他度量条件)为度量来构造一课熵值下降最快的数,到叶子节点处的熵值为0,此时每个叶子节点中的实例都属于同一个类。

  简单点理解就是:决策树本质就是一组if-then规则的集合,一个决策树将特征空间划分为不相交的单元(Cell) 或区域(Region),如下图所示:

这里写图片描述

左边的决策树将特征空间切分成右边的坐标图。每一个特征取值集合都会对应一个空间,该空间属于一个类别。

  一棵决策树的构造过程如下所示:

- Step1:选取一个属性作为决策树的根结点,然后就这个属性所有的取值创建树的分支.
- 
– Step2:用这棵树来对训练数据集进行分类:
    * 如果一个叶结点的所有实例都属于同一类,则以该类为标记标识此叶 结点.
    * 如果所有的叶结点都有类标记,则算法 终止.

– Step3:否则,选取 一个从该结点到根路径中没有出现过的属性作为标记标识该结点,然后就这个属性的所有取值继续创建树的分支;重复算法 步骤2.

  建立决策树的关键,即在当前状态下选择哪个属性作为分类依据?如何判断哪个属性优先使用?

  我们选取某个属性的目标是:每个分支节点的样本尽可能属于同一类别,即节点的”纯度”(Purity)越来越高,杂质度越来越低。

  根据不同的目标函数,建立决策树主要由以下三种算法:

(1)ID3: 信息增益
(2)C4.5 信息增益率
(3)CART 基尼指数

3. ID3算法,信息增益

基本思想:
  以信息熵为度量,用于决策树结点的属性选择,每次优先选取 信息增益最大的属性 ,即能使熵值最小的属性 ,构造一棵熵值下降最快的决策树。到叶子结点的熵值为0 ,此时对应实例集中的实例属于同一类别。

信息熵:
  信息论与概率统计中,熵表示随机变量不确定性的大小,是度量样本集合纯度最常用的一种指标。令离散随机变量X概率分布为p(X=xi)=pi,则随机变量X的熵定义为:

H(x)=i=1npilog2pi

若X为连续随机变量,则概率分布变成概率密度函数,求和负号变成积分符号即可。熵是随机变量不确定性的度量,不确定性越大,熵值越大;若随机变量退化成定值,熵为0。

经验(信息)熵:
  假设当前样本集合D中第c(c=1,2,...,C)类样本所占比例为Pc,则D的经验信息熵(简称经验熵)定义为:

H(D)=i=1Cpclog2pc=i=1CDcDlog2DcD

本质上就是以每种类别出现的频率作为概率,然后计算信息熵。H(D)的值越小,则D的纯度越高。

条件熵:
  对随机变量X,Y,联合分布为p(X=xi,Y=yi)=Pij,条件熵H(Y|X)表示在一直随机变量X的条件下,随机变量Y的不确定性,定义为在X给定条件下Y的条件概率分布的熵对X的数学期望:

H(Y|X)=i=1npiH(Y|X=xi)

(X,Y) 发生所包含的信息熵,减去Y单独发生包含的信息熵—— 在Y 发生前提下,X 发生”新”带来的信息熵。关系如下图所示:

这里写图片描述

经验条件熵:
  假设当前样本集D共有C类,每一类有Dc个样本,属性(特征)a有不同的取值a1,a2,...,aN,每一类中属性取值为i的样本数为Dic, 则D的经验条件熵为:

H(D|a)=i,cp(Dc,ai)log2p(Dc,ai)=i=1N|Di||D|c=1C|Dic||Di|log2|Dic||Di|=i=1N|Di||D|H(Di)

也就是特征a所有可能取值的条件熵之和(这个和是加权和)。反应了特征a的信息对样本D的信息的不确定性减少的程度。

信息增益:
  特征a对训练数据集D的信息增益为G(D, a),定义为集合D的经验熵H(D)与特征a给定条件下D的经验条件熵H(D|a)之差,即:

G(D,a)=H(D)H(D|a)=H(D)+i=1N|Di||D|H(Di)

ID3算法即是以信息增益为准则,对每次递归的节点属性进行选择的,选择信息增益最大的那个属性。

ID3算法流程:

输入:训练数据集D,特征集A,阈值ε
输出:决策树T
(1) 若D中所有实例属于同一类Ck ,则T为单结点树,并将类Ck作为该结点的类标记,返回T ;
(2) 若A=Φ,则T为单结点树,并将D中实例数最大类Ck作为该结点类标记,返回T ;
(3) 否则,计算A中各特征对D的信息增益,选择信息增益最大的特征Ag ;
(4) 如果Ag的信息增益小于阈值ε,则置T为单结点树,并将D中样本数最大的类Ck作为该结点的类标记,返回T ;
(5) 否则 ,对Ag的每一个可能值ai,分割D为若干非空子集Di,将Di中实例数最大的类作为标记,构建子结点,由结点及其子结点构成树T,返回T;
(6) 对第i个子结点,以Di为训练集,A-{Ag}为特征集,递归的调用第(1)~(5) 步,得
到子树Ti,返回Ti 。

ID3举例:

数据:
这里写图片描述

计算信息熵:
这里写图片描述

计算信息增益:
这里写图片描述

选择节点属性
这里写图片描述

下一轮信息增益计算
这里写图片描述

最终树结构
这里写图片描述

ID3算法优点:

    只需对 训练实例进行 较好地标注 ,就 能进行学习,从类无序、无 规则事物( 概念) 中推理 出分类规则.

    分类模型是树状结构,简单直观,可将决策树中到达每个叶结点的路径转换为IFTHEN形式的分类规则,比较符合人类的理解方式.

ID3算法局限性:

-  信息增益偏好取值多的属性( 极限 趋近于均匀分布)
–  可能会受噪声或小样本影响,易出现过 拟合问题
–  无法处理连续值的属性
–  无法处理属性值不完整的训练数据

C4.5算法(信息增益率)

信息增益的问题:

G(D,a)=H(D)+i=1N|Di||D|H(Di)
--信息增益准则对可取值数目N较多的属性有所偏好.

--取值更多的 属性容易 使得数据更“纯”,其信息增益更大 。决策树会首先挑选这个属性作为树的顶结点;
结果训练出来的形状是一棵庞大且深度很浅的树,这样的划分极不合理.

信息增益率:
  信息增益率表达式为:

Gratio(D,a)=G(D,a)H(a)

其中
H(a)=i=1N|Di||D|log2|Di||D|

称为属性a的固有值。

  N越大,H(a) 通常也越大;因此采用信息增益率,可缓解信息增益准则对可取值数目较多的属性的偏好.

  C4.5算法和ID3算法类似,就是用信息增益率代替信息增益作为度量标准,其他基本类似。

CART算法

基尼指数:
   假设数据集为D,数据集中类别C的总个数为m,即数据集D总共可以分为m类。那么数据集D的基尼指数定义为:

Gini(D)=1i=1mp2i

其中pi表示第i各类别样本的概率,计算方法为:
pi=|Di||D|=iDiD

如果所有的样本都属于一类,则很容易得到某个pi为1,其他pi为0,则Gini指数为0,此时样本纯度越高。也就是Gini指数越小,样本纯度越高。

  在CART算法中利用基尼指数构造二叉决策树(CART算法一般是构造二叉决策树,允许某个属性多次使用,这里需要注意,和ID3算法有所不同),对每个属性都会枚举其属性中的非空真子集,以属性R为例,分裂后的基尼系数为:

GiniR(D)=|D1||D|Gini(D1)+|D2||D|Gini(D2)

其中D1D2都是D的一个非空真子集,且D1+D2=D,因为是二叉决策树。则属性R的基尼增量为:
ΔGini(R)=Gini(D)GiniR(D)

我们需要寻找增量最大的那个属性R,做为下一个分裂节点。

  CART算法和ID3算法类似,只是用基尼指数代替信息增益作为度量值,其他基本类似。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值