决策树算法

来源:互联网 发布:java是什么意思啊 编辑:程序博客网 时间:2024/04/29 21:57

决策树是一种树型结构,其中每个内部结点表示在一个属性上的测试,每个分支代表一个测试输出,每个叶结点代表一种类别。决策树学习是以实例为基础的归纳学习,采用的是自顶向下的递归方法,其基本思想是以信息熵为度量构造一棵熵值下降最快的树,到叶子结点处的熵值为零,此时每个叶节点中的实例都属于同一类。决策树学习算法的最大优点是,它可以自学习。在学习的过程中,不需要使用者了解过多背景知识,只需要对训练实例进行较好的标注,就能够进行学习。

我们看一个有趣的例子,下面是一位女士准备去相亲时根据男方的条件选择见或不见的决策树示意图:
这里写图片描述

从上图可以看出该女士首先选择年龄这个属性作为分类依据,年龄大于30岁的直接不见,不超过30岁的再看相貌这个属性,如果丑就不见,如果帅或中等的话再看收入…… 直到最终可以判定所有实例的类别。

建立决策树的关键就是在当前状态下选择哪个属性作为分类依据,因此要选择适当的目标函数。目标函数可以选择信息增益信息增益率基尼系数,分别对应ID3C4.5CART这三种决策树学习算法。下面分别介绍:

1. ID3:

ID3算法是以信息增益作为其特征选择的目标函数的。当熵和条件熵中的概率由数据估计(特别是极大似然估计)得到时,所对应的熵和条件熵分别称为经验熵和经验条件熵。特征A对训练数据D的信息增益g(D,A)定义为:数据集D的经验熵H(D)与特征A给定条件下数据集D的经验条件熵H(D|A)之差,即g(D,A) = H(D) - H(D|A)。信息增益表示得知特征A的信息而使得数据集D的分类的不确定性减少的程度。
下面详述信息增益的计算方法
设训练数据集为D,|D|表示其样本个数。设有K个类Ckk=1,2,3,...,K|Ck|为属于类Ck的样本个数,显然有Kk=1|Ck|=|D|。设特征A有n个不同的取值{a1,a2,a3,...,an},根据A的取值将数据集D划分为n个子集D1,D2,D3,...,Dn|Di|表示子集Di的样本个数,显然也有ni=1|Di|=|D|。子集Di中属于类Ck的样本的集合记为Dik|Dik|Dik的样本的个数。

(1)计算数据集D的经验熵:

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

(2)计算特征A对数据集D的经验条件熵:

H(D|A)=i=1nk=1Kp(Dk,Ai)logp(Dk|Ai)=i=1nk=1Kp(Ai)p(Dk|Ai)logp(Dk|Ai)=i=1np(Ai)k=1Kp(Dk|Ai)logp(Dk|Ai)=i=1n|Di||D|k=1K|Dik||Di|log|Dik||Di|

(3)计算信息增益:

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

根据信息增益的特征选择方法是对训练数据集(或子集)D,计算每个特征的信息增益,选择信息增益最大的特征做为当前状态下的分类依据。

ID3算法的过程如下:
输入:训练数据集D,特征集A,阈值ϵ
输出:决策树T
① 若D中所有实例属于同一类Ck,则T为单结点树,并将类Ck作为该结点的类标记,返回T
② 若A为空,则T为单结点树,并将D中实例数最大的类Ck作为该结点的类标记,返回T
③ 否则,计算各特征A1,A2,...D的信息增益,选择信息增益最大的特征Am
④ 如果Am的信息增益小于阈值ϵ,则置T为单节点树,并将D中实例数最大的类Ck作为该结点的类标记,返回T
⑤ 否则,对Am的每一个可能值 ai,依Am=aiD分割为若干非空子集Di,将Di中实例数最大的类作为标记,构建子结点,由结点及其子结点构成树T,返回T
⑥ 对第i个子结点,以Di为训练集,以A-{Am}为特征集,递归调用步骤①~⑤,得到子树Ti,返回Ti

2. C4.5:

在使用信息增益 g(D,A) 进行特征选择时,取值多的属性更容易使数据更纯,其信息增益更大,训练得到的是一棵庞大且深度浅的数,这样是不合理的。因此用信息增益率对这一问题进行校正。C4.5算法正是以信息增益率作为其特征选择的目标函数的。
信息增益比为:

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

其中,g(D,A)为信息增益,HA(D)为训练数据集D关于特征A的值的熵,
HA(D)=i=1n|Di||D|log|Di||D|
n是特征A取值的个数。
C4.5算法和ID3算法类似,只是把特征选择目标函数换成信息增益率,其算法过程参照ID3。

3. CART:

CART算法是以基尼系数作为其特征选择的目标函数的。
在分类问题中,假设由K个类,样本点属于第k类的概率为pk,则概率分布的基尼系数定义为:

Gini(p)=k=1Kpk(1pk)=1k=1Kp2k=1k=1K(|Ck||D|)2
与ID3算法和C4.5算法有所不同的是,CART算法是要选择基尼系数最小的特征做为当前状态下的分类依据。

0 0