C4.5和CART决策树对比

45 篇文章 0 订阅
12 篇文章 1 订阅

前面详细讲解了ID3决策树。
现在来聊一聊CART、C4.5决策树:
CART与ID3和C4.5相同都由特征选择,树的生成,剪枝组成。但ID3和C4.5用于分类,CART可用于分类与回归。

CART是在给定输入随机变量X条件下输出随机变量Y的条件概率分布,与ID3和C4.5的决策树所不同的是,ID3和C4.5生成的决策树可以是多叉的,每个节点下的叉树由该节点特征的取值种类而定,比如特征年龄分为(青年,中年,老年),那么改节点下可分为3叉。而CART为假设决策树为二叉树,内部结点特征取值为”是”和”否”。左分支取值为”是”,有分支取值为”否”。这样的决策树等价于递归地二分每一个特征,将输入空间划分为有限个单元,并在这些单元上预测概率分布,也就是在输入给定的条件下输出条件概率分布。
CART分类树
特征选择
CART分类树通过基尼指数选择最优特征,同时决定该特征的最优二值切分点,而ID3和C4.5直接选择最优特征,不用划分。
基尼指数
分类问题,假设有K个类,样本点属于第k个类概率为pk,则概率分布的基尼指数定义为
在这里插入图片描述
对于给定样本集合D,基尼指数
在这里插入图片描述
Ck是D中属于第k类的样本子集,K是类的个数。
如果样本集合D根据特征A是否取某一可能值a被分割为D1和D2两部分。
(即在某一特征多个取值中,取其一个将其分为”是”其他为”不是”)在这里插入图片描述
基尼指数越大,样本集合不确定性越大。

CART树生成
(1) 设结点的训练数据集为D,计算现有特征对该数据集的基尼指数.此时,对于每个特征,每次取其中一个每个可能取得值,根据样本点对该值的测试结果为”是”或”否”将D分成2部分,并计算基尼指数.
(2) 在所有可能的特征,以及他们所有可能的切分点中,选择基尼指数最小的特征,该选择的特征为最优特征,该特征中的切分点为最优切分点,依照最优特征和最优切分点生成二叉树,并把训练数据集分配到子节点中。
(3)对两个子节点递归调用 (1) (2) ,直至满足停止条件
(4)生成CART决策树。
停止条件是样本个数小于预定阈值,或样本基尼指数小于预定阈值,或没有更多特征。

而ID3,C4.5在(1) (2)处与CART不同,ID3计算信息增益,C4.5计算信息增益比,首先求所有特征的信息增益或信息增益比,其中计算的数值是针对每一个特征,不将特征划分,而后以该特征将树延伸,在父节点确定的条件下,继续对子节点求所有特征的信息增益,后在划分。
CART则为求所有特征下的所有切分点后进行比较来划分。
CART树剪枝
CART剪枝算法分两部,首先从生成算法产生的决策数T0底端开始不断剪枝,知道T0的根节点,形成子树序列{T0,T1,T2…Tn};然后通过交叉验证法在独立的验证数据集上对与子树测试,从中选择最优子树。

接下来我们从ID3,C4.5一步步推出CART树的剪枝

在ID3,C4.5中
决策树的剪枝通过极小化决策树的整体损失函数或者代价函数来求解。
决策树通过经验熵来生成。
设树T的叶结点个数为|T|, t 是树 T 的叶结点, 该叶结点上有 N(t) 个样本点,其中 k 类的样本点的个数为 N(tk) 个, k 为结果的类别, Ht(T) 为叶结点上经验熵,则损失函数可定义为
在这里插入图片描述
其中经验熵为
在这里插入图片描述
在损失函数中将第一项记作
在这里插入图片描述

