决策树的熵问题

决策树算法:

简介

决策树是一种十分常用的监督学习的分类算法。所谓监管学习,就是给定一堆样本,每个样本都有一组属性和一个类别,这些类别是事先确定的,那么通过学习得到一个分类器,这个分类器能够对新出现的对象给出正确的分类。这样的机器学习就被称之为监督学习。

算法分类

决策树算法目前主要有以下三种:ID3/C4.5/CART

  • ID3算法使用的是信息熵增益
  • C4.5算法使用的是信息熵增益率
  • CART算法使用的是Gini系数

优缺点

  • 优点:计算复杂度不高,输出结果易于理解,对中间值的缺失不敏感,可以处理不相关的特征数据。

  • 缺点:可能会产生过度匹配问题。

  • 适用数据类型:数值型和标称型

信息量

首先是信息量。假设我们听到了两件事,分别如下:

事件A:巴西队进入了2018世界杯决赛。

事件B:中国队进入了2018世界杯决赛。

仅凭直觉来说,显而易见事件B的信息量比事件A的信息量要大。究其原因,是因为事件A发生的概率很大,事件B发生的概率很小。所以当越不可能的事件发生了,我们获取到的信息量就越大。越可能发生的事件发生了,我们获取到的信息量就越小。那么信息量应该和事件发生的概率有关。因此信息量可以定义如下
I ( X = x i ) = − l o g 2 p ( x i ) I(X=x_{i})=-log_{2}p(x_{i}) I(X=xi)=log2p(xi)

信息熵

信息熵便是信息的期望值,可以记作:
H ( X ) = ∑ i = 1 n p ( x i ) I ( x i ) = − ∑ i = 1 n p ( x i ) l o g 2 p ( x i ) H(X)=\sum_{i=1}^np(x_i)I(x_{i})=-\sum_{i=1}^np(x_i)log_{2}p(x_{i}) H(X)=i=1np(xi)I(xi)=i=1np(xi)log2p(xi)
熵:表示随机变量的不确定性。变量不确定性越高,熵越高。

条件熵

X给定条件下Y的条件分布的熵对X的数学期望,在机器学习中为选定某个特征后的熵,公式如下:
H ( Y ∣ X ) = ∑ x p ( x ) H ( Y ∣ X = x ) H(Y|X)=\sum_{x}p(x)H(Y|X=x) H(YX)=xp(x)H(YX=x)

信息增益

信息增益在决策树算法中是用来选择特征的指标,信息增益越大,则这个特征的选择性越好,在概率中定义为:待分类的集合的熵和选定某个特征的条件熵之差(这里只的是经验熵或经验条件熵,由于真正的熵并不知道,是根据样本计算出来的),公式如下:
I G ( Y ∣ X ) = H ( Y ) − H ( Y ∣ X ) IG(Y|X)=H(Y)-H(Y|X) IG(YX)=H(Y)H(YX)

信息增益比

特征的信息增益熵与该特征的信息熵的比值。
g r = I G ( Y ∣ X ) s p l i t E n t r o p y ( x ) 其 中 s p l i t E n t r o p y ( X ) = − ∑ i = 1 n ( ∣ X i ∣ ∣ X ∣ ) l o g 2 ( X i X ) g_r=\frac{IG(Y|X)}{splitEntropy(x)} \\ 其中 \\ splitEntropy(X)=-\sum_{i=1}^n(\frac{|X_i|}{|X|})log_2(\frac{X_i}{X}) gr=splitEntropy(x)IG(YX)splitEntropy(X)=i=1n(XXi)log2(XXi)
选取最大的信息增益率作为分裂属性。

Gini系数

Gini系数是一种与信息熵类似的做特征选择的方式,可以用来数据的不纯度。在CART算法中,基尼不纯度表示一个随机选中的样本在子集中被分错的可能性。基尼不纯度为这个样本被选中的概率乘以它被分错的概率。当一个节点中所有样本都是一个类时,基尼不纯度为零。
假设y的可能取值为{1, 2, …, m},令fi是样本被赋予i的概率,则基尼指数可以通过如下计算:
G i n i ( p ) = ∑ i = 1 n p k ( 1 − p i ) = 1 − ∑ i = 1 n p i 2 Gini(p)=\sum_{i=1}^np_k(1-p_i)=1-\sum_{i=1}^np_i^2 Gini(p)=i=1npk(1pi)=1i=1npi2
CART算法中的基尼指数:在CART(Classification and Regression Tree)算法中利用基尼指数构造二叉决策树。

