决策树分支算法(ID3、C4.5、CART)

决策树的核心过程就是建树过程中的分支处理。

1、ID3

ID3决策树学习算法由罗斯·昆兰(J. Ross Quinlan)在1986年发表。其主要思想是以信息增益为准则来划分特征。

根据“信息熵”的概念,信息熵越大,包含的信息越多。在决策树建树的过程中,每次划分特征都希望分支节点所包含的样本尽可能属于同一类别,即节点的“纯度”(purity)越来越高。

信息熵是度量样本集合纯度最常用的一种指标。假定当前样本集合 D D D中第 k k k类样本所占的比例为 p k ( k = 1 , 2 , . . . , K ) p_k(k=1,2,...,K) pk(k=1,2,...,K),则 D D D的信息熵定义为: E n t ( D ) = − ∑ k = 1 K p k l o g 2 p k     ( 式 1 ) Ent(D)=-\sum_{k=1}^Kp_klog_2p_k\space\space\space(式1) Ent(D)=k=1Kpklog2pk   (1) E n t ( D ) Ent(D) Ent(D)的值越小,则D的纯度越高。

假定离散特征 a a a V V V个可能的取值 { a 1 , a 2 , . . . , a V } \{a^1,a^2,...,a^V\} {a1,a2,...,aV},若使用 a a a来对样本集 D D D进行划分,则会产生 V V V个分支节点,其中第 v v v个分支节点包含了 D D D中所有在特征 a a a上取值为 a v a^v av的样本,记为 D v D^v Dv。我们可以根据(式1)计算出 D v D^v Dv的信息熵,再考虑到不同的分支节点所包含的样本数不同,给分支节点赋予权重 ∣ D v ∣ ∣ D ∣ \frac{|D^v|}{|D|} DDv,即样本数越多的分支节点的影响越大,于是可计算出用特征 a a a对样本集 D D D进行划分所获得的“信息增益” G a i n ( D , a ) = E n t ( D ) − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ E n t ( D v )     ( 式 2 ) Gain(D,a)=Ent(D)-\sum_{v=1}^V\frac{|D^v|}{|D|}Ent(D^v)\space\space\space(式2) Gain(D,a)=Ent(D)v=1VDDvEnt(Dv)   (2)一般而言,信息增益越大,则意味着使用特征 a a a来进行划分所获得的“纯度提升”越大。因此,我们可以用信息增益来进行决策树的划分特征选择。即 a ∗ = arg ⁡ max ⁡ a ∈ A G a i n ( D , a ) a_*=\arg \max \limits_{a \in A} Gain(D,a) a=argaAmaxGain(D,a)

由(式2)可知,信息增益准则对可取数值数目较多的特征有所偏好。通过ID3算法生成的是一颗多叉树

缺点

  • 无剪枝策略,容易过拟合;
  • 只能用于处理离散分布的特征并且只能处理分类问题;
  • 没有考虑缺失值。
  • 信息增益准则对可取数值数目较多的特征有所偏好
2、C4.5

C4.5决策树学习算法同样是由罗斯·昆兰(J. Ross Quinlan)在1993年发表。主要是为了解决“信息增益准则对可取数值数目较多的特征有所偏好”可能带来不利影响的问题。
C4.5使用“信息增益率”来选择最优划分特征,采用和(式2)相同的符合表示增益率: G a i n _ r a t i o ( D , a ) = G a i n ( D , a ) I V ( a )     ( 式 3 ) Gain\_ratio(D,a)=\frac{Gain(D,a)}{IV(a)}\space\space\space(式3) Gain_ratio(D,a)=IV(a)Gain(D,a)   (3)其中 I V ( a ) = − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ l o g 2 ∣ D v ∣ ∣ D ∣ IV(a)=-\sum_{v=1}^V\frac{|D^v|}{|D|}log_2\frac{|D^v|}{|D|} IV(a)=v=1VDDvlog2DDv当特征 a a a的可能取值数目越多(即 V V V越大),则 I V ( a ) IV(a) IV(a)的值通常会越大。

由(式3)可知,增益率准则对可能取值数目较少的特征有所偏好。为了解决这个问题,C4.5算法并没有直接选择增益率最大的候选划分特征,而是使用了一个启发式:先从候选划分特征中找出信息增益高于平均水平的特征,然后再从中选择增益率最高的。

C4.5算法不但改进了划分特征的算法,同时还引入了剪枝策略,以防止过拟合,以及对连续值和缺失值进行了处理

