决策树信息增益|信息增益比率|基尼指数实例

今天以周志华老师的西瓜为例,复盘一下三种决策树算法。


数据:
在这里插入图片描述

信息增益(ID3算法)

信息熵表示信息的混乱程度,熵越大数据越混乱。分类的目的是为了使同一类别的数据尽可能“纯净”,因此追求尽量小的信息熵。
信息增益表示分类前后信息熵的差值。分类前信息熵是定值,分类后信息熵越小,信息增益越大。因此我们追求尽量大的信息增益值。

entropy(D)表示未分类时数据D的信息熵:
e n t r o p y ( D ) = − ∑ i = 1 k p ( c i ) l o g 2 p ( c i ) entropy(D)=-\sum_{i=1}^k p(c_i)log_2p(c_i) entropy(D)=i=1kp(ci)log2p(ci)
其中, c i c_i ci表示样本的分类变量取i的概率。

entropy(D,A)表示按照属性A分类后数据D的信息熵:
e n t r o p y ( D , A ) = ∑ i = 1 m ∣ D i ∣ ∣ D ∣ e n t r o p y ( D i ) entropy(D,A)=\sum_{i=1}^m\frac{|D_i|}{|D|}entropy(D_i) entropy(D,A)=i=1mDDientropy(Di)
其中, ∣ D i ∣ ∣ D ∣ \frac{|D_i|}{|D|} DDi表示样本的描述变量A取 D i D_i Di的概率。

信息增益即信息熵的差值:
g a i n ( D , A ) = e n t r o p y ( D ) − e n t r o p y ( D , A ) gain(D,A)=entropy(D)-entropy(D,A) gain(D,A)=entropy(D)entropy(D,A)


以西瓜为例,分类变量为是否为好瓜,描述变量为前面6个属性。

e n t r o p y ( D ) = − 8 17 l o g 2 8 17 − 9 17 l o g 2 9 17 = 0.998 entropy(D)=-\frac{8}{17}log_2\frac{8}{17}-\frac{9}{17}log_2\frac{9}{17}=0.998 entropy(D)=178log2178179log2179=0.998

e n t r o p y ( D , 色 泽 ) = − 6 17 e n t r o p y ( 青 绿 ) − 6 17 e n t r o p y ( 乌 黑 ) − 5 17 e n t r o p y ( 浅 白 ) = − 6 17 [ − 3 6 l o g 2 3 6 − 3 6 l o g 2 3 6 ] − 6 17 [ − 4 6 l o g 2 4 6 − 2 6 l o g 2 2 6 ] − 5 17 [ − 1 5 l o g 2 1 5 − 4 5 l o g 2 45 ] = 0.889 \begin{aligned} entropy(D,色泽)&=-\frac{6}{17}entropy(青绿)-\frac{6}{17}entropy(乌黑)-\frac{5}{17}entropy(浅白)\\[2ex] &=-\frac{6}{17}[-\frac{3}{6}log_2\frac{3}{6}-\frac{3}{6}log_2\frac{3}{6}]-\frac{6}{17}[-\frac{4}{6}log_2\frac{4}{6}-\frac{2}{6}log_2\frac{2}{6}]-\frac{5}{17}[-\frac{1}{5}log_2\frac{1}{5}-\frac{4}{5}log_2{4}{5}]\\[2ex] &=0.889 \end{aligned} entropy(D,)=176entropy(绿)176entropy()175entropy()=176[63log26363log263]176[64log26462log262]175[51log25154log245]=0.889
g a i n ( D , 色 泽 ) = e n t r o p y ( D ) − e n t r o p y ( D , 色 泽 ) = 0.109 gain(D,色泽)=entropy(D)-entropy(D,色泽)=0.109 gain(D,)=entropy(D)entropy(D,)=0.109

同理,计算其他属性的信息增益,最终得出“纹理”的信息增益最大,因此选择它作为分裂属性。
 

信息增益比率(C4.5算法)

