熵與信息增益
在決策樹算法中,決定特徵優先級時,須要用到熵的概念,先挖個坑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) 》
《最大熵模型中的數學推導》
《咱們爲何須要信息增益比,而不是信息增益? 》