《统计学习方法》笔记--第五章:决策树

简介:

决策树(decision tree) 是一种基本的分类与回归方法。

    其主要优点是模型具有可读性, 分类速度快。 学习时, 利用训练数据, 根据损失函数最小化的原则建立决策树模型。 预测时, 对新的数据, 利用决策树模型进行分类。 决策树学习通常包括3个步骤: 特征选择、决策树的生成和决策树的修剪。

一、决策树模型与学习
    分类决策树模型是一种描述对实例进行分类的树形结构。 决策树由结点(node) 和有向边(directed edge) 组成。 结点有两种类型: 内部结点(internal node) 和叶结点(leaf node) 。 内部结点表示一个特征或属性, 叶结点表示一个类。

    决策树还表示给定特征条件下类的条件概率分布。
    决策树的一条路径对应于划分中的一个单元。 决策树所表示的条件概率分布由各个单元给定条件下类的条件概率分布组成。
假设X为表示特征的随机变量, Y为表示类的随机变量, 那么这个条件概率分布可以表示为P(Y|X)。 X取值于给定划分下单元的集合, Y取值于类的集合。 各叶结点(单元) 上的条件概率往往偏向某一个类, 即属于某一类的概率较大。 决策树分类

时将该结点的实例强行分到条件概率大的那一类去。

    决策树学习常用的算法有ID3、 C4.5与CART。

二、特征选择

    特征选择在于选取对训练数据具有分类能力的特征。 这样可以提高决策树学习的效率。 如果利用一个特征进行分类的结果与随机分类的结果没有很大差别, 则称这个特征是没有分类能力的。 

    直观上, 如果一个特征具有更好的分类能力, 或者说, 按照这一特征将训练数据集分割成子集, 使得各个子集在当前条件下有最好的分类, 那么就更应该选择这个特征。 信息增益(information gain) 就能够很好地表示这一直观的准则。

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

则随机变量X的熵定义为

通常log是2为底或以e为底(自然对数)

熵越大, 随机变量的不确定性就越大。
设有随机变量(X,Y), 其联合概率分布为

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

entropy) H(Y|X), 定义为X给定条件下Y的条件概率分布的熵对X的数学期望:


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

        决策树学习应用信息增益准则选择特征。 给定训练数据集D和特征A, 经验熵H(D)表示对数据集D进行分类的不确定性。 而经验条件熵H(D|A)表示在特征A给定的条件下对数据集D进行分类的不确定性。 那么它们的差, 即信息增益, 就表示由于特征A而使得对数据集D的分类的不确定性减少的程度。 信息增益大的特征具有更强的分类能力。
        根据信息增益准则的特征选择方法是: 对训练数据集(或子集)D, 计算其每个特征的信息增益, 并比较它们的大小, 选择信息增益最大的特征。

算法:(信息增益)

    设训练数据集为D, |D|表示其样本容量, 即样本个数。 设有K个类Ck, k=1,2,…,K, |Ck|为属于类Ck的样本个数 。 设特征A有n个不同的取值{a1, a2,…,an}, 根据特征A的取值将D划分为n个子集D1,D2,…,Dn, |Di|为Di的样本个数,记子集Di中属于类Ck的样本的集合为Dik, 即Dik=Di⋂Ck, |Dik|为Dik的样本个数。 于是信息增益的算法如下:

算法5.1(信息增益的算法)
输入: 训练数据集
D和特征A
输出: 特征
A对训练数据集D的信息增益g(D,A)
1) 计算数据集D的经验熵H(D)

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

(3) 计算信息增益


例5.2 对表5.1所给的训练数据集D, 根据信息增益准则选择最优特征。


解 首先计算经验熵H(D)

然后计算各特征对数据集D的信息增益。 分别以A1, A2, A3, A4表示年龄、 有工作、 有自己的房子和信贷情况4个特征, 则



定义5.3(信息增益比) 特征A对训练数据集D的信息增益比gR(D,A)定义为其信息增益g(D,A)与训练数据集D的经验熵H(D)之比:

三、ID3算法

ID3算法的核心是在决策树各个结点上应用信息增益准则选择特征, 递归地构建决策树。 具体方法是: 从根结点(root node) 开始,对结点计算所有可能的特征的信息增益, 选择信息增益最大的特征作为结点的特征, 由该特征的不同取值建立子结点; 再对子结点递归地调用以上方法, 构建决策树; 直到所有特征的信息增益均很小或没有特征可以选择为止。 最后得到一个决策树。
算法5.2ID3算法)
输入: 训练数据集
D, 特征集A, 阈值 ;
输出: 决策树
T
1) 若D中所有实例属于同一类Ck, 则T为单结点树, 并将类Ck作为该结点的类标记, 返回T
2) 若AØ, 则T为单结点树, 并将D中实例数最大的类Ck作为该结点的类标记, 返回T
3) 否则, 按算法5.1计算A中各特征对D的信息增益, 选择信息增益最大的特征Ag
4) 如果Ag的信息增益小于阈值 , 则置T为单结点树, 并将D中实例数最大的类Ck作为该结点的类标记, 返回T
5) 否则, 对Ag的每一可能值ai, 依AgaiD分割为若干非空子集Di, 将Di中实例数最大的类作为标记, 构建子结点, 由结点及其子结点构成树T, 返回T
6) 对第i个子结点, 以Di为训练集, 以A-{Ag}为特征集, 递归地调用步(1) ~步(5) , 得到子树Ti, 返回Ti
5.3 对表5.1的训练数据集, 利用ID3算法建立决策树。
解 利用例
5.2的结果, 由于特征A3(有自己的房子) 的信息增益值最大, 所以选择特征A3作为根结点的特征。 它将训练数据集D划分为两个子集D1A3取值为) 和D2A3取值为) 。 由于D1只有同一类的样本点, 所以它成为一个叶结点, 结点的类标记为。对D2则需从特征A1(年龄) , A2(有工作) 和A4(信贷情况) 中选择新的特征。 计算各个特征的信息增益:

选择信息增益最大的特征A2(有工作) 作为结点的特征。 由于A2有两个可能取值, 从这一结点引出两个子结点: 一个对应(有工作)的子结点, 包含3个样本, 它们属于同一类, 所以这是一个叶结点,类标记为; 另一个是对应(无工作) 的子结点, 包含6个样本, 它们也属于同一类, 所以这也是一个叶结点, 类标记为

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

五、决策树的枝剪

        决策树生成算法递归地产生决策树, 直到不能继续下去为止。 但这种操作容易造成过拟合现象。

        过拟合的原因在于学习时过多地考虑如何提高对训练数据的正确分类, 从而构建出过于复杂的决策树。 解决这个问题的办法是考虑决策树的复杂度, 对已生成的决策树进行简化 。

    在决策树学习中将已生成的树进行简化的过程称为剪枝(pruning) 。 具体地, 剪枝从已生成的树上裁掉一些子树或叶结点, 并将其根结点或父结点作为新的叶结点, 从而简化分类树模型。







猜你喜欢

转载自blog.csdn.net/u013841458/article/details/80957301