Gini系数的计算方式如下:
G i n i ( D ) = 1 − ∑ i = 1 n p i 2 Gini(D)=1-\sum_{i=1}^np_i^2 Gini(D)=1i=1npi2
其中,D表示数据集全体样本,pi表示每种类别出现的概率。

取个极端情况,如果数据集中所有的样本都为同一类,那么有p0=1,Gini(D)=0,显然此时数据的不纯度最低,即选择Gini系数较小的作为分类特征

与信息增益类似,我们可以计算基尼系数增益如下表达式:
Δ G i n i ( X ) = G i n i ( D ) − G i n i X ( D ) {\Delta}Gini(X)=Gini(D)-Gini_{X}(D) ΔGini(X)=Gini(D)GiniX(D)
上面式子表述的意思就是,加入特征X以后,数据不纯度减小的程度。在做特征选择的时候,我们可以取ΔGini(X)最大的那个

交叉熵/相对熵

参考一

树剪枝

即在构建树叉时,由于数据中的噪声和离群点,许多分支反映的是训练数据中的异常,而树剪枝则是处理这种过分拟合的数据问题,常用的剪枝方法为先剪枝和后剪枝。后文详细描述。

习题一

1.决策树算法example one

IDsex(A)car type(B)衬衣size©class
1male家用A
2male运动A
3male运动A
4male运动A
5male运动加大A
6male运动加大A
7female运动A
8female运动A
9female运动A
10female豪华A
11male家用B
12male家用加大B
13male家用B
14male豪华加大B
15female豪华B
16female豪华B
17female豪华B
18female豪华B
19female豪华B
20female豪华B

问题

1.计算信息熵及信息熵增益?

2.计算Gini系数?

a. 信息熵与信息增益:
H ( X ) = − ∑ i = 1 n p ( x i ) l o g 2 p ( x i ) H(X)=-\sum_{i=1}^np(x_i)log_{2}p(x_{i}) H(X)=i=1np(xi)log2p(xi)

  • 划分前样本集的总信息熵:
    E = − 0.5 ∗ l o g 2 0.5 − 0.5 ∗ l o g 2 0.5 = 1 E=-0.5*log_20.5-0.5*log_20.5=1 E=0.5log20.50.5log20.5=1
  1. 按照特性sex的信息熵:
    E s e x = f e m a l e = − 4 10 ∗ l o g 2 ( 4 10 ) − 6 10 ∗ l o g 2 ( 6 10 ) = 0.971 E s e x = m a l e = − 4 10 ∗ l o g 2 ( 4 10 ) − 6 10 ∗ l o g 2 ( 6 10 ) = 0.971 E_{sex=female}=-\frac{4}{10}*log_2(\frac{4}{10})-\frac{6}{10}*log_2(\frac{6}{10})=0.971\\ E_{sex=male}=-\frac{4}{10}*log_2(\frac{4}{10})-\frac{6}{10}*log_2(\frac{6}{10})=0.971 Esex=female=104log2(104)106log2(106)=0.971Esex=male=104log2(104)106log2(106)=0.971

则按照sex属性划分样本集的信息增益为:
Δ f e m a l e = E − 10 20 ∗ E s e x = f e m a l e − 10 20 ∗ E s e x = m a l e = 0.029 {\Delta}_{female}=E-\frac{10}{20}*E_{sex=female}-\frac{10}{20}*E_{sex=male}=0.029 Δfemale=E2010Esex=female2010Esex=male=0.029

  1. 按照特征car type的信息熵为;
    E t y p e = 家 用 = − 1 4 ∗ l o g 2 ( 1 4 ) − 3 4 ∗ l o g 2 ( 3 4 ) = 0.811 E t y p e = 运 动 = − 8 8 ∗ l o g 2 ( 8 8 ) − 0 8 ∗ l o g 2 ( 0 8 ) = 0 E t y p e = 豪 华 = − 0 8 ∗ l o g 2 ( 0 8 ) − 8 8 ∗ l o g 2 ( 8 8 ) = 0 E_{type=家用}=-\frac{1}{4}*log_2(\frac{1}{4})-\frac{3}{4}*log_2(\frac{3}{4})=0.811 \\E_{type=运动}=-\frac{8}{8}*log_2(\frac{8}{8})-\frac{0}{8}*log_2(\frac{0}{8})=0 \\E_{type=豪华}=-\frac{0}{8}*log_2(\frac{0}{8})-\frac{8}{8}*log_2(\frac{8}{8})=0 Etype==41log2(41)43log2(43)=0.811Etype==88log2(88)80log2(80)=0Etype==80log2(80)88log2(88)=0

