决策树 学习笔记

1、熵及信息增益

本节介绍:熵,条件熵,信息增益,信息增益比的概念。

1)熵:表示随机变量不确定性的程度。

假设随机变量X的概率P(X=xi)=pi,(i=1,2,…,n),则该随机变量的熵为:

若pi=0,则0log0=0。

熵只依赖X的分布,而与X的取值无关。故而X的熵H(X),写成H(p)更准确。

熵越大代表变量的不确定性就越大。

2)条件熵

         H(Y|X):随机变量Y的条件熵,表示在已知随机变量X的前提下随机变量Y的不确定性。

当熵和条件熵由数据估计(如极大似然估计)得到时,所对应的熵和条件熵分别为经验熵和经验条件熵。

3)信息增益(Information gain)

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

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

H(D):表示数据集D进行分类的不确定性;

H(D|A):表示特征A给定的条件下D的不确定性;

H(D)- H(D|A):表示特征A使得D的不确定性减少的程度。又称为互信息(mutual information)

决策树主要根据信息增益选择特征,每次选择信息增益最大的特征来划分训练集。

信息增益的计算:

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

b) 计算经验条件熵

C)计算信息增益

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

 

4)信息增益比(率)

         在使用信息增益划分训练集的特征时,偏向选择取值较多的特征。故而需要进行校正,于是有了信息增益比。

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

2、决策树算法,ID3,C4,.5

每次选取一个特征,根据该特征的取值将该节点分成几个子节点。树的叶子节点为类别,非叶子节点为划分训练集的特征。决策树的构建使用递归的方法依次进行。

1)ID3算法:使用信息增益选择特征

(相当于用极大似然法进行概率模型的选择?)

算法过程:

a)从根节点开始,对当前节点所有可能的特征计算信息增益,选择信息增益最大的特征作为节点的特征;由该特征的不同取值建立子节点;(每次选取过的特征在子节点中不能再次使用)

b)再对每个子节点递归调用以上方法构建决策树,直到所有特征的信息增益很小或没有特征选择为止;

c)最后得到一个决策树。

 

2)C4.5算法,使用信息增益比选择特征

算法过程与ID3类似,只是在选择特征时使用信息增益比。

3、过拟合及剪枝

         通过以上方法生成的决策树对训练集具有较好的分类效果,但是对于测试集效果不好,即出现了过拟合现象。原因在于过多的考虑模型对训练集的拟合程度,而构造出过于复杂的模型,导致在对未知数据的预测能力较差。

对于决策树的过拟合问题主要通过剪枝的方法来避免。对于剪枝主要有预剪枝和后剪枝。

预剪枝(PrePrune):在树的构造过程中,满足剪枝条件时停止此分支的构造。

后剪枝(PostPrune):先生成过拟合的决策树,然后再进行剪枝。

关于损失函数的构造,通过将模型的预测误差与树的复杂度进行结合,模型的预测误差通过叶节点的经验熵和该节点的样本数的乘积来衡量,树的复杂度通过叶节点的数量来衡量,于是得到损失函数如下:

其中,叶节点t上的经验熵为:

C(T):模型对训练数据的预测误差,即模型与训练数据的拟合程度。

|T|:树T的叶节点个数,表示模型的复杂度。

Nt:叶节点t的样本数。其中k类的样本点数为Ntk

用来协调模型复杂度和预测误差,越大则模型相应的就越简单,反之越小。

注:决策树的生成学习的是局部模型,而剪枝则是学习整体模型。(在决策树的生成过程中,每次只会分类当前节点中剩下的特征进行划分;而剪枝的过程中,每次需要考虑整棵树的损失函数的大小)

剪枝就是 确定时,选择损失函数最小的模型。具体剪枝过程如下:

a)计算每个节点的经验熵,包括叶子节点和内部节点

(因为在剪枝的过程中,最初需要所有叶子节点的经验熵来计算整棵树的损失函数,然后再假设剪掉两个叶节点留下父节点时的损失函数)

b)递归的从树的叶节点向上回缩;在叶节点回缩到其父节点之前和之后的整体树的损失函数分别为Cb和Ca。若Cb>=Ca,则进行剪枝,这样就能使得整棵树的损失函数较小。

c)重复步骤b)。直到不能继续(~直到根节点)

上述剪枝只考虑两棵树之间的损失函数,计算可以在局部进行,可以由动态规划算法来实现。

4、总结

         以上讨论的决策树是分类决策树,没有考虑回归问题。其实对于决策树最核心的问题就是特征选择,而不同的特征选择方法,对应于不同的决策树算法。特征的选择主要使用信息增益和信息增益比,其分别对于ID3和C4.5算法。

         在生成决策树之后,由于生成的树的规模过大可能造成过拟合,于是需要剪枝;而剪枝的评判标准无非是损失函数或代价函数。只是损失函数的选择不同,可能导致不同的剪枝效果,本文选择使用预测误差和模型复杂度来衡量损失函数。预测误差通过叶节点的样本数和该节点的经验熵的乘积来衡量,而模型复杂度直接使用叶节点的数目来衡量。

  

注:由于本人水平有限,若文中存在错误请指出!

 

参考文献:

[1] 李航,统计学习方法。

posted @ 2015-06-07 19:18  liuwu265  阅读(1132)  评论(0编辑  收藏  举报