剪枝策略
剪枝(pruning)是决策树学习算法对付“过拟合”的主要手段。决策树剪枝的基本策略有“预剪枝”和“后剪枝”两种。

“预剪枝”:在决策树生成过程中,对每个节点在划分前先进行估计,若当前节点的划分不能带来决策树泛化性能提升,则停止划分并将当前节点标记为叶节点。
停止划分节点的主要方法有:

  • 节点内数据样本低于某一阈值;
  • 节点划分前准确率比划分后准确率高;

“预剪枝”使得决策树的很多分支都没有“展开”,这不仅降低了过拟合的风险,还显著减少了决策树的训练时间开销和测试时间开销。但另一方面“预剪枝”基于“贪心”策略禁止这些分支展开,给“预剪枝”决策树带来了欠拟合的风险

“后剪枝”:先从训练集生成一颗完整的决策树,然后自底向上地对非叶节点进行考察,若将该节点对应的子树替换为叶节点能带来决策树泛化性能提升,则将该子树替换为叶节点。
“后剪枝”决策树通常比“预剪枝”决策树保留了更多的分支,一般情况下,“后剪枝”的欠拟合风险很小,泛化性能往往优于“预剪枝”决策树,但“后剪枝”是在生成完整的决策树后进行的,并且要自底向上地对树中的所有非叶节点进行逐一考察,因此其训练时间开销比未剪枝决策树和预剪枝决策树都要大得多。

C4.5对连续特征的处理主要是采用二分法。给定样本集 D D D和连续特征 a a a,假定 a a a D D D上出现了 n n n个不同的取值,将这些值从小到大进行排序,记为 { a 1 , a 2 , . . . , a n } \{a^1,a^2,...,a^n\} {a1,a2,...,an}。基于划分点 t t t可将 D D D分为子集 D t − D_t^- Dt D t + D_t^+ Dt+,其中 D t − D_t^- Dt包含那些在特征 a a a上取值不大于 t t t的样本。而 D t + D_t^+ Dt+则包含那些在特征 a a a上取值大于 t t t的样本。显然,对相邻的特征取值 a i a^i ai a i + 1 a^{i+1} ai+1来说, t t t在区间 [ a i , a i + 1 ) [a^i,a^{i+1}) [ai,ai+1)中取任意值所产生的划分结果相同。因此,对连续特征 a a a,我们可考察包含 n − 1 n-1 n1个元素的候选划分点集合 T a = { a i + a i + 1 2 ∣ 1 ⩽ i ⩽ n − 1 } T_a=\{\frac{a^i+a^{i+1}}{2}|1\leqslant i \leqslant n-1\} Ta={2ai+ai+11in1}即把区间 [ a i , a i + 1 ) [a^i,a^{i+1}) [ai,ai+1)的中位点 a i + a i + 1 2 \frac{a^i+a^{i+1}}{2} 2ai+ai+1作为候选划分点。然后,我们就可像离散特征值一样来考察这些划分点,选取最优的划分点进行样本集合的划分: G a i n ( D , a ) = max ⁡ t ∈ T a G a i n ( D , a , t ) Gain(D,a)=\max_{t\in T_a}Gain(D,a,t) Gain(D,a)=tTamaxGain(D,a,t) = max ⁡ t ∈ T a E n t ( D ) − ∑ λ ∈ { − , + } ∣ D t λ ∣ ∣ D ∣ E n t ( D t λ ) =\max_{t\in T_a} Ent(D) -\sum_{\lambda \in\{-,+\}}\frac{|D_t^{\lambda}|}{|D|}Ent(D_t^{\lambda}) =tTamaxEnt(D)λ{,+}DDtλEnt(Dtλ)其中 G a i n ( D , a , t ) Gain(D,a,t) Gain(D,a,t)是样本集 D D D基于划分点 t t t二分后的信息增益,于是,我们就可选择使 G a i n ( D , a , t ) Gain(D,a,t) Gain(D,a,t)最大化的划分点。

C4.5对缺失值的处理主要是针对解决两个问题:

  • 如何在特征值缺失的情况下进行划分属性选择?
  • 给定划分属性,若样本在该属性上的值缺失,如何对样本进行划分?

对于第一个问题:主要是通过对具有缺失值的特征,采用没有缺失样本子集所占比重来折算。
对于第二个问题:主要是通过将同一个样本以不同的概率划入到不同的子节点中去。

