决策树

来源:互联网 发布:数据资产管理2017 编辑:程序博客网 时间:2024/06/15 09:32

决策树是一种基本的分类和回归方法,本文主要讨论用于分类的决策树,在分类问题中,表示基于特征对实例进行分类的过程。决策树可以认为是if-then规则的集合,也可以认为是定义在特征空间与类空间上的条件概率分布,学习时,利用训练数据,根据损失函数最小化原则建立决策树,决策树学习主要包括3个步骤:特征选择,决策树的生成和决策树的修剪。

1.特征选择

特征选择在于选取对训练数据具有分类能力的特征,这样可以提高决策树学习的效率。如果利用一个特征进行分类的结果与随机分类的结果没有很大的差别,那么这个特征是没有分类能力的,经验上这个特征是可以舍弃的,所以要对特征的分类能力进行测量以表明其分类能力,通常特征选择的准则是信息增益或信息增益比。

1.1信息增益

在此之前给出熵和条件熵的定义:
设X是一个取得有限值的离散随机变量,其概率分布P(X=xi)=pi,i=1,2,...n
则随机变量X的熵定义为

H(X)=i=1npilogpi
pi=0,则定义0log0=0.熵只依赖于X的分布,而与X的取值无关,熵越大,随机变量的不确定性就越大。

设有随机变量(X,Y),其联合概率分布为
P(X=xi,Y=yi)=pij,i=1,2,...,n;j=1,2,...m条件熵H(X,Y)表示在随机变量X的条件下随机变量Y的不确定性,随机变量X给定的条件下随机变量Y的条件熵H(X,Y),定义为X给定条件下Y的条件概率分布的熵对X的数学期望

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

信息增益:特征A对训练数据集D的信息增益g(D,A),定义为集合D的经验熵H(D)与特征A在给定条件下D的经验条件熵之差,表示得知特征X的信息而使类Y的信息的不确定性减少的程度,即

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

求以下各特征的信息增益:

grade bumpiness speed limit speed(label) steep bumpy yes slow steep smooth yes slow flat bumpy no fast steep smooth no fast

由于pslow=pfast=0.5,所以H(speed)=-0.5*log(0.5)-0.5*log(0.5)=1
然后计算H(speed|speed limit)=pyesH(speed|speed limit=yes)+pnoH(speed|speed limit=no)=1/2(0+0)+1/2(0+0)=0
so,g(D,A)=H(speed)-H(speed|speed limit)=1-0=1
所以特征speed limit可以将数据集完全分开,决策树完成。

1.2 信息增益比

以信息增益作为划分训练数据集的特征,存在偏向于选取值较多的特征,使用信息增益比对此校正。

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

2.决策树的生成

2.1 ID3算法

ID3算法的核心是在决策树各个节点上应用信息增益准则选择特征,递归地构建决策树。具体为从根节点开始,对结点计算所有可能的特征的信息增益,选择信息增益最大的特征作为结点的特征,由该特征的不同取值构建子节点;再对子节点递归的调用以上方法,构建决策树。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,依Ag=ai将D分割为若干非空子集Di,将Di中实例最大的类作为标记,构建子节点,由节点及其子节点构成树T,返回T;
6. 对第i个子节点,以Di为训练集,以A-{Ag}为特征集,递归的调用步(1)~(5),得到子树Ti,返回Ti.

2.2 C4.5的生成算法

c4.5算法对ID3算法进行了改进,在c4.5的生成过程中,用信息增益比来代替信息增益,其余都是一样。
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,依Ag=ai将D分割为若干非空子集Di,将Di中实例最大的类作为标记,构建子节点,由节点及其子节点构成树T,返回T;
6. 对第i个子节点,以Di为训练集,以A-{Ag}为特征集,递归的调用步(1)~(5),得到子树Ti,返回Ti.

3.决策树的剪枝

决策树生成算法递归的产生决策树,这样产生的决策树往往对分类数据很准确,但对未知的测试数据的分类确没有那么准确,即出现过拟合现象。过拟合的原因在于学习时过多的考虑如何提高对训练数据的正确分类,从而构建出过于复杂的决策树,解决这个问题的办法是考虑决策树的复杂度,对已生成的决策树进行简化。
在决策树学习中将已生成的树进行简化的过程叫做剪枝,具体的,剪枝从已生成的树上裁掉一些子树或叶节点,并将其根节点或父节点作为新的叶节点,从而简化分类树模型。

决策树的剪枝往往通过极小化决策树整体损失函数或代价函数来实现。设树T的叶节点个数为|T|,t是树T的叶节点,该叶节点有 Nt 个样本点,其中k类样本点有Ntk个,Ht(T)为叶节点t上的经验熵,则决策树学习的损失函数可以定义为

Cα(T)=t=1|T|NtHt(T)+α|T|

其中经验熵为
Ht(T)=kNtkNtlogNtkNt

剪枝,就是当α确定时,选择损失函数最小的模型,即损失函数最小的子树,可以看出,决策树只考虑通过提高信息增益(或信息增益比)对训练数据进行拟合。而决策树剪枝则通过优化损失函数还考虑减小模型复杂度,是考虑整体的学习模型。
树的剪枝算法
输入:生成算法形成的整个树T,参数α
输出:修剪后的子树Tα

  1. 计算每个节点的经验熵
  2. 递归的从树的叶节点向上回缩,设一组叶节点回缩到其父节点之前与之后的整体书分别为TBTA,其对应的损失函数分别为Cα(TB)Cα(TA),如果
    $Cα(TA)$<=$Cα(TB)
    则进行剪枝,即父节点变成新的叶节点
  3. 返回(2),直到不能继续为止,得到损失函数最小的子树Tα
0 0
原创粉丝点击