Decision Tree
Table of Contents
1. 决策树简介
决策树(Decision Tree)模型呈树形结构,在分类问题中,表示基于特征对实例进行分类的过程。它可以认为是 if-then 规则的集合,也可以认为是定义在特征空间与类空间上的条件概率分布。 决策树的主要优点是模型具有可读性(人们容易理解决策的依据),分类速度快。
决策树学习通常包括 3 个步骤:特征选择、决策树的生成和决策树的修剪。 下面是一些著名的决策树学习算法:
(1) 由 Ross Quinlan 在 1986 年提出的 ID3 算法;
(2) 由 Ross Quinlan 在 1993 年提出的 C4.5 算法;
(3) 由 Leo Breiman 等人在 1984 年提出的 Classification and Regression Trees(CART)算法。
参考:
本文主要摘自《统计学习方法,李航著》第 5 章,决策树
1.1. 决策树模型
分类决策树模型是一种描述对实例进行分类的树形结构。决策树由结点(node)和有向边(directed edge)组成。结点有两种类型:内部结点(internal node)和叶结点(leaf node)。内部结点表示一个特征或属性,叶结点表示一个类。
用决策树分类,从根结点开始,对实例的某一特征进行测试,根据测试结果,将实例分配到其子结点;这时,每一个子结点对应着该特征的一个取值。如此递归地对实例进行测试并分配,直至达到叶结点。最后将实例分到叶结点的类中。
图 1 是一个决策树的示意图。图中圆和方框分别表示内部结点和叶结点。
Figure 1: 决策树模型(圆表示特征,方框表示类别)
1.2. 决策树学习
决策树学习,假设给定训练数据集
其中,
决策树学习本质上是从训练数据集中归纳出一组分类规则。与训练数据集不相矛盾的决策树(即能对训练数据进行正确分类的决策树)可能有多个,也可能一个也没有。我们需要的是一个与训练数据矛盾较小的决策树,同时具有很好的泛化能力。
2. 特征选择
特征选择在于选取对训练数据具有分类能力的特征。这样可以提高决策树学习的效率。如果利用一个特征进行分类的结果与随机分类的结果没有很大差别,则称这个特征是没有分类能力的。经验上扔掉这样的特征对决策树学习的精度影响不大。 通常特征选择的准则是“信息增益(Information Gain)”或“信息增益比”。
首先,通过一个例子来说明特征选择问题。
表 1 是一个由 15 个样本组成的贷款申请训练数据。数据包括贷款申请人的 4 个特征:年龄(有 3 个可能值),有工作(有 2 个可能值),有自己的房子(有 2 个可能值),信贷情况(有 3 个可能值)。表的最后一列是类别,是否同意贷款,取 2 个值:是,否。
ID | 年龄 | 有工作 | 有自己的房子 | 信贷情况 | 类别 |
---|---|---|---|---|---|
1 | 青年 | 否 | 否 | 一般 | 否 |
2 | 青年 | 否 | 否 | 好 | 否 |
3 | 青年 | 是 | 否 | 好 | 是 |
4 | 青年 | 是 | 是 | 一般 | 是 |
5 | 青年 | 否 | 否 | 一般 | 否 |
6 | 中年 | 否 | 否 | 一般 | 否 |
7 | 中年 | 否 | 否 | 好 | 否 |
8 | 中年 | 是 | 是 | 好 | 是 |
9 | 中年 | 否 | 是 | 非常好 | 是 |
10 | 中年 | 否 | 是 | 非常好 | 是 |
11 | 老年 | 否 | 是 | 非常好 | 是 |
12 | 老年 | 否 | 是 | 好 | 是 |
13 | 老年 | 是 | 否 | 好 | 是 |
14 | 老年 | 是 | 否 | 非常好 | 是 |
15 | 老年 | 否 | 否 | 一般 | 否 |
希望通过所给的训练数据学习一个贷款申请的决策树,用以对未来的贷款申请进行分类,即当新的客户提出贷款申请时,根据申请人的特征利用决策树决定是否批准贷款申请。
图 2 表示两个可能的决策树的一部分,分别由两个不同特征的根结点构成。选择哪个特征作为根结点呢?直观上,如果一个特征具有更好的分类能力,那么就应该先选择这个特征。 信息增益能够很好地表示这一直观的准则。
Figure 2: 两个可能的决策树(仅部分),哪个更好呢?
2.1. 熵(Entropy)
在介绍信息增益前,我们需要先了解一下熵和条件熵的概念。
在信息论与概率统计中, 熵(entropy)是表示随机变量不确定性的度量。 设
在上式中,若
熵越大,随机变量的不确定性就越大。 我们通过一个简单的例子来说明这个结论。
当随机变量只取两个值(例如 1,0),即
熵为:
熵
Figure 3: 分布为伯努利分布时熵与概率
当
2.2. 条件熵(Conditional Entropy)
设有二维随机变量
条件熵
其中,
当熵和条件熵中的概率由数据估计(特别是极大似然估计)得到的,所对应的熵与条件熵分别称为“经验熵(empirical entropy)”和“经验条件熵(empirical conditional entropy)”。
2.3. 信息增益
我们可以用信息增益(information gain)表示得知特征
特征
在决策树学习中,对于给定训练数据集
2.3.1. 信息增益计算实例
求表 1 所给的训练数据集
首先,计算经验熵
然后,分别计算各个特征对数据集
上面式子中,
类似地,可以计算其它三个特征
最后,比较各特征的信息增益值可知,特征
2.4. 信息增益比
用信息增益作为划分训练数据集的特征,会偏向于选择取值较多的特征。
为什么呢?假设表 1 样本中“年龄”特征没有分为三类,而是直接给出的具体数字(即多少岁),且假设 15 个样本数据中的年龄都不相同。显然,这时“年龄”特征的取值(15 种可能情况)要远多于其它 3 个特征的取值。我们来计算特征年龄对数据集的信息增益
信息增益比是特征选择的另一准则。 信息增益比(Information Gain Ratio)通过引入一个被称作分裂信息(Split Information)的项来惩罚取值较多的特征。
特征
其中,
3. 决策树的生成
ID3 算法和 C4.5 算法是两种经典的决策树生成算法。
3.1. ID3 算法及实例
ID3算法 的核心是应用信息增益来选择特征,递归地构建决策树。 ID3 算法的具体方法是:从根结点开始,对结点计算所有可能的特征的信息增益,选取信息增益最大的特征作为结点特征,根据此特征对数据进行分类,以此建立不同子结点。再对各个子结点递归地使用同样方法构建决策树,直至所有特征的增益均很小(小于阈值)或没有特征可选择时为止,最终完成决策树的构建。
ID3 算法正式描述如下:
输入:训练集
输出:决策树
(1) 若
(2) 若
(3) 否则,计算
(4) 如果
(5) 否则,对
(6) 对第
下面介绍如何使用 ID3 算法对表 1 所给的训练数据集建立决策树。
在 2.3.1 中,我们已经计算出特征
对于
选择信息增益最大的特征
Figure 4: 使用 ID3 算法生成的决策树
ID3 算法只有有树的生成(没有剪枝),所以该算法生成的树容易产生过拟合。
4. 决策树的剪枝
决策树生成算法递归地产生决策树,直到不能继续下去为止。这样产生的树往往对训练数据的分类很准确,但对未知测试数据却不那么准确,即出现过拟合现象。解决这个问题的办法是考虑决策树的复杂度,对已生成的决策树进行简化。
在决策树学习中将已生成的树进行简化的过程称为剪枝(pruning)。具体地,剪枝从已生成的树上裁掉一些子树或叶结点,并将其父结点作为新的叶结点,从而简化分类树模型。
本节介绍一种简单的决策树的剪枝算法。
决策树的剪枝往往通过极小化决策树整体的损失函数(loss function)或代价函数(cost function)来实现。 设树
如果把上式中的第一项记为
这时有:
前一部分
下面介绍一个极小化决策树损失函数
输入:生成算法产生的整个树,参数
输出:修剪后的子树
(1) 计算每个结点的经验熵;
(2) 递归地从树的叶结点向上往回缩,如果回缩后的树的损失函数的值更小,则进行剪枝。设一组叶结点回缩到其父结点之前与之后的整体树分别为
(3) 返回上一步,直到不能继续为止,即可得到损失函数最小的子树。
Figure 5: 决策树的剪枝
下面是其它一些剪枝技术:
Reduced-Error Pruning(REP,错误率降低剪枝)
Pesimistic-Error Pruning(PEP,悲观错误剪枝)
Cost-Complexity Pruning(CCP,代价复杂度剪枝)
5. CART 算法
分类与回归树(classification and regression tree, CART)模型由 Breiman 等人在 1984 年提出,是应用广泛的决策树学习方法。CART 同样由特征选择、数的生成和剪枝组成,即可用于分类(预测类别)也可用于回归(预测数值,如温度)。
CART 算法总是使用二叉决策树(ID3 决策树,CHAID决策树 等没有限制使用二叉树),内部结点特征的取值为“是”和“否”,左分支是取值为“是”的分支,右分支是取值为“否”的分支。这样的决策树等价于递归地二分每个特征(如果特征有多个选项,也要把它二分,比如特征有 3 个选项“青年/中年/老年”,则我们可找到 3 个“二值切分点”,把它二分为“青年/非青年”或者“中年/非中年”或者“老年/非老年”)。
CART 算法由以下两步组成:
(1) 决策树生成:基于训练数据生成决策树,生成的决策树要尽量大;
(2) 决策树剪枝:用验证数据集对已生成的树进行剪枝并选择最优子树,这时用损失函数最小作为剪枝的标准。
5.1. CART 生成
决策树的生成就是递归地构建二叉决策树的过程。CART 算法即可用于“分类”也可用于“回归”。对于回归树,CART 算法采用“平方误差最小化”准则,生成的树也称为“最小二乘回归树”,这里不介绍,可参考:《统计学习方法,李航著》5.5.1 节。
我们重点介绍 CART 算法生成分类树的过程。 CART 分类树用“基尼指数”选择最优特征,同时决定该特征的最优二值切分点。
5.1.1. 基尼指数(Gini Index)
分类问题中,假设有
对于给定的样本集合
上式中,
如果样本集合
则在特征
基尼指数
对于二类分类(伯努利分布)问题,记样本点属于第 1 个类的概率是
Figure 6: 二类分类中基尼指数和熵之半的关系
5.1.2. CART 决策树生成算法及实例
CART 决策树生成算法如下:
输入:训练数据集
输出:CART 决策树。
根据训练数据集,从根结点开始,递归地对每个结点进行以下操作,构建二叉决策树:
(1) 设结点的训练数据集为
(2) 在所有可能的特征
(3) 对两个子结点递归地调用(1),(2),直至满足停止条件。
(4) 生成 CART 决策树。
算法停止计算的条件是结点中的样本个数小于预定阈值,或样本集的基尼指数小于预定阈值(样本基本属于同一类),或者没有更多特征。
实例:根据表 2 (它和表 1 相同,为查看方便复制在此)所给的训练数据集,应用 CART 算法生成决策树。
ID | 年龄 | 有工作 | 有自己的房子 | 信贷情况 | 类别 |
---|---|---|---|---|---|
1 | 青年 | 否 | 否 | 一般 | 否 |
2 | 青年 | 否 | 否 | 好 | 否 |
3 | 青年 | 是 | 否 | 好 | 是 |
4 | 青年 | 是 | 是 | 一般 | 是 |
5 | 青年 | 否 | 否 | 一般 | 否 |
6 | 中年 | 否 | 否 | 一般 | 否 |
7 | 中年 | 否 | 否 | 好 | 否 |
8 | 中年 | 是 | 是 | 好 | 是 |
9 | 中年 | 否 | 是 | 非常好 | 是 |
10 | 中年 | 否 | 是 | 非常好 | 是 |
11 | 老年 | 否 | 是 | 非常好 | 是 |
12 | 老年 | 否 | 是 | 好 | 是 |
13 | 老年 | 是 | 否 | 好 | 是 |
14 | 老年 | 是 | 否 | 非常好 | 是 |
15 | 老年 | 否 | 否 | 一般 | 否 |
解:首先计算各特征的基尼指数,选择最优特征以及最优切分点。分别以
求特征
由于
类似地,求特征
由于
求特征
经过上面一轮的计算,我们知道在
对于本问题,按照 CART 算法所生成的决策树与按照 ID3 算法所生成的决策树完全一致。
5.2. CART 剪枝
CART 剪枝算法可参考:《统计学习方法,李航著》5.5.2 节,这里不介绍。
6. 决策树的优缺点
决策树优点:
(1) 决策树算法中学习简单的决策规则建立决策树模型的过程非常容易理解,决策树模型可以可视化,非常直观。
(2) 应用范围广,可用于分类和回归,而且非常容易做多类别的分类。
决策树缺点:
(1) 很容易在训练数据中生成复杂的树结构,造成过拟合。剪枝可以缓解过拟合的负作用,常用方法是限制树的高度、叶子结点中的最少样本数量。
(2) 学习一棵最优的决策树被认为是NP-Complete问题。实际中的决策树是基于启发式的贪心算法建立的,这种算法不能保证建立全局最优的决策树。