熵与信息增益
在决策树算法中,决定特征优先级时,须要用到熵的概念,先挖个坑python
1 信息量
信息量是用来衡量一个事件的不肯定性的;一个事件发生的几率越大,不肯定性越小,则它所携带的信息量就越小。算法
假设X是一个离散型随机变量,其取值集合为XX,几率分布函数为p(x)=Pr(X=x),x∈Xp(x)=Pr(X=x),x∈X,咱们定义事件X=x0X=x0的信息量为:
markdown
I(x0)=−log(p(x0))I(x0)=−log(p(x0))
当
p(x0)=1p(x0)=1时,熵将等于0,也就是说该事件的发生不会致使任何信息量的增长。
举个例子,小明考试常常不及格,而小王则常常得满分,因此咱们能够作以下假设:
事件A:小明考试及格
几率为机器学习
P(xA)=0.1P(xA)=0.1
信息量为
I(xA)=−log(0.1)=3.3219I(xA)=−log(0.1)=3.3219
事件B:小王考试及格
几率为
P(xB)=0.999P(xB)=0.999
信息量为
I(xB)=−log(0.999)=0.0014I(xB)=−log(0.999)=0.0014
能够看出:小明及格的可能性很低(10次考试只有1次及格),所以若是某次考试及格了(你们都会说:XXX居然及格了!),必然会引入较大的信息量,对应的I值也较高;而对于小王而言,考试及格是大几率事件,在事件B发生前,你们广泛认为事件B的发生几乎是肯定的,所以当某次考试小王及格这个事件发生时并不会引入太多的信息量,相应的I值也很是的低。
这跟《黑天鹅》一书中强调的“黑天鹅事件每每有重大影响”有殊途同归之妙。ide
2 熵
熵是用来衡量一个系统的混乱程度的,表明一个系统中信息量的总和;信息量总和越大,代表这个系统不肯定性就越大。函数
假设小明的考试结果是一个0-1分布XAXA只有两个取值{0:不及格,1:及格}。那么在某次考试结果公布前,根据先验知识,小明及格的几率仅有10%,其他90%的可能都是不及格的。学习
在上面章节,咱们能够分别获得小明和小王考试及格对应的信息量。
而若是咱们想要进一步度量小明考试结果的不肯定度,就要借助于熵的概念。编码
信息量用来衡量一个事件的不肯定度,熵则用来衡量一个系统(也就是全部事件)的不肯定度。atom
那如何度量系统中全部事件的不肯定度?指望。spa
咱们对全部可能事件所带来的信息量求指望,其结果就能衡量小明考试的不肯定度:
HA(x)=−[p(xA)log(p(xA))+(1−p(xA))log(1−p(xA))]=0.4690HA(x)=−[p(xA)log(p(xA))+(1−p(xA))log(1−p(xA))]=0.4690
与之对应地,小王的熵:
HB(x)=−[p(xB)log(p(xB))+(1−p(xB))log(1−p(xB))]=0.0114HB(x)=−[p(xB)log(p(xB))+(1−p(xB))log(1−p(xB))]=0.0114
虽然小明考试结果的不肯定度较低,毕竟十次有9次都不及格;可是小王考试结果的不肯定度更低,1000次考试只有1次不及格的机会,结果至关的肯定。
再假设一个成绩相对普通的学生小东,他及格的几率是P(xC)=0.5P(xC)=0.5,即及格与否的几率是同样的,对应的熵:
HC(x)=−[p(xC)log(p(xC))+(1−p(xC))log(1−p(xC))]=1HC(x)=−[p(xC)log(p(xC))+(1−p(xC))log(1−p(xC))]=1
小东考试结果的不肯定度比前边两位同窗要高不少,在成绩公布以前,很难准确猜想出他的考试结果。
从上面能够看出,熵是信息量的指望值,它是一个随机变量的肯定性的度量。
熵越大,变量的取值越不肯定;反之,熵越小,变量取值就越肯定。
对于一个随机变量X,它全部可能取值的信息量的指望E[I(x)]E[I(x)]就称为熵。
X的熵定义为:
H(X)=Eplog1p(x)=−∑x∈Xp(x)logp(x)H(X)=Eplog1p(x)=−∑x∈Xp(x)logp(x)
若是p(x)p(x)是连续型随机变量的p(df)p(df),则熵定义为:
H(X)=−∫x∈Xp(x)logp(x)dxH(X)=−∫x∈Xp(x)logp(x)dx
为了保证有效性,这里约定当p(x)→0p(x)→0时,有p(x)logp(x)→0p(x)logp(x)→0
假如X为0-1分布,当两种取值的可能性相等时(p=0.5),不肯定度最大(此时没有任何先验知识);当p=0或1时,熵为0,即此时X彻底肯定。
熵与几率p的关系以下图:

注:熵的单位随着公式中log运算的底数而变化,当底数为2时,单位为“比特”(bit),底数为e时,单位为“奈特”。
3 条件熵
在随机变量X发生的前提下,随机变量Y发生所新带来的熵定义为Y的条件熵,用H(Y|X)H(Y|X)表示,用来衡量在已知随机变量X的条件下随机变量Y的不肯定性。
若是这样说显得空洞,那么能够进行转换:
H(Y|X)=H(X,Y)–H(X)H(Y|X)=H(X,Y)–H(X)
上式表示(X,Y)发生所包含的熵减去X单独发生包含的熵。推导以下:

