决策树

决策树

@[2016/08/29]

决策树(decision tree)是一种基本的分类与回归方法。决策树学习通常包括3个步骤:特征选择、决策树的生成和决策树的修剪。

1. 决策树模型与学习

分类决策树主要由结点(node)有向边(directed edge)组成。结点分为:内部结点(internal node)叶结点(leaf node)。内部结点表示一个特征或属性,叶结点表示一个类。
决策树可看成是一个if-then规则的集合,它具有一个重要的性质:互斥且完备。另外,决策树还表示给定特征条件下的类的条件概率分布。

决策树的本质是从训练数据集中归纳出一组分类规则。与训练数据集不相矛盾的决策树可能有多个,也可能一个也没有。我们需要的是一个与训练数据矛盾较小的决策树,同时具有很好的泛化能力。从另一个角度看,决策树学习是有训练数据集估计条件概率模型。基于特征空间划分的类的条件概率模型有无穷多个。我们选择的条件概率模型应该不仅对训练数据集有很好的拟合,而且对未知数据有很好的预测。

决策树的学习算法通常是以一个递归地选择最有特征,并更具该特征对训练数据进行分割,使得对各个子数据集有一个最好的分类过程。这一过程对应着对特征空间的划分,也对应着决策树的构建。

2. 特征选择

特征选择在于选择对于训练数据集具有分类能力的特征,通常有:信息增益(information gain)信息增益比(information gain ratio)

2.1 信息增益

熵(entropy)表示随机变量不确定性的度量。设X是一个取有限个值的离散随机变量,其概率分布为

P(X=xi)=pi, i=1,2,...,n

随机变量的熵只与X的分布有关,因此随机变量的熵可定义为
H(p)=i=1npilogpi

上式中的对数以2为底或自然对数e为底,熵的单位分别称作比特(bit)或纳特(nat)。
熵越大,随机变量的不确定性越大。从定义看验证
0H(p)logn

设有随机变量(X,Y),其联合概率分布为

P(X=xi,Y=yi)=pij, i=1,2,...,n; j=1,2,...,m

条件熵H(Y|X)表示在已知随机变量X的条件下随机变量Y的不确定性。随机变量X给定的条件下随机变量Y条件熵(conditional entropy)H(X | Y),定义为X给定条件下Y的条件概率分布的熵对X的数学期望
H(Y | X)=i=1npiH(Y | X=xi)

这里,pi=P(X=xi), i=1,2,...,n
信息增益表示得知特征X的信息使得Y的信息的不确定性减少的程度。

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

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

一般地,熵H(Y)与条件熵H(Y | X)之差称为互信息(mutual information)。决策树学习中的信息增益等价于训练数据集中类与特征的互信息。
信息增益表示由于特征A使得对数据集D的分类的不确定性减少的程度。

信息增益计算形式:设训练数据集为D|D|表示其样本容量,即样本个数。设有K个类Ck, k=1,2,...,K|Ck|为属于类Ck的样本个数,Kk=1|Ck|=|D|。设特征An个不同的取值{a1,a2,...,an},根据特征A的取值将D划分为n个子集D1,D2,...,Dn|Di|
Di的样本个数,ni=1|Di|=|D|。记子集Di中属于类Ck的样本的集合为Dik,即Dik=DiCk|Dik|Dik的样本个数。于是,可按如下步骤计算特征A对训练数据集D的信息增益g(D,A)
(1) 计算数据集D的经验熵H(D)

H(D)=k=1K|Ck||D|log2|Ck||D|

(2)计算特征A对数据集D的经验条件熵H(D | A)
H(D | A)=i=1n|Di||D|H(Di)=i=1n|Di||D|k=1K|Dik||Di|log2|Dik||Di|

(3)计算信息增益
g(D,A)=H(D)H(D | A)
2.2 信息增益比

对于取值多的属性,尤其是一些连续型数值,比如两条地理数据的距离属性,这个单独的属性就可以划分所有的样本,使得所有分支下的样本集合都是“纯”的(最极端的情况就是每个叶结点只有一个样本),对于H(D | A)在极限情况下A将每一个样本都分到一个结点中去的时候,H(D | A)0,此时特征选择结果必然是A。显然,以信息增益作为划分训练数据集的特征,存在偏向于选择值较多的特征的问题,使用信息增益比可以对这一问题进行校正。这是特征选择的另一个准则。