则按照特征car type属性划分则样本信息增益为:
Δ c a r t y p e = E − 4 20 ∗ E t y p e = 家 用 − 8 20 ∗ E t y p e = 运 动 − 8 20 ∗ E t y p e = 豪 华 = 0.8378 {\Delta}_{car type}=E-\frac{4}{20}*E_{type=家用}-\frac{8}{20}*E_{type=运动}-\frac{8}{20}*E_{type=豪华}=0.8378 Δcartype=E204Etype=208Etype=208Etype==0.8378

  1. 按照特征size划分的信息熵为:
    E s z i e = 小 = − 3 5 ∗ l o g 2 ( 3 5 ) − 2 5 ∗ l o g 2 ( 2 5 ) = 0.971 E s z i e = 中 = − 3 7 ∗ l o g 2 ( 3 7 ) − 4 7 ∗ l o g 2 ( 4 7 ) = 0.9852 E s z i e = 大 = − 2 4 ∗ l o g 2 ( 2 4 ) − 2 4 ∗ l o g 2 ( 2 4 ) = 1 E s z i e = 加 大 = − 2 4 ∗ l o g 2 ( 2 4 ) − 2 4 ∗ l o g 2 ( 2 4 ) = 1 E_{szie=小}=-\frac{3}{5}*log_2(\frac{3}{5})-\frac{2}{5}*log_2(\frac{2}{5})=0.971\\ E_{szie=中}=-\frac{3}{7}*log_2(\frac{3}{7})-\frac{4}{7}*log_2(\frac{4}{7})=0.9852\\ E_{szie=大}=-\frac{2}{4}*log_2(\frac{2}{4})-\frac{2}{4}*log_2(\frac{2}{4})=1\\ E_{szie=加大}=-\frac{2}{4}*log_2(\frac{2}{4})-\frac{2}{4}*log_2(\frac{2}{4})=1\\ Eszie==53log2(53)52log2(52)=0.971Eszie==73log2(73)74log2(74)=0.9852Eszie==42log2(42)42log2(42)=1Eszie==42log2(42)42log2(42)=1

则按照特征car type属性划分则样本的信息增益为:
Δ s i z e = E − 5 20 ∗ E s i z e = 小 − 7 20 ∗ E s i z e = 中 − 4 20 ∗ E s i z e = 大 − 4 20 ∗ E s i z e = 加 大 = 0.01243 {\Delta}_{size}=E-\frac{5}{20}*E_{size=小}-\frac{7}{20}*E_{size=中}-\frac{4}{20}*E_{size=大}-\frac{4}{20}*E_{size=加大}=0.01243 Δsize=E205Esize=207Esize=204Esize=204Esize==0.01243
则根据信息熵增益,则选特性car type作为分割第一特征。

  1. 信息增益比

信息增益比为该特征信息增益比与该特征信息熵的比,具体计算公式如上文理论中。此处及下文中都是针对其中一个特征为例说明问题,此处选择具有代表性的特征C说明。

特征C的信息熵增益在上面已经计算出:0.01243