4 相对熵
相对熵(relative entropy)又称为KL散度(Kullback-Leibler divergence),KL距离,是两个随机分布间距离的度量。
记为DKL(p||q)DKL(p||q),它度量当真实分布为p时,假设分布q的无效性。
DKL(p||q)=Ep[logp(x)q(x)]=∑x∈χp(x)logp(x)q(x)DKL(p||q)=Ep[logp(x)q(x)]=∑x∈χp(x)logp(x)q(x)
=∑x∈χ[p(x)logp(x)−p(x)logq(x)]=∑x∈χ[p(x)logp(x)−p(x)logq(x)]
=∑x∈χp(x)logp(x)−∑x∈χp(x)logq(x)=∑x∈χp(x)logp(x)−∑x∈χp(x)logq(x)
=−H(p)−∑x∈χp(x)logq(x)=−H(p)−∑x∈χp(x)logq(x)
=−H(p)+Ep[−logq(x)]=−H(p)+Ep[−logq(x)]
=Hp(q)−H(p)=Hp(q)−H(p)
而且为了保证连续性,作以下约定:
0log00=0,0log0q=0,plogp0=∞0log00=0,0log0q=0,plogp0=∞
显然,当p=q时,二者之间的相对熵DKL(p||q)=0DKL(p||q)=0
上式最后的Hp(q)表示在p分布下,使用q进行编码须要的bit数,而H(p)表示对真实分布p所须要的最小编码bit数。
基于此,相对熵的意义就很明确了:DKL(p||q)DKL(p||q)表示在真实分布为p的前提下,使用q分布进行编码相对于使用真实分布p进行编码(即最优编码)所多出来的bit数。
5 交叉熵
交叉熵容易跟相对熵搞混,两者有所区别。
假设有两个分布p,q,它们在给定样本集上的交叉熵定义以下:
CEH(p,q)=Ep[−logq]=−∑x∈χp(x)logq(x)=H(p)+DKL(p||q)CEH(p,q)=Ep[−logq]=−∑x∈χp(x)logq(x)=H(p)+DKL(p||q)
能够看出,交叉熵与相对熵仅相差了H(p),当p已知时,能够把H(p)看作一个常数,此时交叉熵与KL距离在行为上是等价的,都反映了分布p,q的类似程度。
最小化交叉熵等于最小化KL距离。它们都将在p=q时取得最小值H(p)(由于p=q时KL距离为0,所以有的工程文献中将最小化KL距离的方法称为Principle of Minimum Cross-Entropy (MCE)或Minxent方法)。
在logistic regression中,
p:真实样本分布,服从参数为p的0-1分布,即X∼B(1,p)
q:待估计的模型,服从参数为q的0-1分布,即X∼B(1,q)
二者的交叉熵为:
CEH(p,q)=−∑x∈χp(x)logq(x)CEH(p,q)=−∑x∈χp(x)logq(x)
=−[Pp(x=1)logPq(x=1)+Pp(x=0)logPq(x=0)]=−[Pp(x=1)logPq(x=1)+Pp(x=0)logPq(x=0)]
=−[plogq+(1−p)log(1−q)]=−[plogq+(1−p)log(1−q)]
=−[yloghθ(x)+(1−y)log(1−hθ(x))]=−[yloghθ(x)+(1−y)log(1−hθ(x))]
对全部训练样本取均值得:
−1m∑im=1m[y(i)loghθ(x(i))+(1−y(i))log(1−hθ(x(i)))]−1m∑im=1m[y(i)loghθ(x(i))+(1−y(i))log(1−hθ(x(i)))]
这个结果与经过最大似然估计方法求出来的结果一致。
6 信息增益
在决策树ID3算法中,使用信息增益来选择最佳的特征做为决策点。
信息增益表示得知特征X的信息而使得类Y的信息不肯定性减小的程度,即用来衡量特征X区分数据集的能力。
当新增一个属性X时,信息熵H(Y)H(Y)的变化大小即为信息增益。 I(Y|X)I(Y|X)越大表示X越重要。
I(Y|X)=H(Y)−H(Y|X)I(Y|X)=H(Y)−H(Y|X)
7 互信息
两个随机变量X,Y的互信息定义为X,Y的联合分布和各自独立分布乘积的相对熵,用I(X,Y)表示:

而通常来讲,熵H(Y)H(Y)与条件熵H(Y|X)H(Y|X)之差称为互信息。推导以下:

因此在决策树算法中,信息增益等价于训练数据集中类和特征的互信息。
8
在决策树C4.5算法中,使用信息增益比来选择最佳的特征做为决策点。
特征A对训练数据集D的信息增益比gR(D|A)gR(D|A)定义为信息增益I(D|A)I(D|A)与训练数据集D关于特征A的熵HA(D)HA(D)之比:
gR(D|A)=I(D|A)HA(D)gR(D|A)=I(D|A)HA(D)
这之中
HA(D)=−∑i=1n|Di||D|log2|Di||D|,n是特征A的取值个数HA(D)=−∑i=1n|Di||D|log2|Di||D|,n是特征A的取值个数
本篇博客主要参考自:
《信息量、熵、最大熵、联合熵、条件熵、相对熵、互信息》
《交叉熵(Cross-Entropy) 》
《最大熵模型中的数学推导》
《咱们为何须要信息增益比,而不是信息增益? 》