您的位置:首页 > 其它

决策树(ID3 C4.5 CART)

2016-03-16 01:56 169 查看
决策树(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算法

平方误差作为训练数据的预测误差





基尼指数作为训练数据的预测误差


、】





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: