决策树(decision tree)是一种基本的分类与回归方法
——用于分类的决策树
决策树模型呈树形结构,在分类问题中,表示基于特征对实例进行分类的过程
可以被认为是if-then规则的集合,也可以是定义在特征空间与类空间上的条件概率分布
——损失函数最小化原则
步骤:特征选择、决策树的生成、决策树的剪枝
Quinlan在1986年提出的ID3算法和1993年提出的C4.5算法,Breiman等人在1984年提出的CART算法
决策树模型
决策树由结点和有向边组成
结点由内部结点(特征和属性)和叶结点(类)组成
决策树与条件概率分布
决策树学习
决策树学习用损失函数表示这一目标——通常是正则化的极大似然函数
损失函数确定后,学习问题转为损失函数意义下选择最优决策树
——从所有可能的决策树中选取最优决策树是NP完全问题,所以通常用启发式方法,近似求解,得到次最优解
一种方法
构建根结点,所有训练数据嚷道根结点 选择一个<strong>最优特征</strong> 根据特征分割训练数据为不同子集——当前最好分类 if 子集基本分类,then构造叶结点 if not <strong>重选特征</strong>继续分割 递归 生成决策树<em> </em>
所以需要自下而上剪枝,让树更简单,从而增强泛化能力——去掉过于细分的结点,回退父结点
如果特征数量过多,开始对特征进行选择
算法包括:特征选择、决策树的生成、决策树的剪枝
——决策树生成考虑局部最优,剪枝考虑全局最优
特征选择
信息熵
信息熵是随机变量的期望。度量信息的不确定程度。
信息的熵越大,信息就越不容易搞清楚。处理信息就是
为了把信息搞清楚,就是熵减少的过程。
Entropy(X) = -Sum(p(xi) * log(p(xi))) {i: 0 <= i <= n}
p(x)是概率密度函数;对数是以2为底;
信息增益
用于度量属性A降低样本集合X熵的贡献大小。信息增益
越大,越适于对X分类。
Gain(A, X) = Entropy(X) - Sum(|Xv| / |X| * Entropy(Xv)) {v: A的所有可能值}
Xv表示A中所有为v的值;|Xv|表示A中所有为v的值的数量;
信息增益比
训练数据的经验熵大的时候信息增益会偏大,反之偏小。
需要信息增益比校正
Gain-ratio(A, X) =Gain(A, X)/H(D)
选择信息增益(比)较大者为最优特征
决策树的生成
ID3算法:
输入:训练数据集D,特征集A,阈值<strong>ε</strong> 输出:决策树T 1)若D中所有实例属于同一类Ck,则T为单节点树,并将Ck作为该结点的类标记,返回T 2)若A是空集,则T为单节点树,并将D中实例数最大的类Ck作为该结点的类标记,返回T 3)否则,计算A中各特征对D的信息增益,<strong>选择信息增益最大的特征Ag</strong> 4)如果Ag的信息增益小于阈值ε,则同 2) 5)否则,对Ag的每一可能值ai,依<strong>Ag=ai将D分割</strong>为若干非空子集Di,Di中实例数最大的类作为标记,构建子结点,由结点及其子结点构成树T 6)对第i个子结点,以Di为训练集,以<strong>A-{Ag}为特征集,递归调用</strong>1)~5),得到子树,返回Ti
援引Quinlan的论文的例子。
假设,有种户外活动。该活动能否正常进行与各种天气因素有关。
不同的天气因素组合会产生两种后果,也就是分成2类:能进行活动或不能。
我们用P表示该活动可以进行,N表示该活动无法进行。
下表描述样本集合是不同天气因素对该活动的影响。
Attribute class
outlook temperature humidity windy
---------------------------------------------------------
sunny hot high false N
sunny hot high true N
overcast hot high false P
rain mild high false P
rain cool normal false P
rain cool normal true N
overcast cool normal true P
sunny mild high false N
sunny cool normal false P
rain mild normal false P
sunny mild normal true P
overcast mild high true P
overcast hot normal false P
rain mild high true N
2
该活动无法进行的概率是:5/14
该活动可以进行的概率是:9/14
因此样本集合的信息熵是:-5/14log(5/14) - 9/14log(9/14) = 0.940
3
接下来我们再看属性outlook信息熵的计算:
outlook为sunny时,
该活动无法进行的概率是:3/5
该活动可以进行的概率是:2/5
因此sunny的信息熵是:-3/5log(3/5) - 2/5log(2/5) = 0.971
同理可以计算outlook属性取其他值时候的信息熵:
outlook为overcast时的信息熵:0
outlook为rain时的信息熵:0.971
属性outlook的信息增益:gain(outlook) = 0.940 - (5/14*0.971 + 4/14*0 + 5/14*0.971) = 0.246
相似的方法可以计算其他属性的信息增益:
gain(temperature) = 0.029
gain(humidity) = 0.151
gain(windy) = 0.048
信息增益最大的属性是outlook。
4
根据outlook把样本分成3个子集,然后把这3个子集和余下的属性
作为输入递归执行算法。
C4.5生成算法
较ID3
用信息增益比代替信息增益
决策树剪枝
生成算法对训练数据分类很准确,但对未知的测试数据的分类却没那么准确,过拟合现象。
由于过多考虑训练数据的准确分类,而构建出过于复杂的决策树。
考虑决策树的复杂度,对已生成的决策树进行简化——剪枝,剪枝从已生成的树上裁掉一些子树和叶结点,并将其根结点或父结点作为新的叶结点
简单的剪枝算法
——极小化决策树整体的损失函数或代价函数来实现。
算法:
输入:生成算法产生整个树T,参数α 输出:修剪后的子树Tα 1)计算每个结点的经验熵 2)递归地从树的叶结点向上回缩 3)返回2),直至不能继续为止
只需考虑两个树的损失函数之差,其计算可以在局部进行,所以决策树的剪枝算法可以由一种动态规划的算法实现
CART算法
平方误差作为训练数据的预测误差
基尼指数作为训练数据的预测误差
、】