由信息熵的计算公式可以看出,信息增益有一个先天缺陷:更倾向于选取分类个数多的属性。若有一个分类变量,对每一个样本都取不同值,那么每个样本为一个类别,每个类别的信息熵都是0,信息熵最小,但显然是不合理的。因此,提出信息增益比率进行调整。
g a i n _ r a t i o ( D , A ) = g a i n ( D , A ) s p l i t I n f o ( D , A ) gain\_ratio(D,A)=\frac{gain(D,A)}{splitInfo(D,A)} gain_ratio(D,A)=splitInfo(D,A)gain(D,A)
s p l i I n f o ( D , A ) = − ∑ i = 1 m ∣ D i ∣ ∣ D ∣ l o g 2 ( ∣ D i ∣ ∣ D ∣ ) spliInfo(D,A)=-\sum_{i=1}^m\frac{|D_i|}{|D|}log_2(\frac{|D_i|}{|D|}) spliInfo(D,A)=i=1mDDilog2(DDi)
信息增益比率即信息增益除以一个“分类信息熵”,这个分母其实就是把描述变量A当做分类变量时计算得出的信息熵值。可以看出,类别越多,分类信息熵越大。


还是以西瓜为例:

s p l i I n f o ( D , 色 泽 ) = − 6 17 l o g 2 6 17 − 6 17 l o g 2 6 17 − 5 17 l o g 2 5 17 = 0.613 spliInfo(D,色泽)=-\frac{6}{17}log_2\frac{6}{17}-\frac{6}{17}log_2\frac{6}{17}-\frac{5}{17}log_2\frac{5}{17}=0.613 spliInfo(D,)=176log2176176log2176175log2175=0.613

g a i n _ r a t i o = 0.109 0.613 = 0.178 gain\_ratio=\frac{0.109}{0.613}=0.178 gain_ratio=0.6130.109=0.178

类似的可以计算出其他属性的信息增益比率。
需要注意的是,增益率对类别数量少的属性有所偏好,因此,C4.5算法并不直接选择增益率最大的属性进行分裂,而是先选出信息增益高于平均水平的属性,在从这些属性中选择信息增益率最高的,其实就是对两种方法的缺点进行了一下权衡。

基尼指数(CART算法)

值得一提的是,CART算法要求决策树为二叉树,当分类变量大于2个的时候,将一个类别视为一类,其余类别视为另一类,计算基尼指数选取最优的划分方法。


基尼指数表示随机抽取两个样本,分类变量值不一致的概率,概率越大表示纯度越低。因此,追求的基尼指数越小越好。
G i n i ( D ) = ∑ i = 1 k p k ( 1 − p k ) = 1 − ∑ i − 1 k p k 2 Gini(D)=\sum_{i=1}^kp_k(1-p_k)=1-\sum_{i-1}^kp_k^2 Gini(D)=i=1kpk(1pk)=1i1kpk2
按照描述变量A进行分类后,基尼指数为:
G i n i ( D , A ) = ∑ i = 1 m ∣ D i ∣ ∣ D ∣ G i n i ( D i ) Gini(D,A)=\sum_{i=1}^m\frac{|D_i|}{|D|}Gini(D_i) Gini(D,A)=i=1mDDiGini(Di)


再看西瓜的例子:
以色泽分类后,基尼指数
G i n i ( D , 色 泽 ) = 6 17 G i n i ( 青 绿 ) + 6 17 G i n i ( 乌 黑 ) + 5 17 ( 浅 白 ) = 6 17 [ 1 − ( 3 6 ) 2 − ( 3 6 ) 2 ] + 6 17 [ 1 − ( 4 6 ) 2 − ( 2 6 ) 2 ] + 5 17 [ 1 − ( 1 5 ) 2 − ( 4 5 ) 2 ] \begin{aligned} Gini(D,色泽)&=\frac{6}{17}Gini(青绿)+\frac{6}{17}Gini(乌黑)+\frac{5}{17}(浅白)\\[2ex] &=\frac{6}{17}[1-(\frac{3}{6})^2-(\frac{3}{6})^2]+\frac{6}{17}[1-(\frac{4}{6})^2-(\frac{2}{6})^2]+\frac{5}{17}[1-(\frac{1}{5})^2-(\frac{4}{5})^2] \end{aligned} Gini(D,)=176Gini(绿)+176Gini()+175()=176[1(63)2(63)2]+176[1(64)2(62)2]+175[1(51)2(54)2]
同理算出其他属性的GIni指数,选取最小的作为分类属性即可。

手动复盘,如有错误,敬请指正。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值