2014-06-24 38 views
0

我有一個關於計算分裂的熵的基本問題。Entropie(信息論)計算

假設我有一套2班,是和否。在這一集我有3個樣品是和2個樣品

號如果我計算出這一套我獲得的熵:

-(2/5)*(log(2/5)/log(2))-(3/5)*(log(3/5)/log(2))=0.9710 

現在,這讓我感到困惑。如果熵是零,我將只有一個類的樣本。如果熵是0.5(2類),我有50%是和50%沒有樣本。接近1的值告訴我現在究竟是什麼?

請指點,我覺得我在這裏看不到明顯的東西,但是我不明白熵何時可以達到1?

回答

0

在一個二元的例子中,如果你的系統的熵如果完全分配給每個可能的結果(10個樣本,5個yes,5個no),它將接近1。離這個均勻分佈越近,越接近於0.您可以在wikipedia上看到二元熵圖。

更具體地說,熵和的完美分佈是log2(numClasses)。因此,對於2 == log2(2)== 1.

0

由於二項分佈中成功概率爲50%的觀測值接近無窮大,因此熵值爲1。

例如,

c <- rbinom(100000,1,0.5) 
freqsC <- table(c)/length(c) 
entropyC <- -sum(freqsC * log2(freqsC)) 
entropyC 
[1] 0.9999885 

這與100000個觀測熵值。

這裏是具有100000000個觀察值的熵值。

f <- rbinom(100000000,1,0.5) 
freqsF <- table(f)/length(f) 
entropyF <- -sum(freqsF * log2(freqsF)) 
entropyF 
[1] 1 

這實際上是0.999999969120836但R已適時提供它作爲1

希望它能幫助。