决策树(decision tree)是一种基本的分类与回归方法。
决策树模型呈树形结构,在分类问题中,表示基于特征对实例进行分类的过程。
它可以认为是if-then规则的集合,也可以认为是定义在特征空间与类空间上的条件概率分布。其
主要优点是模型具有可读性,分类速度快。学习时,利用训练数据,根据损失函数最小化的原则建立决策树模型。
预测时,对新的数据,利用决策树模型进行分类。
决策树学习通常包括3个步骤:特征选择、决策树的生成和决策树的修剪。
这些决策树学习的思想主要来源于由Quinlan在1986年提出的ID3算法和1993年提出的C4.5算法,以及由Breiman等人在1984年提出的CART算法。
?
?
决策树模型
决策树与if-then规则
可以将决策树看成一个if-then规则的集合。
由决策树的根结点到叶结点的每一条路径构建一条规则;
路径上内部结点的特征对应着规则的条件,而叶结点的类对应着规则的结论。
决策树的路径或其对应的if-then规则集合具有性质:互斥并且完备。
这就是说,每一个实例都被一条路径或一条规则所覆盖,而且只被一条路径或一条规则所覆盖。
这里所谓覆盖是指实例的特征与路径上的特征一致或实例满足规则的条件。
?
决策树学习
给定数据集:
输入实例Xi:
标记类yi
决策树学习本质上是从训练数据集中归纳出一组分类规则。
与训练数据集不相矛盾的决策树(即能对训练数据进行正确分类的决策树)可能有多个,也可能一个也没有。
我们需要的是一个与训练数据矛盾较小的决策树,同时具有很好的泛化能力。
从另一个角度看,决策树学习是由训练数据集估计条件概率模型。
基于特征空间划分的类的条件概率模型有无穷多个。
选择的条件概率模型应该不仅对训练数据有很好的拟合,而且对未知数据有很好的预测。
?
决策树学习用损失函数表示目标。
决策树学习的损失函数通常是正则化的极大似然函数。
决策树学习的策略是损失函数最小化。
当损失函数确定以后,学习问题就变为在损失函数意义下选择最优决策树的问题。
因为从所有可能的决策树中选取最优决策树是NP完全问题,
所以现实中决策树学习算法通常采用启发式方法,近似求解这一最优化问题。
决策树学习的算法通常是一个递归地选择最优特征,并根据该特征对训练数据进行分割,
使得对各个子数据集有一个最好的分类的过程。这一过程对应着对特征空间的划分,也对应着决策树的构建。
开始,构建根结点,将所有训练数据都放在根结点。
选择一个最优特征,按照这一特征将训练数据集分割成子集,使得各个子集有一个在当前条件下最好的分类。
若子集已能够被基本正确分类,那么构建叶结点,并将这些子集分到所对应的叶结点中去;
若子集不能被基本正确分类,那么就对这些子集选择新的最优特征,继续对其进行分割,构建相应的结点。
如此递归地进行下去,直至所有训练数据子集被基本正确分类,或者没有合适的特征为止。
最后每个子集都被分到叶结点上,即都有了明确的类。这就生成了一棵决策树。
以上方法生成的决策树可能对训练数据有很好的分类能力,但对未知的测试数据却未必有很好的分类能力,即可能发生过拟合现象。
?
我们需要对已生成的树自下而上进行剪枝,将树变得更简单,从而使它具有更好的泛化能力。
具体地,就是去掉过于细分的叶结点,使其回退到父结点,甚至更高的结点,然后将父结点或更高的结点改为新的叶结点。
如果特征数量很多,也可以在决策树学习开始的时候,对特征进行选择,只留下对训练数据有足够分类能力的特征。
决策树学习算法包含特征选择、决策树的生成与决策树的剪枝过程。
由于决策树表示一个条件概率分布,所以深浅不同的决策树对应着不同复杂度的概率模型。
决策树的生成对应于模型的局部选择,决策树的剪枝对应于模型的全局选择。
决策树的生成只考虑局部最优,相对地,决策树的剪枝则考虑全局最优。
决策树学习常用的算法有ID3、C4.5与CART
?
特征选择问题
特征选择在于选取对训练数据具有分类能力的特征。这样可以提高决策树学习的效率。
如果利用一个特征进行分类的结果与随机分类的结果没有很大差别,则称这个特征是没有分类能力的。
经验上扔掉这样的特征对决策树学习的精度影响不大。通常特征选择的准则是信息增益或信息增益比。
直观上,如果一个特征具有更好的分类能力,按照这一特征将训练数据集分割成子集,
使得各个子集在当前条件下有最好的分类,那么就更应该选择这个特征。
信息增益(information gain)就能够很好地表示这一直观的准则。
?
?
信息增益
在信息论与概率统计中,熵(entropy)是表示随机变量不确定性的度量。
设X是一个取有限个值的离散随机变量,其概率分布为:
则随机变量X的熵定义为:
熵越大,随机变量的不确定性就越大。从定义可验证
若随机变量取0,1,熵为:
这时,熵H(p)随概率p变化的曲线如下图所示(单位为比特)。
当p=0或p=1时H(p)=0,随机变量完全没有不确定性。
当p=0.5时,H(p)=1,熵取值最大,随机变量不确定性最大。
?
设有随机变量(X,Y),其联合概率分布为
条件熵H(Y|X)表示在已知随机变量X的条件下随机变量Y的不确定性。
pi=P(X=xi),i=1,2,…,n。
当熵和条件熵中的概率由数据估计(特别是极大似然估计)得到时,
所对应的熵与条件熵分别称为经验熵(empirical entropy)
经验条件熵(empirical conditional entropy)
信息增益(information gain)表示得知特征X的信息而使得类Y的信息的不确定性减少的程度。
?
信息增益
特征A对训练数据集D的信息增益g(D,A),
定义为集合D的经验熵H(D)与特征A给定条件下D的经验条件熵H(D|A)之差
熵H(Y)与条件熵H(Y|X)之差称为互信息(mutual information)
决策树学习中的信息增益等价于训练数据集中类与特征的互信息
决策树学习应用信息增益准则选择特征。
给定训练数据集D和特征A,经验熵H(D)表示对数据集D进行分类的不确定性。
而经验条件熵H(D|A)表示在特征A给定的条件下对数据集D进行分类的不确定性。
那么它们的差,即信息增益,就表示由于特征A而使得对数据集D的分类的不确定性减少的程度。
显然,对于数据集D而言,信息增益依赖于特征,不同的特征往往具有不同的信息增益。
信息增益大的特征具有更强的分类能力。
?
根据信息增益准则的特征选择方法是:对训练数据集(或子集)D,计算其每个特征的信息增益,并比较它们的大小,选择信息增益最大的特征。
信息增益的算法
输入:训练数据集D和特征A;
输出:特征A对训练数据集D的信息增益g(D,A)。
计算数据集D的经验熵H(D):
计算特征A对数据集D的经验条件熵H(D|A):
计算信息增益:
?
?
ID3算法
ID3算法的核心是在决策树各个结点上应用信息增益准则选择特征,递归地构建决策树。
具体方法是:从根结点(root node)开始,对结点计算所有可能的特征的信息增益,
选择信息增益最大的特征作为结点的特征,由该特征的不同取值建立子结点;
再对子结点递归地调用以上方法,构建决策树;
直到所有特征的信息增益均很小或没有特征可以选择为止。
最后得到一个决策树。ID3相当于用极大似然法进行概率模型的选择。
?
?
C4.5
利用信息增益比来作为特征选择的方式
?
决策树的剪枝
在决策树学习中将已生成的树进行简化的过程称为剪枝(pruning)。
具体地,剪枝从已生成的树上裁掉一些子树或叶结点,
并将其根结点或父结点作为新的叶结点,从而简化分类树模型。
决策树的剪枝通过极小化决策树整体的损失函数(loss function)
或代价函数(cost function)来实现。
设树T的叶结点个数为|T|,
t是树T的叶结点,
该叶结点有Nt个样本点,其中k类的样本点有Ntk个,k=1,2,…,K
Ht(T)为叶结点t上的经验熵,a≥0为参数,
则决策树学习的损失函数可以定义为
其中经验熵为:
在损失函数中,右端的第1项记作:
这时有:
C(T)表示模型对训练数据的预测误差,即模型与训练数据的拟合程度,
|T|表示模型复杂度,参数a≥0控制两者之间的影响。
较大的a促使选择较简单的模型(树),
较小的a促使选择较复杂的模型(树)。
a=0意味着只考虑模型与训练数据的拟合程度,不考虑模型的复杂度。
剪枝,就是当a确定时,选择损失函数最小的模型,即损失函数最小的子树。
当a值确定时,子树越大,往往与训练数据的拟合越好,但是模型的复杂度就越高;
相反,子树越小,模型的复杂度就越低,但是往往与训练数据的拟合不好。
损失函数正好表示了对两者的平衡。
可以看出,决策树生成只考虑了通过提高信息增益(或信息增益比)对训练数据进行更好的拟合。
而决策树剪枝通过优化损失函数还考虑了减小模型复杂度。
决策树生成学习局部的模型,而决策树剪枝学习整体的模型。
?
定义的损失函数的极小化等价于正则化的极大似然估计。
利用损失函数最小原则进行剪枝就是用正则化的极大似然估计进行模型选择
?
树的剪枝算法
生成算法产生的整个树T,参数a;
1.计算每个结点的经验熵。
2.递归地从树的叶结点向上回缩
设一组叶结点回缩到其父结点之前与之后的整体树分别为TB与TA,
其对应的损失函数值分别是Ca(TB)与Ca(TA),如果
则进行剪枝,即将父结点变为新的叶结点。
3.返回2,直至不能继续为止,得到损失函数最小的子树Ta
?
?
CART生成树
对分类树用基尼指数(Gini index)最小化准则
回归树通常称为最小二乘回归树(least squares regression tree)
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?