那么特征A的信息熵为:
s p l i t E n t r o p y ( A ) = − ∑ i = 1 n ( ∣ X i ∣ ∣ X ∣ ) l o g 2 ( X i X ) = − 5 20 ∗ l o g 2 ( 5 20 ) − 7 20 ∗ l o g 2 ( 7 20 ) − 4 20 ∗ l o g 2 ( 4 20 ) − 4 20 ∗ l o g 2 ( 4 20 ) = 0.959 splitEntropy(A)=-\sum_{i=1}^n(\frac{|X_i|}{|X|})log_2(\frac{X_i}{X}) \\=-\frac{5}{20}*log_2(\frac{5}{20})-\frac{7}{20}*log_2(\frac{7}{20})-\frac{4}{20}*log_2(\frac{4}{20})-\frac{4}{20}*log_2(\frac{4}{20})=0.959 splitEntropy(A)=i=1n(XXi)log2(XXi)=205log2(205)207log2(207)204log2(204)204log2(204)=0.959
那么特征C的信息增益比为:0.01243/0.959=0.0129。同理可计算其他几个特征的信息增益比。

  1. 根据计算 GINI 公式:
    G i n i ( D ) = 1 − ∑ i = 1 n p i 2 Gini(D)=1-\sum_{i=1}^np_i^2 Gini(D)=1i=1npi2
	1. 整体Gini值:1-(1/2)^2-(1/2)^2 =0.5
	2. ID 每个都不一样,与其他人没有共性,所以GINI=0
	3. 性别 :1-(1/2)^2-(1/2)^2 =0.5 
	4. 家用: 1-(1/4)2-(3/4)2 = 0.375  
	   运动: 1-(0/8)2-(8/8)2 = 0 
	   豪华: 1-(1/8)2-(7/8)2 = 0.218
	   车型GINI=4/20*0.375+8/20*0.218 = 0.16252

多路划分属性统计表:

class衣服种类
加大
A3322
B2422
class车型
家用运行豪华
A181
B307
5. 三种尺码GINI系数:
   小:1-(3/5)2-(2/5)2 = 0.48
   中:1-(3/7)2-(4/7)2 = 0.4898 
   大:1-(2/4)2-(2/4)2 = 0.5 
   加大:1-(2/4)2-(2/4)2 = 0.5 
   
   衬衣GINI:5/20*0.48+7/20*0.4898+4/20*0.5+4/20*0.5 = 0.4914 
    
6.	属性比较:通过上述计算,显然车型不纯度高,更容易划分
习题二 二分类问题数据集
AB类标号
TF+
TT+
TT+
TF-
TT+
FF-
FF-
FF-
TT-
TF-
统计A统计B
A=TA=FB=TB=F
+4031
-3315
信息增益计算
  1. 计算按照属性A和B划分时的信息增益。决策树归纳算法将会选择那个属性?

  2. 计算按照属性A和B划分时GINI指标。决策树归纳算法将会选择那个属性?

  3. 熵和GINI指标在区间 [0,0.5] 都是单调递增,在区间 [0,0.5] 单调递减。有没有可能信息增益和GINI指标增益支持不同的属性?解释你的理由。

  • 信息熵:
    H ( X ) = − ∑ i = 1 n p ( x i ) l o g 2 p ( x i ) H(X)=-\sum_{i=1}^np(x_i)log_{2}p(x_{i}) H(X)=i=1np(xi)log2p(xi)
  1. 划分前样本集的总信息熵:

E = − 0.4 ∗ l o g 2 0.4 − 0.6 ∗ l o g 2 0.6 = 0.971 E=-0.4*log_20.4-0.6*log_20.6=0.971 E=0.4log20.40.6log20.6=0.971

特征A的信息熵为:
E A = T = − 4 7 ∗ l o g 2 ( 4 7 ) − 3 7 ∗ l o g 2 ( 3 7 ) = 0.9852 E A = F = − 0 3 ∗ l o g 2 ( 0 3 ) − 3 3 ∗ l o g 2 ( 3 3 ) = 0 E_{A=T}=-\frac{4}{7}*log_2(\frac{4}{7})-\frac{3}{7}*log_2(\frac{3}{7})=0.9852\\ E_{A=F}=-\frac{0}{3}*log_2(\frac{0}{3})-\frac{3}{3}*log_2(\frac{3}{3})=0 EA=T=74log2(74)73log2(73)=0.9852EA=F=30log2(30)33log2(33)=0
则按照A属性划分样本集的信息熵增益为:
Δ A = E − 7 10 ∗ E A = T − 3 10 ∗ E A = F = 0.2813 {\Delta}_A=E-\frac{7}{10}*E_{A=T}-\frac{3}{10}*E_{A=F}=0.2813 ΔA=E107EA=T103EA=F=0.2813
同理B可得:
Δ B = E − 4 10 ∗ E B = T − 6 10 ∗ E B = F = 0.2565 {\Delta}_B=E-\frac{4}{10}*E_{B=T}-\frac{6}{10}*E_{B=F}=0.2565 ΔB=E104EB=T106EB=F=0.2565
因此决策树归纳算法选A属性.
2. 按照属性A 、B划分样本集:

