决策树(ID3 C4.5 CART)

决策树(decision tree)是一种基本的分类与回归方法

——用于分类的决策树


决策树模型呈树形结构,在分类问题中,表示基于特征对实例进行分类的过程

可以被认为是if-then规则的集合,也可以是定义在特征空间与类空间上的条件概率分布

——损失函数最小化原则

步骤:特征选择、决策树的生成、决策树的剪枝

Quinlan在1986年提出的ID3算法和1993年提出的C4.5算法,Breiman等人在1984年提出的CART算法



决策树模型


决策树(ID3 C4.5 CART)_第1张图片

决策树由结点有向边组成

结点由内部结点(特征和属性)和叶结点()组成





决策树与条件概率分布





决策树学习


决策树学习用损失函数表示这一目标——通常是正则化的极大似然函数


损失函数确定后,学习问题转为损失函数意义下选择最优决策树

——从所有可能的决策树中选取最优决策树是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),直至不能继续为止
决策树(ID3 C4.5 CART)_第2张图片


只需考虑两个树的损失函数之差,其计算可以在局部进行,所以决策树的剪枝算法可以由一种动态规划的算法实现




CART算法



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





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


、】








你可能感兴趣的:(决策树(ID3 C4.5 CART))