信息增益比:特征A对训练数据集D的信息增益比gR(D,A)定义为其信息增益g(D,A)与训练数据集D关于特征A的值的熵HA(D)之比,即

gR(D,A)=g(D,A)HA(D)

其中,HA(D)=ni=1|Di||D|log2|Di||D|n是特征A取值的个数。

3. 决策树生成

本节介绍两种典型的决策树生成算法ID3C4.5

3.1 ID3算法

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

3.2 C4.5算法

与ID3算法的唯一区别就在于特征选择方式不同,C4.5使用信息增益比作为特征选择方式。
算法2 (C4.5算法)
输入:训练数据集D,特征A,阈值ξ
输出:决策树T
(1)若D中所有实例属于同一类Ck,则T为单结点树,并将类Ck作为该节点的类标记,返回T
(2)若A=,则T为单结点树,并将D中实例数目最大的类Ck作为该结点的类标记,返回T
(3)否则,按计算A中各特征对D信息增益比,选择信息增益 比最大的特征Ag
(4)如果Ag的信息增益比小于阈值ξ,则置T为单结点树,并将D中实例数最大的类作为该节点的类标记,返回T
(5)否则,对Ag的每一个可能值ai,依Ag=aiD分割为若干非空子集Di,将Di中实例数最大的类作为标记,构建子结点,由结点及其子结点构成数T,返回T
(6)对第i个子结点,以Di为训练集,以A{Ag}为特征集,递归地调用步骤1~步骤5,得到子数Ti,返回Ti

4. CART

CART是在给定输入随机变量X条件下输出随机变量Y的条件概率分布的学习方法。CART假设决策树是二叉树,这样的决策树等价于递归地二分每个特征,将输入空间即特征空间划分为有限个单元,并在这些单元上确定预测的概率分布,也就是输入给定的条件下输出的条件概率分布。

4.1 分类树的生成

基尼指数:分类问题中,假设有K个类,样本点属于k类的概率为pk,则概率分布的基尼指数定义为

Gini(p)=k=1Kpk(1pk)=1k=1Kp2k

对于给定的样本集合D,其基尼指数定义为
Gini(D)=1k=1K(|Ck||D|)2

这里,CkD中属于第k类的样本子集,K是类的个数。
如果样本集合D根据特征A是否取某一可能值a被分割为D1D2两部分,即
D1={(x,y)D | A(x)=a}, D2=DD1

则在特征A的条件下,集合D的基尼指数定义为
Gini(D,A)=|D1||D|Gini(D1)+|D2||D|Gini(D2)

基尼指数Gini(D)表示集合D的不确定性。基尼指数Gini(D,A)表示经A=a分割后集合D的不确定性。基尼指数越大,样本集合的不确定性也就越大,这一点与熵类似。

算法3 (CART生成算法)
输入:训练数据集D,停止计算的条件;
输出:CART决策树
根据训练数据集,从根节点开始,递归地对每个结点进行以下操作,构建二叉决策树:
(1)设结点的训练数据集为D,计算现有特征对该数据集的基尼指数。对每一个特征A,对其可能取的每个值a,根据样本点对A=a的测试为“是”或“否”将D分割成D1D2两部分,并计算A=a时的基尼指数。
(2)在所有可能的特征A以及它们所有可能的切分点a中,选择基尼指数最小的特征及其对应的切分点作为最优特征与最优切分点。依最优特征与最优切分点,从现结点生成两个子结点,将训练数据集依特征分配到两个子结点中去。
(3)对两个子结点递归地调用(1),(2),直至满足停止条件。
(4)生成CART决策树。
算法停止条件:停止条件的选取有多种方式
(1)结点中的样本个数小于预定的阈值
(2)样本集的基尼指数小于预定阈值(样本基本属于同一类)
(3)没有更多特征
(4)更一般的情况我们计算χ2(卡方)值来判断分类条件和类别的相关程度,当χ2很小时说明分类条件和类别是独立的,即按照该分类条件进行分类是没有道理的,此时节点停止分裂。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值