机器学习 - 决策树(中)- ID3、C4.5 以及剪枝

机器学习 - 决策树(中)- ID3、C4.5 以及剪枝

  • 决策树简述

    决策树,它的精髓就是决策,可以认为它是 if-then 规则的集合构建成树形结构的模型。(另,也可认为是定义在特征空间与类空间上的条件概率分布。)

    • if-then 规则

      由决策树的根节点到叶节点的每一条路径构建一条规则则;路径上内部节点的特征对应着规则的条件,而叶节点的类对应着规则的结论。

      其中,对于数据集中的每一个实例都被一条且只有一条路径或规则覆盖。

    • 条件概率分布

      此条件概率分布定义在特征空间的一个划分上。将特征空间划分为互不相交的单元或区域,并在每个单元定义一个类的概率分布,就构成了一个条件概率分布。决策树所表示的条件概率分布由各个单元给定条件下类的条件概率分布组成。具体的,


      对于包含 N 个样本的数据集,假设每个样本具有的特征为: { x ( 1 ) , x ( 2 ) , . . . x ( n ) } \{x^{(1)},x^{(2)},...x^{(n)}\} {x(1),x(2),...x(n)},从 n 个特征 合理 选择一个 x ( i ) x^{(i)} x(i),而后根据 x ( i ) x^{(i)} x(i) 的取值进行分类,如果 x ( i ) x^{(i)} x(i) 取值是离散的,则按值分类;如果 x ( i ) x^{(i)} x(i) 取值是连续的,则可以按区间划分;接着再根据不同的 x ( j ) x^{(j)} x(j) 对已经在上一轮划分好的样本基础上继续划分。

    那么上文中提到的“合理”是怎样的,对于 x ( i ) x^{(i)} x(i) x ( i ) x^{(i)} x(i) 又是依据什么进行选取的呢?接着看下文。

  • 决策树过程

    对于决策树的生成,主要运用熵的计算。熵的基础概念在上文《机器学习 - 决策树(上)- 信息论基础》已经做了介绍,不再赘述。对于合理的选择特征,关键在于生成一棵熵不断下降,且下降速度最快的树。

    直接上实例:

    假设有数量为 10 的数据集 D D D,其中女生 6 人, 男生 4 人,每个样本都具有特征 x ( 1 ) = 喜 爱 的 节 目 类 型 = { 偶 像 剧 , 战 争 剧 } , x ( 2 ) = 学 历 = { 小 学 , 高 中 } x^{(1)}=喜爱的节目类型=\{偶像剧,战争剧\},x^{(2)}=学历=\{小学,高中\} x(1)=={}x(2)=={}(具体数据见下表)。

    以此数据建立决策树,并预测新样本为男生还是女生。

    样本ID喜爱节目类型学历性别
    1偶像剧小学
    2偶像剧初中
    3偶像剧小学
    4战争剧初中
    5偶像剧初中
    6战争剧小学
    7偶像剧小学
    8战争剧初中
    9战争剧初中
    10偶像剧小学

    对于数据集 D D D ,目标为预测性别。

    在未分类的时候(即根节点)的熵为香农熵: H ( D ) = − [ P ( 女 ) log ⁡ P ( 女 ) + P ( 男 ) log ⁡ P ( 男 ) ] = − ( 6 10 log ⁡ 6 10 + 4 10 log ⁡ 4 10 ) = 0.292 H(D)=-[P(女)\log P(女)+P(男)\log P(男)]=-(\frac{6}{10}\log\frac{6}{10}+\frac{4}{10}\log\frac{4}{10})=0.292 H(D)=[P()logP()+P()logP()]=(106log106+104log104)=0.292
    根节点

    假设以学历作为划分依据 { 小 学 : 3 女 / 2 男 ; 初 中 : 3 女 / 2 男 } \{小学:3 女 / 2 男;初中:3 女 / 2 男\} {3/23/2},取值有 2 种,则分为 2 个分支:
    在这里插入图片描述

    此时对于整个数据集 D D D 所包含的信息用条件熵来计算:

    H ( D ∣ 学 历 ) = ∑ k P ( k ) H ( k ) , k ∈ { 小 学 , 初 中 } H(D|学历)=\sum_{k}P(k)H(k),k∈\{小学,初中\} H(D)=kP(k)H(k),k{}

                      = − [ 5 10 H ( 小 学 ) + 5 10 H ( 初 中 ) ] =-[\frac{5}{10}H(小学)+\frac{5}{10}H(初中)] =[105H()+105H()]

                      = − [ 5 10 ( 3 5 log ⁡ 3 5 + 2 5 log ⁡ 2 5 ) + 5 10 ( 2 5 log ⁡ 2 5 + 3 5 log ⁡ 3 5 ) ] =-[\frac{5}{10}(\frac{3}{5}\log\frac{3}{5}+\frac{2}{5}\log\frac{2}{5})+\frac{5}{10}(\frac{2}{5}\log\frac{2}{5}+\frac{3}{5}\log\frac{3}{5})] =[105(53log53+52log52)+105(52log52+53log53)]

                      = 0.292 =0.292 =0.292

    假设以喜爱节目类型作为划分依据 { 偶 像 剧 : 5 女 / 1 男 ; 战 争 剧 : 3 男 / 1 女 } \{偶像剧:5 女 / 1 男;战争剧:3 男 / 1 女\} {5/13/1},取值 2 中,则分为 2 支:
    喜爱节目类型
    同理可以计算出:

    H ( D ∣ 类 型 ) = ∑ k P ( k ) H ( k ) , k ∈ { 偶 像 剧 , 战 争 剧 } H(D|类型)=\sum_{k}P(k)H(k),k∈\{偶像剧,战争剧\} H(D)=kP(k)H(k),k{}

                           = − [ 6 10 ( 1 6 log ⁡ 1 6 + 5 6 log ⁡ 5 6 ) + 4 10 ( 1 4 log ⁡ 1 4 + 3 4 log ⁡ 3 4 ) ] =-[\frac{6}{10}(\frac{1}{6}\log\frac{1}{6}+\frac{5}{6}\log\frac{5}{6})+\frac{4}{10}(\frac{1}{4}\log\frac{1}{4}+\frac{3}{4}\log\frac{3}{4})] =[106(61log61+65log65)+104(41log41+43log43)]

                           = 0.276 =0.276 =0.276

    以上,具有两种划分方式(学历,喜爱节目类型),那么该以哪个特征作为划分呢?(以下用 “类型” 代替 “喜爱节目类型”)

    1. ID3

      ID3 是通过 信息增益(互信息) 来衡量特征选取优劣的,即在划分后,计算信息量的改变量,改变量大的意味着带给我们更多的信息,那么它就是更优的特征。

      计算公式为: g ( D , A ) = H ( D ) − H ( D ∣ A ) g(D,A)=H(D)-H(D|A) g(D,A)=H(D)H(DA),具体的,


      ∙ \bullet 对于学历,其信息增益为: g ( D , 学 历 ) = H ( D ) − H ( D ∣ 学 历 ) = 0 g(D,学历)=H(D)-H(D|学历)=0 g(D,)=H(D)H(D)=0

      ∙ \bullet 对于喜爱的节目类型,其信息增益为: g ( D , 类 型 ) = H ( D ) − H ( D ∣ 类 型 ) = 0.016 g(D,类型)=H(D)-H(D|类型)=0.016 g(D,)=H(D)H(D)=0.016

      因为 g ( D , 类 型 ) > g ( D , 学 历 ) g(D,类型) > g(D,学历) g(D,)>g(D,) 所以选用“喜爱的节目类型”作为划分特征。

    2. C4.5

      C4.5 是通过 信息增益比 来衡量优劣。

      以信息增益作为划分标准,存在偏向于选择取值较多的特征的问题,因为信息增益反映的给定一个条件以后不确定性减少的程度,必然是分得越细数据集整体的确定性越高,也就是条件熵越小,信息增益越大。使用信息增益比可以对这一问题进行校正。

      信息增益比的计算公式为: g R ( D , A ) = g ( D , A ) H A ( D ) , H A ( D ) = ∑ i = 1 n ∣ D i ∣ ∣ D ∣ log ⁡ ∣ D i ∣ ∣ D ∣ g_R(D,A)=\frac{g(D,A)}{H_A(D)},H_A(D)=\sum_{i=1}^{n}\frac{|D_i|}{|D|}\log\frac{|D_i|}{|D|} gR(D,A)=HA(D)g(D,A)HA(D)=i=1nDDilogDDi

      其中 H A ( D ) H_A(D) HA(D) 为数据集 D D D 关于特征 A 的值的熵(对特征 A 的取值个数进行衡量)。具体的,


      ∙ \bullet 对于学历,其 H 学 历 ( D ) = − ∑ 学 历 D i D log ⁡ D i D = − [ 5 10 log ⁡ 5 10 + 5 10 log ⁡ 5 10 ] H_{学历}(D)=-\sum_{学历}\frac{D_i}{D}\log\frac{D_i}{D}=-[\frac{5}{10}\log\frac{5}{10}+\frac{5}{10}\log\frac{5}{10}] H(D)=DDilogDDi=[105log105+105log105]

      其信息增益比为: g R ( D , 学 历 ) = g ( D , 学 历 ) H 学 历 ( D ) = 0 g_R(D,学历)=\frac{g(D,学历)}{H_{学历}(D)}=0 gR(D,)=H(D)g(D,)=0

      ∙ \bullet 对于喜爱的节目类型,其 H 类 型 ( D ) = − [ 4 10 log ⁡ 4 10 + 6 10 log ⁡ 6 10 ] = H_{类型}(D)=-[\frac{4}{10}\log\frac{4}{10}+\frac{6}{10}\log\frac{6}{10}]= H(D)=[104log104+106log106]=

      其信息增益比为: g R ( D , 类 型 ) = g ( D , 类 型 ) H 类 型 ( D ) = 0.055 g_R(D,类型)=\frac{g(D,类型)}{H_{类型}(D)}=0.055 gR(D,)=H(D)g(D,)=0.055

      因为 g ( D , 类 型 ) > g ( D , 学 历 ) g(D,类型) > g(D,学历) g(D,)>g(D,) 所以选用 “喜爱的节目类型” 作为划分特征。

    3. 过拟合

      对于树的过拟合现象,有两种解决办法,第一种采用“随机森林+Bagging” 的策略(有关 Bagging 的详情可参阅 《机器学习 - 集成方法(Bagging VS. Boosting)》

      另一种方法为剪枝。而剪枝又分为预剪枝与后剪枝。对于预剪枝,其含义为在完全拟合整个数据集之前停止增长,例如可以规定:树的最大深度、叶子结点最大个数、叶子结点最小样本数等,这些参数可用网格搜索等方法可以获得较优值。

      下面主要介绍后剪枝。

      后剪枝的策略是先让树以最大规模生长,而后自底向上修建。不过缺点是之前生成完全树的计算被浪费。

      剪枝定义

      此算法考虑树的复杂度,通过极小化决策树整体损失来实现。

      设树为 T T T ,叶节点个数为 ∣ T ∣ |T| T t t t 是树 T T T 的叶节点,每个叶节点有 N t N_t Nt 个样本点。其中属于 k k k 类的样本点有 N t k , k = 1 , 2 , . . . , k N_{tk},k=1,2,...,k Ntk,k=1,2,...,k H t ( T ) H_t(T) Ht(T) 为叶节点 t t t 上的经验熵, α ≥ 0 α\ge0 α0 为参数。

      那么损失函数为: C α ( T ) = ∑ t = 1 ∣ T ∣ N t H t ( T ) + α ∣ T ∣ , H t ( T ) = ∑ k N t k N t log ⁡ N t k N t C_α(T)=\sum_{t=1}^{|T|}N_tH_t(T)+α|T|,H_t(T)=\sum_{k}\frac{N_{tk}}{N_t}\log\frac{N_{tk}}{N_t} Cα(T)=t=1TNtHt(T)+αTHt(T)=kNtNtklogNtNtk

      C ( T ) = ∑ t = 1 ∣ T ∣ N t H t ( T ) C(T)=\sum_{t=1}^{|T|}N_tH_t(T) C(T)=t=1TNtHt(T)

      C α ( T ) = C ( T ) + α ∣ T ∣ C_α(T)=C(T)+α|T| Cα(T)=C(T)+αT

      C ( T ) C(T) C(T) 表示模型对训练数据的预测误差, ∣ T ∣ |T| T 表示模型复杂度;

      参数 α ≥ 0 α\ge0 α0 控制对复杂度的要求: { α = 0 , 对 复 杂 度 无 要 求 α ↗ , 倾 向 于 选 择 简 单 模 型 α ↘ , 倾 向 于 选 择 复 杂 模 型 \begin{cases} α=0,对复杂度无要求\\ α\nearrow,倾向于选择简单模型\\ α\searrow,倾向于选择复杂模型\\ \end{cases} α=0αα

      剪枝过程

      在生成完全树之后:

      (1) 计算每个结点的经验熵;

      (2) 递归地从树的叶节点向上回缩,若修剪前的树为 T A T_A TA,修剪后的树为 T B T_B TB,对应的损失函数值为 C α ( T A ) , C α ( T B ) C_α(T_A),C_α(T_B) Cα(TA)Cα(TB)

      C α ( T A ) ≥ C α ( T B ) C_α(T_A)\ge C_α(T_B) Cα(TA)Cα(TB),则进行剪枝,将父节点变为新的叶节点,而此叶节点的类别通过投票决定;

      (3) 返回 (2) ,直至无法继续。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值