信息熵爲何要定義成-Σp*log(p)?git
在解釋信息熵以前,須要先來講說什麼是信息量。算法
信息量是對信息的度量,單位通常用bit。機器學習
信息論之父克勞德·艾爾伍德·香農(Claude Elwood Shannon )對信息量的定義以下:函數
在解釋這個公式以前,先看看下面的例子。學習
好比一個黑箱裏有2個蘋果,8個橙子咱們把從黑箱裏取蘋果、橙子當作是一個隨機過程,X={蘋果,橙子}。編碼
當咱們瞭解到拿出來的是什麼的時候,咱們就接受到了信息,這個信息的信息量的大小與這個東西出現的機率有關,這裏蘋果是0.2,橙子是0.8。越小几率的事情發生,其產生的信息量越大,好比我瞭解到拿出來的是一個蘋果所得到的信息量比一個橙子的信息量要大的多。blog
至於爲何越小几率的事情發生,其產生的信息量越大,能夠這樣理解,在考慮信息傳輸的過程當中,如何對消息序列進行合理的編碼轉換成信號序列,才能夠節省信道容量?
以英語舉例,在電報通訊中,要傳送的消息由字符序列組成(好比摩爾斯電碼,每一個摩爾斯電碼符號由一系列點和破折號組成)。
若是最多見的英文字母 E 使用最短的信道符號「一個點」來表示;而出現較少的 Q,X,Z 等則使用更多的點和破折號來表示,則能夠最大程度上節省信道容量,也就是說一樣的一句消息,採用此策略來編碼,其傳輸須要的時間會更少,而事實上的電報通訊中,正是這麼作的。
那麼這裏的字母E因爲出現機率最大,因此用了一個點來表示,其信息量相對最小。事件
因此若是咱們要尋找一個函數來定義信息,則該函數要知足以下條件:數學
要符合隨着機率的增大而減少的形式;it
函數的值不能爲負數,由於信息量最小爲0。
帶負號的對數函數顯然符合以上要求,固然,確定有其餘函數也會符合以上要求,對此,香農在《A Mathematical Theory of Communication》(通訊的數學理論)這篇論文中有說明選擇對數函數的緣由:
大意是說:
若是集合中的消息的數量是有限的,並且每條消息被選擇的可能性相等,那麼這個消息數或者任意這個消息數的單調函數能夠用來作爲從集合選擇一條消息時產生的信息量的度量。而最天然的選擇是對數函數。
關於對數函數更便捷的緣由,論文中給出了3點:
那麼,爲何選擇2爲底的對數呢,論文中的解釋是這樣的:
大體意思是說選擇什麼爲底與用什麼單位來度量信息是對應的。採用2爲底就是用2進制位,英文:binary digit(香農聽了J. W. Tukey的建議,將binary digit簡稱爲bit,bit這個詞今後問世)。採用10爲底就是用10進制位,而在遇到一些積分和微分的分析中,用e爲底有時會頗有用,這個時候的信息單位稱爲天然單位。
我的理解就是這裏用什麼爲底均可以,畢竟單位之間能夠轉換,可是爲了計算方便,若是你使用二進制數字來存儲信息,仍是用2爲底更便捷。好比一開始郵件分類的例子中,有{無聊時閱讀的郵件、需及時處理的郵件、無需閱讀的郵件}三種,在1000封郵件中,每一個類別出現的機率分別是1/2,1/4,1/4。
如今打算用二進制位表示分類,那麼就直接能夠計算出來各個類別的信息量,也就是各個類別至少須要幾個二進制位來表示:
無聊時閱讀的郵件:-log2 (1/2) = 1,因此用1個二進制位能夠表示;
需及時處理的郵件:-log2 (1/4) = 2,因此用2個二進制位能夠表示;
無需閱讀的郵件:-log2 (1/4) = 2,因此用2個二進制位能夠表示。
那麼你可能要問了,雖然計算結果是這樣,可是怎麼理解呢?
從直覺上理解就是,出現機率越大,信息量越少,好比明天太陽從東邊升起,和明天太陽從西邊升起,後者的信息量更大是符合直覺判斷的;
從存儲的角度來理解,對於那些出現機率越大的變量,用越少的位編碼的話,就能夠節省出越大的空間。
說完了信息量,咱們來看看什麼是信息熵。
信息量是表達某個事件須要的二進制位數,好比「某個郵件屬於需及時處理的郵件」就是一個事件,而全部可能產生的信息量的指望值被定義爲信息熵。
根據機率和統計學中對指望值的定義:指望值是指在一個離散性隨機變量試驗中每次可能結果的機率乘以其結果的總和。能夠獲得信息熵的公式以下:
這裏可能結果的機率是某個分類出現的機率,結果是某個分類產生的信息量,其中的log通常以2爲底。
能夠看出,某個數據集中包含的分類越多,信息熵就越大,而包含分類多,說明這個數據集越混亂,越不純。
所以,在一些機器學習算法好比ID3決策樹中就經常使用信息熵來量化數據集的純度,以選擇出更好的特徵來劃分數據,讓劃分出的數據子集愈來愈純,最終就能夠根據多數表決來決定葉子節點的分類,從而構建出完整的分類決策樹。
ok,本篇就這麼多內容啦~,感謝閱讀O(∩_∩)O。