A指标:
G i n i = 1 − ( 4 10 ) 2 − ( 6 10 ) 2 = 0.48 G i n i A = T = 1 − ( 4 7 ) 2 − ( 3 7 ) 2 = 0.4898 G i n i A = F = 1 − ( 0 3 ) 2 − ( 3 3 ) 2 = 0 Gini=1-(\frac{4}{10})^2-(\frac{6}{10})^2=0.48\\ Gini_{A=T}=1-(\frac{4}{7})^2-(\frac{3}{7})^2=0.4898\\ Gini_{A=F}=1-(\frac{0}{3})^2-(\frac{3}{3})^2=0 Gini=1(104)2(106)2=0.48GiniA=T=1(74)2(73)2=0.4898GiniA=F=1(30)2(33)2=0
则Gini增益为:
E A = G i n i − 7 10 ∗ G i n i A = T − 3 10 ∗ G i n i A = F = 0.1371 E_A=Gini-\frac{7}{10}*Gini_{A=T}-\frac{3}{10}*Gini_{A=F}=0.1371 EA=Gini107GiniA=T103GiniA=F=0.1371
B指标:
G i n i B = T = 1 − ( 3 4 ) 2 − ( 1 4 ) = 0.375 G i n i B = F = 1 − ( 1 6 ) 2 − ( 5 6 ) 2 = 0.2778 Gini_{B=T}=1-(\frac{3}{4})^2-(\frac{1}{4})=0.375\\ Gini_{B=F}=1-(\frac{1}{6})^2-(\frac{5}{6})^2=0.2778 GiniB=T=1(43)2(41)=0.375GiniB=F=1(61)2(65)2=0.2778
则Gini增益为:
E B = G i n i − 4 10 ∗ G i n i B = T − 6 10 ∗ G i n i B = F = 0.1633 E_B=Gini-\frac{4}{10}*Gini_{B=T}-\frac{6}{10}*Gini_{B=F}=0.1633 EB=Gini104GiniB=T106GiniB=F=0.1633
因此决策树算法选择B;

3.信息增益考察的是特征对整个数据贡献,没有到具体的类别上,所以一般只能用来做全局的特征选择
Gini系数是一种与信息熵类似的做特征选择的方式,用来数据的不纯度。在做特征选择的时候,我们可以取ΔGini(X)最大的那个。

习题三:满意度数据描述

 利用满意度调查数据来描述决策树算法。假如天热气不能用了,相关部门维修后,需要对这次修理障碍过程进行回访,然后给出相应评价,满意或者不满意。根据历史数据可以建立满意度预警模型,建模的目的:预测哪些用户会给出不满意的评价。目标变量为二分类变量:满意(记为0)和不满意(记为1)。自变量为障碍类型、障碍原因、修障总时长、最近一个月发生故障的次数、最近一个月不满意次数。简单的数据如下:

客户ID故障原因(A)故障类型(B)修障时长©满意度
0011510.21
00215120
00315141
00425160
00525181
00626200
00736221
00836230
00936241
01036250

其中故障原因和故障类型为离散型变量,分别为原因ID和类型ID。修障时长为连续型变量,单位为小时。满意度中1为不满意、0为满意。