缺点

  • C4.5也是一颗多叉树
  • 只能用于分类
3、CART(Classification and Regression Tree)

CART是一颗二叉树,相对于ID3和C4.5提高了生成决策树的效率。
CART决策树使用“基尼指数”来选择划分特征,对于数据集 D D D的“纯度”可用基尼指数度量: G i n i ( D ) = ∑ k = 1 K ∑ k ′ ≠ k p k p k ′ Gini(D)=\sum_{k=1}^K\sum_{k'\not =k}p_kp_{k'} Gini(D)=k=1Kk=kpkpk = 1 − ∑ k = 1 K p k 2 =1-\sum_{k=1}^Kp_k^2 =1k=1Kpk2直观来说, G i n i ( D ) Gini(D) Gini(D)反映了从数据集 D D D中随机抽取两个样本,其类别标记不一致的概率。因此, G i n i ( D ) Gini(D) Gini(D)越小,则数据集 D D D的“纯度”越高。则特征 a a a的基指系数为: G i n i _ i n d e x ( D , a ) = ∑ v = 1 V ∣ D v ∣ ∣ D ∣ G i n i ( D v ) Gini\_index(D,a)=\sum_{v=1}^V\frac{|D^v|}{|D|}Gini(D^v) Gini_index(D,a)=v=1VDDvGini(Dv)于是,我们在候选特征集合 A A A中,选择那个使得划分后基尼指数最小的特征作为最优划分特征,即 a ∗ = arg ⁡ min ⁡ a ∈ A G i n i _ i n d e x ( D , a ) a_*=\arg \min\limits_{a\in A}Gini\_index(D,a) a=argaAminGini_index(D,a)

CART决策树不仅可以应用于分类,还可以应用于回归。在回归模型中,则使用均方误差和来判断最优划分特征。对于划分特征 a a a,对应的任意划分点 s s s两边划分成的数据集 D 1 D_1 D1 D 2 D_2 D2,求出使 D 1 D_1 D1 D 2 D_2 D2各自集合的均方误差最小,同时 D 1 D_1 D1 D 2 D_2 D2的均方误差之和最小所对应的特征和特征值划分点: min ⁡ a , s [ min ⁡ c 1 ∑ x i ∈ D 1 ( y i − c 1 ) 2 + min ⁡ c 2 ∑ x i ∈ D 2 ( y i − c 2 ) 2 ] \min_{a,s}[\min_{c_1}\sum_{x_i\in D_1}(y_i-c_1)^2+\min_{c_2}\sum_{x_i\in D_2}(y_i-c_2)^2] a,smin[c1minxiD1(yic1)2+c2minxiD2(yic2)2]其中, c 1 c_1 c1 D 1 D_1 D1 数据集的样本输出均值, c 2 c_2 c2 D 2 D_2 D2 数据集的样本输出均值.

回归树输出不是类别,它采用的是用最终叶子的均值或者中位数来预测输出结果。

4、总结

最后通过总结的方式对比下 ID3、C4.5 和 CART 三者之间的差异。

  • 划分标准的差异:ID3 使用信息增益偏向特征值多的特征,C4.5 使用信息增益率克服信息增益的缺点,偏向于特征值小的特征,CART 使用基尼指数克服 C4.5 需要求 log 的巨大计算量,偏向于特征值较多的特征。
  • 使用场景的差异:ID3 和 C4.5 都只能用于分类问题,CART 可以用于分类和回归问题;ID3 和 C4.5 是多叉树,速度较慢,CART 是二叉树,计算速度很快;
  • 样本数据的差异:ID3 只能处理离散数据且缺失值敏感,C4.5 和 CART 可以处理连续性数据且有多种方式处理缺失值;从样本量考虑的话,小样本建议 C4.5、大样本建议 CART。C4.5 处理过程中需对数据集进行多次扫描排序,处理成本耗时较高,而 CART 本身是一种大样本的统计方法,小样本处理下泛化误差较大 ;
  • 样本特征的差异:ID3 和 C4.5 层级之间只使用一次特征,CART 可多次重复使用特征;
    剪枝策略的差异:ID3 没有剪枝策略,C4.5 是通过悲观剪枝策略来修正树的准确性,而 CART 是通过代价复杂度剪枝。

参考文献:

  1. 《机器学习》周志华
  2. https://zhuanlan.zhihu.com/p/85731206
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值