决策树
@[2016/08/29]
决策树(decision tree)是一种基本的分类与回归方法。决策树学习通常包括3个步骤:特征选择、决策树的生成和决策树的修剪。
1. 决策树模型与学习
分类决策树主要由结点(node)和有向边(directed edge)组成。结点分为:内部结点(internal node)和叶结点(leaf node)。内部结点表示一个特征或属性,叶结点表示一个类。
决策树可看成是一个if-then规则的集合,它具有一个重要的性质:互斥且完备。另外,决策树还表示给定特征条件下的类的条件概率分布。
决策树的本质是从训练数据集中归纳出一组分类规则。与训练数据集不相矛盾的决策树可能有多个,也可能一个也没有。我们需要的是一个与训练数据矛盾较小的决策树,同时具有很好的泛化能力。从另一个角度看,决策树学习是有训练数据集估计条件概率模型。基于特征空间划分的类的条件概率模型有无穷多个。我们选择的条件概率模型应该不仅对训练数据集有很好的拟合,而且对未知数据有很好的预测。
决策树的学习算法通常是以一个递归地选择最有特征,并更具该特征对训练数据进行分割,使得对各个子数据集有一个最好的分类过程。这一过程对应着对特征空间的划分,也对应着决策树的构建。
2. 特征选择
特征选择在于选择对于训练数据集具有分类能力的特征,通常有:信息增益(information gain)和信息增益比(information gain ratio)。
2.1 信息增益
熵(entropy)表示随机变量不确定性的度量。设
X
是一个取有限个值的离散随机变量,其概率分布为
随机变量的熵只与 X 的分布有关,因此随机变量的熵可定义为
上式中的对数以2为底或自然对数 e 为底,熵的单位分别称作比特(bit)或纳特(nat)。
熵越大,随机变量的不确定性越大。从定义看验证
设有随机变量 (X,Y) ,其联合概率分布为
条件熵 H(Y|X) 表示在已知随机变量 X 的条件下随机变量
这里, pi=P(X=xi), i=1,2,...,n 。
信息增益表示得知特征 X 的信息使得
信息增益:特征
A
对训练数据集
一般地,熵 H(Y) 与条件熵 H(Y | X) 之差称为 互信息(mutual information)。决策树学习中的信息增益等价于训练数据集中类与特征的互信息。
信息增益表示由于特征 A 使得对数据集
信息增益计算形式:设训练数据集为
D
,
为
Di
的样本个数,
∑ni=1|Di|=|D|
。记子集
Di
中属于类
Ck
的样本的集合为
Dik
,即
Dik=Di⋂Ck
,
|Dik|
为
Dik
的样本个数。于是,可按如下步骤计算特征
A
对训练数据集
(1) 计算数据集
D
的经验熵
(2)计算特征 A 对数据集
(3)计算信息增益
2.2 信息增益比
对于取值多的属性,尤其是一些连续型数值,比如两条地理数据的距离属性,这个单独的属性就可以划分所有的样本,使得所有分支下的样本集合都是“纯”的(最极端的情况就是每个叶结点只有一个样本),对于
H(D | A)
在极限情况下
A
将每一个样本都分到一个结点中去的时候,
信息增益比:特征
其中, HA(D)=−∑ni=1|Di||D|log2|Di||D| , n 是特征
3. 决策树生成
本节介绍两种典型的决策树生成算法ID3和C4.5。
3.1 ID3算法
ID3算法的核心是在决策树各个结点上应用信息增益准则选择特征,递归地构建决策树。
算法1 (ID3算法)
输入:训练数据集
D
,特征
输出:决策树
T
。
(1)若
(2)若
(3)否则,按计算
(4)如果
Ag
的信息增益小于阈值
ξ
,则置
T
为单结点树,并将
(5)否则,对
(6)对第
i
个子结点,以
3.2 C4.5算法
与ID3算法的唯一区别就在于特征选择方式不同,C4.5使用信息增益比作为特征选择方式。
算法2 (C4.5算法)
输入:训练数据集
D
,特征
输出:决策树
T
。
(1)若
(2)若
(3)否则,按计算
(4)如果
Ag
的信息增益比小于阈值
ξ
,则置
T
为单结点树,并将
(5)否则,对
(6)对第
i
个子结点,以
4. CART
CART是在给定输入随机变量 X 条件下输出随机变量
Y 的条件概率分布的学习方法。CART假设决策树是二叉树,这样的决策树等价于递归地二分每个特征,将输入空间即特征空间划分为有限个单元,并在这些单元上确定预测的概率分布,也就是输入给定的条件下输出的条件概率分布。
4.1 分类树的生成
基尼指数:分类问题中,假设有
K
个类,样本点属于
对于给定的样本集合 D ,其基尼指数定义为
这里, Ck 是 D 中属于第
如果样本集合
则在特征 A 的条件下,集合
基尼指数 Gini(D) 表示集合 D 的不确定性。基尼指数
算法3 (CART生成算法)
输入:训练数据集
输出:CART决策树
根据训练数据集,从根节点开始,递归地对每个结点进行以下操作,构建二叉决策树:
(1)设结点的训练数据集为
D
,计算现有特征对该数据集的基尼指数。对每一个特征
(2)在所有可能的特征
A
以及它们所有可能的切分点
(3)对两个子结点递归地调用(1),(2),直至满足停止条件。
(4)生成CART决策树。
算法停止条件:停止条件的选取有多种方式
(1)结点中的样本个数小于预定的阈值
(2)样本集的基尼指数小于预定阈值(样本基本属于同一类)
(3)没有更多特征
(4)更一般的情况我们计算
χ2(卡方)值来判断分类条件和类别的相关程度,当
χ2很小时说明分类条件和类别是独立的,即按照该分类条件进行分类是没有道理的,此时节点停止分裂。