接下来沿着分类特征的选择和树剪枝两条主线,去描述三种决策树算法构造满意度预警模型:
分类特征选择:即该选择故障原因、故障类型、修障时长三个变量中的哪个作为决策树的第一个分类特征。
ID3算法是采用信息熵增益来选择树叉,c4.5算法采用信息熵增益率,CART算法采用Gini指标。此外离散型变量和连续型变量在计算信息增益、增益率、Gini指标时会有些区别。详细描述如下:
1.ID3算法的信息熵增益:
信息增益的思想来源于信息论的香农定理,ID3算法选择具有最高信息增益的自变量作为当前的树叉(树的分支),以满意度预警模型为例,模型有三个自变量:故障原因、故障类型、修障时长。分别计算三个自变量的信息增益,选取其中最大的信息增益作为树叉。信息增益=原信息需求-要按某个自变量划分所需要的信息。

  • 信息熵公式为:
    H ( X ) = − ∑ i = 1 n p ( x i ) l o g 2 p ( x i ) H(X)=-\sum_{i=1}^np(x_i)log_{2}p(x_{i}) H(X)=i=1np(xi)log2p(xi)
  1. 划分前样本总信息熵:
    E = − 0.5 ∗ l o g 2 0.5 − 0.5 ∗ l o g 2 0.5 = 1 E=-0.5*log_20.5-0.5*log_20.5=1 E=0.5log20.50.5log20.5=1

a. 按特征故障原因(A)的信息熵为:
E A = 1 = − 2 3 l o g 2 ( 2 3 ) − 1 3 l o g 2 ( 1 3 ) = 0.9182 E A = 2 = − 2 3 l o g 2 ( 2 3 ) − 1 3 l o g 2 ( 1 3 ) = 0.9182 E A = 3 = − 2 4 l o g 2 ( 2 4 ) − 2 4 l o g 2 ( 2 4 ) = 1 E_{A=1}=-\frac{2}{3}log_{2}(\frac{2}{3})-\frac{1}{3}log_{2}(\frac{1}{3})=0.9182\\ E_{A=2}=-\frac{2}{3}log_{2}(\frac{2}{3})-\frac{1}{3}log_{2}(\frac{1}{3})=0.9182\\ E_{A=3}=-\frac{2}{4}log_{2}(\frac{2}{4})-\frac{2}{4}log_{2}(\frac{2}{4})=1\\ EA=1=32log2(32)31log2(31)=0.9182EA=2=32log2(32)31log2(31)=0.9182EA=3=42log2(42)42log2(42)=1
则特征A的信息熵增益为:
Δ A = E − 6 10 ∗ E A = 1 − 4 10 ∗ E A = 3 = 0.0491 {\Delta}_A=E-\frac{6}{10}*E_{A=1}-\frac{4}{10}*E_{A=3}=0.0491 ΔA=E106EA=1104EA=3=0.0491
b. 按特征故障类型(B)的信息熵为:
E B = 5 = − 3 5 l o g 2 ( 3 5 ) − 2 5 l o g 2 ( 2 5 ) = 0.971 E B = 6 = − 3 5 l o g 2 ( 3 5 ) − 2 5 l o g 2 ( 2 5 ) = 0.971 E_{B=5}=-\frac{3}{5}log_{2}(\frac{3}{5})-\frac{2}{5}log_{2}(\frac{2}{5})=0.971\\ E_{B=6}=-\frac{3}{5}log_{2}(\frac{3}{5})-\frac{2}{5}log_{2}(\frac{2}{5})=0.971 EB=5=53log2(53)52log2(52)=0.971EB=6=53log2(53)52log2(52)=0.971
则特征B的信息熵增益为:
Δ B = E − 5 10 ∗ E B = 5 − 5 10 ∗ E B = 6 = 0.029 {\Delta}_B=E-\frac{5}{10}*E_{B=5}-\frac{5}{10}*E_{B=6}=0.029 ΔB=E105EB=5105EB=6=0.029
c.按特征修障时长©d的信息熵为:
故障原因和故障类型两个变量都是离散型变量,按上述方式即可求得信息增益,但修障时长为连续型变量,对于连续型变量该怎样计算信息增益呢?只需将连续型变量由小到大递增排序,取相邻两个值的中点作为分裂点,然后按照离散型变量计算信息增益的方法计算信息增益,取其中最大的信息增益作为最终的分裂点。如求修障时长的信息增益,首先将修障时长递增排序,即10.2、12、14、16、18、20、22、23、24、25,取相邻两个值的中点,如10.2和12,中点即为(10.2+12)/2=11.1,同理可得其他中点,分别为11.1、13、15、17、19、21、22.5、23.5、24.5。对每个中点都离散化成两个子集,如中点11.1,可以离散化为两个<=11.1和>11.1两个子集,然后按照离散型变量的信息增益计算方式计算其信息增益,如中点11.1的信息增益计算过程如下:
E C &lt; 11.1 = − 1 1 l o g 2 ( 1 1 ) = 0 E C &gt; 11.1 = − 4 9 ∗ l o g 2 ( 4 9 ) − 5 9 ∗ l o g 2 ( 5 9 ) = 0.991 E_{C&lt;11.1}=-\frac{1}{1}log_{2}(\frac{1}{1})=0\\ E_{C&gt;11.1}=-\frac{4}{9}*log_{2}(\frac{4}{9})-\frac{5}{9}*log_{2}(\frac{5}{9})=0.991 EC<11.1=11log2(11)=0EC>11.1=94log2(94)95log2(95)=0.991
则对应的信息熵为:
Δ 11.1 = E − 1 10 ∗ E C &lt; 11.1 − 9 10 ∗ E C &gt; 11.1 = 0.0089 {\Delta}_{11.1}=E-\frac{1}{10}*E_{C&lt;11.1}-\frac{9}{10}*E_{C&gt;11.1}=0.0089 Δ11.1=E101EC<11.1109EC>11.1=0.0089
同理分别求得各个中点的信息增益,选取其中最大的信息增益作为分裂点,如取中点11.1。然后与故障原因和故障类型的信息增益相比较,取最大的信息增益作为第一个树叉的分支,此例中选取了故障原因作为第一个分叉。按照同样的方式继续构造树的分支。

