熵Entorpy和信息增益InformationGain

本文内容是机器学习中决策树的基础知识,当然如果你有兴趣了解并且具备简单的概率知识,也可以看懂,不妨先看看能赢100元的小球问题。阅读本文共需10秒或十分钟或n小时?

包括以下内容

  • 什么是熵
  • 熵的计算方法
  • 熵的范围
  • 什么是IG
  • IG的计算方法

从小球问题开始

做个游戏,用时半分钟,获胜可得100元钱。三个盒子,初始设置如下图所示,box1中4红,box2中3红1蓝,box3中2红2蓝
游戏规则:随机取出并放回小球四次
获胜条件:取出的组合恰好等于小球的初始设置。
求获胜概率是多少?
如:
四红球,全部抽中红球的概率;
3红1蓝的组合中,抽4次,抽出3红1蓝的概率(顺序不重要)

先只看左侧三列

我们所求的结果就是上图中的Pwinning列。三种情况的结果分别是1、0.105、0.0625。你算对了么?

问题来了,当我们有很多的小球(成千上万)时,计算概率将会非常困难,因为一堆小数相乘结果就太小了。所以我们用高级一点的方法,用概率p的负对数(底为2),上图蓝色Pwinning列,再求一下平均值,看下结果,是不是直观多了。熵Entropy和概率P似乎成反比,出现的概率越小熵越大,一定出现的组合E4red=0
使用计算器,如在python中,log要调用math包

#python
import math
math.log(8,2) #这个就是log2底8,底数写后面

我们当前使用的熵定义为:以我们赢得游戏的概率的负对数的平均值。

目前的熵Entropy公式

你也许会疑惑,怎么忽然变成系数p1和p2了?其实他们的用处就相当于上面的案例中求均值用到的权重。我们看上图1中3红1蓝行的最后一列0.81,计算过程如下

3/4*0.415+1/4*2=0.81125

quiz:计算5红3蓝的熵

计算5红3蓝的熵

红球出现的概率是5/8,蓝球出现的概率是3/8,对两个负对数取平均值,就是上面的0.9544


拓展到m和n来表示概率P

再考虑到可能不止两种情况,更进一步拓展到多分类,于是我们可以计算任意数量n组合的熵


这才是正儿八经的熵公式,其实和之前的也差不多

Quiz:三种情况的分类熵计算,8红3蓝2黄求熵?

-8/13*math.log(8/13,2)-3/13*math.log(3/13,2)-2/13*math.log(2/13,2)
1.3346791410515946

熵的取值范围?

当所有元素都相同时,熵最小,当所有元素都彼此不同,熵最大
例如,4球4色,每一种的概率为0.25,代入上面的公式,经过计算此时最大熵为2;5球5色,E=2.3219

所以熵的范围=[0,logN]

  • 0:所有元素都具有相同的情况;
  • logN,共有N个元素,所有元素均不相同

到这里都没放弃,那你已经会计算熵了,我们向下推进。当我们把4红4蓝8个小球分开(此时混在一起的状态我们称它为父节点,父节点的熵是多少?Eparent=1),我们根据颜色分成两个子组, 组child_A 4红,组child_B 4蓝,此时每一子组的熵是多少?Echild_A=Echild_B=0.
可以看到,小球根据 颜色 分开,从充分混合的一组4红4蓝,变成了颜色统一的两组。这一过程熵从1变成0。颜色就是十分有用的信息。熵的变化Change in Entropy就是信息增益Information Gain

信息增益information Gain

informationGain=Change in Entropy
可以简单地理解为信息产生的价值,体现在熵产生了变化,当熵从一个较大值变成一个较小值,那中间的过程就是有价值的。

  • 完全没价值IG=0
  • 有价值IG>0
IG公式

Eparent-Echild(就是公式中[]内的内容,每个子节点熵的加权平均值)

举个例子:下图是的性别、职业、下载软件的数据,根据那个条件预测下载软件更合理?性别还是职业?


父节点的熵Eparent=1.46
子节点熵Echlid=0.92,按性别划分IG=0.54
根据职业信息增益IGocc=1

如果按occupation职业划分,则IG=1,是非常有效的划分方法


IG的取值范围?自己想想看

IG最小值,我们知道,当划分的信息完全没有产生作用,完全没有价值,此时的IG=0,所以最小值是已知的。
IG的最大值,根据上面的公式我们可以知道,当Ep最大,并且Echild的加权平均数最小,这就是IG的最大值。已知Echild最小就是0,那剩下的问题就是Ep最大。问题就变成了熵的最大值,也就是logN。

Quiz:求下图中职业的信息增益IGocc


quiz

数量:Np=5 Nw=3 Ns=3
概率:Pp=5/11 Pw=3/11 Ps=3/11
数量:Nstudy=4 Nwork=7
Nstudy_pok=4 Nwork_whats=3 Nwork_sn=3 Nwork_pg=1
概率:Pww=3/7 Pws=3/7 Pwp=1/7 Pstudy=4/11 Pwork=7/11

Eparent = -Pp*math.log(Pp,2)-Pw*math.log(Pw,2)-Ps*math.log(Ps,2)=1.539
Estudy = 0 # 因为全是pok
Ework = -Pww*math.log(Pww,2)-Pws*math.log(Pws,2)-Pwp*math.log(Pwp,2)=1.449

### 注意此处的Pstudy和Pwork是子节点的权重,为了求子节点的加权平均值
IG=Eparent-(Pstudy*Estudy+ Pwork*Ework)=1.539-(4/11*0+7/11*1.449)=0.617

此题总结一下,计算IG的方法:

  1. 要有两个层级的熵,父节点 和 子节点
  2. 子节点的熵的平均值权重要注意,m/(m+n)。Pstudy=4/(4+3+3+1)=4/11,Pwork=(3+3+1)/(3+3+1+4)=7/11

全文总结

决策树进行决策的一种依据是信息增益IG,而IG的计算离不开熵Entropy。熵就是用来描述组合混乱程度的概率P的升级版(案例:小球)。就是这样的环环相扣,用来帮助决策树最终做出决策。

Quiz for Maximizing Information Gain

For the following quiz, consider the data found in this file, consisting of twenty-four made-up insects measured on their length and color.

哪种分割为区分Mobugs和Lobugs提供了最高的IG?

最高的IG值是多少?

你可能感兴趣的:(熵Entorpy和信息增益InformationGain)