在这里插入图片描述
C(T)表示模型对训练数据的预测误差,即模型对训练数据的拟合程度,|T| 表示模型的复杂度,参数 a>=0 控制两者直接的影响,较大的 a 促使选择模型较简单的树,而小的则相反,a=0 意味指不考虑模型复杂度,只与拟合程度有关。
剪枝,当a确定时,选择损失函数最小的模型,即损失函数最小的树,为最好的树。
从中我们可以看出一些关系,首先ID3,C4.5,中a的取值是固定的,即树要剪枝首先我们要给出生成算法给出的生成树和一个固定的a值。
那么当a不是固定的时候,则整个损失函数由预测误差,a和模型复杂度共同决策。
而后从
在这里插入图片描述
该式子中我们可以的得出C(T)作为模型的预测误差的值,通过累加每一个叶结点(即T个叶结点)的预测误差而得出C(T)。
这个结论对于CART同样适用,因为CART预测误差用的为基尼指数,但求和都是结点误差和。

在CART剪枝中
CART剪枝分为剪枝成子树序列,并通过交叉验证选取最优子树。

1.剪枝,成子树序列
在剪枝过程中,计算子树的损失函数:
在这里插入图片描述
其中,T为任意子树,C(T)为对训练数据的预测误差(如基尼指数),|T|为子树的节点个数,a>=0为参数,Ca(T)为参数是a时子树T的整体损失,参数a权衡训练数据的拟合程度和模型的复杂度。
从上方a不是固定的时候,则整个损失函数由预测误差,a和模型复杂度共同决策,得出a大的时候,最优子树Ta偏小;当a小的时候,最优子树Ta的树较大,a=0时整体树最优,a->∞时,根结点组成的单节点树最优。
且认为不同的a值,可以确定一棵不同的最优化的树,或者说一个区间内的a值可以确定一颗最优化的树
即将a不断增大,利用a生成Ta这棵最优子树
在这里插入图片描述
为了得到所有的可能生成的最优化树{T0,T1,T2,…Tn},我们须从底向上,每次进行一次剪枝,通过得到的树认为是最优化树反推a
具体的,从整体树T0开始剪枝,对于T0的任意内部结点t,结点下有若干子节点,把t下的子树的若干叶节点称为Tt。
剪枝后(即t下的子树减去后,t变为叶节点)的损失函数
在这里插入图片描述
剪枝前的损失函数
在这里插入图片描述
注意这里的损失函数都是某个叶结点的损失函数,但为什么可以只求叶节点的损失函数,因为在上面的分析ID3,C4.5中得出了C(T)作为模型的预测误差的值,通过累加每一个叶结点(即T个叶结点)的预测误差而得出C(T)。因此单独求某个叶结点并没有什么问题。

现在就是求解a,a如何求解?
当a=0或充分小时,不等式
在这里插入图片描述
因为叶结点越多预测误差应该越小。
当a不断增大时,在某个a点有
在这里插入图片描述
当a再增大时,不等式反向。因此只要
在这里插入图片描述
Tt与t有相同的损失函数,而t结点少,因此t比Tt更可取,对Tt进行剪枝。
接下来对T0这棵整体树中的每一个结点t,计算

在这里插入图片描述
这个g(t)表示剪枝后的整体损失函数减少程度,实际上可以看为是否剪枝的阈值,对于某个结点当他的参数a=g(t)时,剪和不剪总体损失函数时一样的。如果a增大则不剪的整体损失函数就大于剪去的。即a大于g(t)该剪,剪后会使整体损失函数减小,而a小于g(t)则不剪,剪后会使整体损失函数增大。
这样a缓慢增大,随着a的增大,在一个区间内可确定一棵最优的剪枝树

而我们求每棵树,并认为他是最优剪枝树。

g(t)则代表每一棵树的a的最优区间内的最小值

即在T0中剪去g(t)最小的Tt,得到的子树为T1,同时将最小的g(t)设为a1,那

么T1为区间[a1,a2)的最优子树。

如此这样下去,将所有可能的树的情况剪枝直到根节点,在这个过程中则

会不断增加a,产生新的区间,最后a的所有可能的g(t)取值全部确定。

2.通过交叉验证选取最优子树
具体的利用独立的验证数据集,测试子树序列T0,T1,…Tn中各棵子树的平

方误差或基尼指数。平方误差或基尼指数最小的决策数被认为是最优决策

数,因为我们每确定一棵子树就会确定其参数a值,所以最优子树Tk确定,对应ak也确定,即得到最优决策数Ta。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值