2.C4.5算法增益率:
由于信息增益选择分裂属性的方式会倾向于选择具有大量值的属性(即自变量),如对于客户ID,每个客户ID对应一个满意度,即按此变量划分每个划分都是纯的(即完全的划分,只有属于一个类别),客户ID的信息增益为最大值1。但这种按该自变量的每个值进行分类的方式是没有任何意义的。为了克服这一弊端,有人提出了采用增益率(GainRate)来选择分裂属性。计算方式如下:
g r = I G ( Y ∣ X ) s p l i t E n t r o p y ( x ) 其 中 s p l i t E n t r o p y ( X ) = − ∑ i = 1 n ( ∣ X i ∣ ∣ X ∣ ) l o g 2 ( X i X ) g_r=\frac{IG(Y|X)}{splitEntropy(x)}\\ 其中\\ splitEntropy(X)=-\sum_{i=1}^n(\frac{|X_i|}{|X|})log_2(\frac{X_i}{X}) gr=splitEntropy(x)IG(YX)splitEntropy(X)=i=1n(XXi)log2(XXi)
以特征A举例说明。特征A的信息增益在前面已经算出来:0.0491

那么下面就只需酸楚splitEntropy(X)就可以了。
s p l i t E n t r o p y ( X ) = − 3 10 ∗ l o g 2 ( 3 10 ) − 3 10 ∗ l o g 2 ( 3 10 ) − 4 10 ∗ l o g 2 ( 4 10 ) = 1.571 splitEntropy(X)=-\frac{3}{10}*log_2(\frac{3}{10})-\frac{3}{10}*log_2(\frac{3}{10})-\frac{4}{10}*log_2(\frac{4}{10})=1.571 splitEntropy(X)=103log2(103)103log2(103)104log2(104)=1.571
则特征A的信息增益比为:0.049/1.571=0.031

应用:kaggle竞赛之Titanic

参考
  1. 决策树模型 ID3/C4.5/CART算法比较
  2. 决策树(一)
  3. python人工智能:完整的图片识别(非图片验证码),以及模型的使用
  4. 机器学习笔记十六之基尼系数、CART
  5. 决策树基础
  6. 数据挖掘十大算法之决策树详解(1)
  7. 决策树ID3、C4.5、CART算法:信息熵,区别,剪枝理论总结
  8. 决策树信息增益率解决信息增益bug
  9. 信息熵、条件熵、联合熵、互信息、相对熵、交叉熵
  10. 详解机器学习中的熵、条件熵、相对熵、交叉熵
  11. 一文搞懂交叉熵在机器学习中的使用,透彻理解交叉熵背后的直觉
  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值