機器學習入門 12-2 信息熵

2021-02-23 AI機器學習與深度學習算法
前言

上一小節介紹了什麼是決策樹以及如何通過決策樹來進行具體的分類。構造決策樹的時候,每個節點其實都是一個判斷條件,為了得到這個判斷條件我們需要知道兩個信息:

當確定某個維度之後,具體要在這個維度上的哪個值上進行劃分?

這些信息該如何確定呢?本小節首先介紹一種方式:信息熵。

什麼是信息熵?

信息熵是資訊理論中的一個基礎概念 (資訊理論是一個專門的領域)。信息熵表示的是隨機變量的不確定度,簡單來說,

數據不確定性越高 (或越隨機),相對應數據的信息熵就越大;數據不確定性越低 (或越確定),相對應數據的信息熵就越小;

熵是從物理熱力學中引申出來的概念:

熵越大,熱力系統中的粒子無規則的運動越劇烈,粒子的狀態不確定性越高;熵越小,熱力系統中的粒子越傾向於靜止狀態,粒子的狀態確定性越高;」

信息熵的概念可能有點抽象,接下來使用具體的例子來看一下,信息熵代表隨機變量不確定度的度量具體是什麼意思。信息熵的計算公式如下 (由資訊理論之父 C. E. Shannon 提出)。

對於一個系統來說一共有

信息熵的計算公式中有一個負號,這是因為 「因此在計算信息熵的公式中添加一個負號是為了將信息熵 。此處的

下面來舉幾個例子。

有一個三個類別的數據集

現在可以比較兩組數據的信息熵,數據集

考慮更極端的情況,有一個三個類別的數據集

此時的信息熵為 0,通過計算信息熵的公式了解了信息熵為正數,因此 0 是信息熵所能取到的最小值。信息熵最小,說明不確定性越低,換句話說,系統是最確定的,因為所有數據都在第一個類別中,沒有任何的不確定性。

繪製兩個類別的信息熵

接下來以兩個類別為例,通過具體的編程實現繪製計算信息熵公式的函數圖像。對於兩個類別來說,如果其中一類別的比例為

接下來使用 matplotlib 模塊繪製兩個類別的信息熵函數圖像。

In[1]: # 導入相應的模塊
       import numpy as np
       import matplotlib.pyplot as plt

構建計算兩個類別信息熵的函數,使用 np.log 是因為希望這個函數接收的參數

In[2]: def entropy(p):
           return -p * np.log(p) - (1-p) * np.log(1-p)

為了繪製出不同

In[3]: p = np.linspace(0.01, 0.99, 200)

接下來就可以繪製函數圖像了。

In[4]: plt.plot(p, entropy(p))
       plt.show()

最終繪製出來的曲線呈現拋物線的樣子,並且曲線整體以

「根據繪製出來的曲線可以看出無論

此時繪製的信息熵曲線假設系統中只有兩個類別,如果系統中有三個類別的話,繪製出來的信息熵函數就是一個立體的曲面。通過繪製兩個類別的信息熵曲線可以進一步理解為什麼信息熵是系統的一個不確定性的度量。

當系統中每一個類別都是等概率的時候,不確定性最高,此時計算出來的信息熵值最大;當系統偏向於某一個類別,相當於有了一定程度的確定性,信息熵會逐漸降低,直到系統整體都在某一個類別中

當然這個結論不僅適用於兩個類別,同樣可以拓展到多類別。

小結

通過前面的介紹理解了信息熵的概念,接下來回到前言中提到的兩個問題,在每一個節點上都希望在某一個維度上基於某一個閾值進行劃分。「劃分之後要做的事情就是讓我們的數據分成兩個部分之後,相應的系統整體的信息熵降低,換句話說讓整個系統變得更加的確定。」

極端情況下,比如對於上圖中的 A B C 三個葉子節點,如果每個葉子節點中的數據都只屬於對應類別的話:A 葉子節點中只有類別 a 的數據,B 葉子節點中只有類別 b 的數據,C 葉子節點中只有類別 c 的數據,那麼此時的整個系統信息熵為 0。

接下來的任務就是要找到每一個節點上某一個維度上的某一個取值,根據這個維度上的這個取值對數據進行劃分以後的信息熵是所有其它劃分方式得到的信息熵中的最小值,稱這樣的劃分是當前最好的劃分方式。

References:

Python3入門機器學習 經典算法與應用: https://coding.imooc.com/class/chapter/169.html#Anchor

【機器學習入門筆記】11-8 RBF核函數中的gamma

【機器學習入門筆記】11-9 SVM思想解決回歸問題

【機器學習入門筆記】12-1 什麼是決策樹?

【PyTorch入門筆記】PyTorch入門筆記-改變張量的形狀

相關焦點

  • 機器學習入門 12-3 使用信息熵尋找最優劃分
    右分支的信息熵為 0.69,信息熵的值比較大,並且還沒有達到劃分最大的深度,可以繼續進行劃分。由於右分支的信息熵為 0.69,因此可以繼續進行劃分,將右分支的全部數據傳入 try_split 函數中,try_split 函數返回結果存入 best_entropy2、best_d2 和 best_v2 三個變量中。
  • 機器學習中各種熵的定義及理解
    字 14 圖預計閱讀時間: 7 分鐘機器學習領域有一個十分有魅力的詞:熵。在機器學習領域中,量化與隨機事件相關的預期信息量以及量化概率分布之間的相似性是常見的問題。針對這類問題,利用香農熵以及衍生的其他熵概念去度量概率分布的信息量是個很好的解決方案。本文會儘可能用簡單的描述分享自己對各種熵的定義及理解,歡迎交流討論。1. 自信息自信息又稱信息量。「陳羽凡吸毒?!工作室不是剛闢謠了嗎?哇!
  • 通俗理解信息熵
    本文轉載自:自然語言處理與機器學習供稿人:憶臻決策樹算法中,在特徵的選擇過程,我們會使用到信息增益的概念。
  • GitHub | 機器學習&深度學習&nlp&cv從入門到深入全套資源分享
    | 深入理解Alexnet一文讀懂VGG網絡Inception V1,V2,V3,V4 模型總結ResNet解析一文簡述ResNet及其多種變體CapsNet入門系列CapsNet入門系列之一:膠囊網絡背後的直覺CapsNet入門系列之二:膠囊如何工作CapsNet入門系列之三:囊間動態路由算法
  • 乾貨分享 | 機器學習、深度學習、nlp、cv從入門到深入全套資源分享
    | 深入理解Alexnet一文讀懂VGG網絡Inception V1,V2,V3,V4 模型總結ResNet解析一文簡述ResNet及其多種變體CapsNet入門系列CapsNet入門系列之一:膠囊網絡背後的直覺CapsNet入門系列之二:膠囊如何工作CapsNet入門系列之三:囊間動態路由算法
  • 機器學習入門之 HelloWorld
    作者 | 陳貽東,騰訊移動客戶端開發工程師初學機器學習,寫篇文章mark一下,希望能為將入坑者解點惑。
  • 機器學習入門之決策樹1
    (關於為啥信息熵是這個表達式,不在此詳細討論,後續有專有視頻)至此,我們現在有了一個可以描述信息量的工具——信息熵。在機器學習中,信息熵是度量樣本集合純度最常用的指標。所以在機器學習中,我們提到信息熵,其實就是在描述一個數據集的純度。純度和信息量其實是一類概念,不同說法而已。
  • 機器學習最常用的損失函數之交叉熵
    假設X是一個離散型隨機變量,其取值集合為X,概率分布函數為p(x)=Pr(X=x),x∈X,我們定義事件X=x0的信息量為: I(x0)=−log(p(x0)),可以理解為,一個事件發生的概率越大,則它所攜帶的信息量就越小,而當p(x0)=1時,熵將等於0,也就是說該事件的發生不會導致任何信息量的增加。
  • 機器學習小知識: 圖解熵、交叉熵和 KL-散度
    首先,本文指的熵是指信息熵。想要明白熵的確切含義,先讓我們了解一下資訊理論的一些基礎知識。在這個數字時代,信息由位(即比特,由 0 和 1)組成。在通信時,有些位是有用的,有些是冗餘的,有些是錯誤,依此類推。當我們傳達信息時,我們希望向收件人發送儘可能多的有用信息。
  • 機器學習入門
    機器學習理論主要是設計和分析一些讓計算機可以自動「學習」的算法。機器學習算法是一類從數據中自動分析獲得規律,並利用規律對未知數據進行預測的算法。因為學習算法中涉及了大量的統計學理論,機器學習與統計推斷學聯繫尤為密切,也被稱為統計學習理論。算法設計方面,機器學習理論關注可以實現的,行之有效的學習算法。
  • 機器學習入門 12-7 決策樹的局限性
    右子節點中的兩個樣本點全是藍色類別,所以右子節點的信息熵(或基尼係數)都為 0,不需要進一步劃分。而左子節點中的兩個樣本點,一個為紅色類別一個為藍色類別,可以繼續劃分。為了方便敘述,將最左側和最右側的劃分標為 1 和 2。
  • 一文讀懂機器學習!
    2.2 回歸回歸簡單的說就是一個 由果索因 的過程。這是機器學習中很常用的一個手段。回歸分為:1. 線性回歸2. 非線性回歸實際使用那種回歸模型,需要根據情況而定。2.2.4 交叉熵在了解交叉熵之前,先了解一下什麼是信息熵?首先看兩個相關公式。信息量公式:沒錯,通過對一種情況發生的先驗概率進行對數計算的結果,被用來表徵這種事件發生的信息量。信息熵公式:就是將所有事件的信息熵進行加和。這個值越大,表明對於預測一個事件而言的不確定性就越大。
  • 什麼是信息?什麼是信息熵?
    信息,是用於消除不確定性的東西(資訊理論中關於信息的定義)。信息,是提供決策的有效數據(經濟學管理學領域的常用定義)。顯然,以上定義有明顯的區別。先拋開最不嚴謹的第1條,來簡單分析以上定義的區別與聯繫。第2條和第3條近似,兩者定義的信息所涵蓋的內容廣泛,概括性和普適性強,可以理解為「廣義的信息」。
  • 信息熵≠信息量 輕鬆讀懂什麼是信息熵
    客戶2:五一佳節,我公司休息五天,如有急事給我打電話,祝節日快樂。請問,你認為哪條消息的信息量更大?許多人會說,當然是第二條,因為第一條是什麼玩意兒,亂碼嗎?不是人話呀!但是,第二條只是你認為相對第一條更有意義,只是因為你看得懂,而並非信息量更大。
  • 機器學習中決策樹的原理與算法 | 科普
    我們知道,在機器學習中有兩類十分重要的問題,一類是分類問題,一類是回歸問題。我們今天所要探討的就是在分類和回歸問題中所用到的一種非常基本的方法,叫決策樹。決策樹也是重要的標籤學習方法。這篇文章裡面的部分內容來自於 AI 慕課學院的《機器學習理論與實戰高級特訓班》課程筆記。
  • 機器學習入門線路
    ML表示機器學習,DEV表示開發,本專欄旨在為大家分享作為算法工程師的工作,機器學習生態下的有關模型方法和技術,從數據生產到模型部署維護監控全流程,預備知識、理論、技術、經驗等都會涉及,近期內容以入門線路為主,敬請期待!往期回顧:之前寫了有關計算機開發能力和數學能力的入門,在已有一定開發和數學基礎的前提下,大家可以慢慢開展機器學習方面的學習。
  • 軟核科普:什麼是信息熵?
    而我所要講的信息熵和這個熱力學上的熵本質上並不是一個東西,但有一點聯繫,(就一點)通俗來講:熵就是用來衡量物質的混亂程度,(我高中化學老師就是這麼跟我說的)而在資訊理論上來講,熵是對信息量大小的度量,而什麼又是『信息量』呢?
  • 你是否有過疑問:為啥損失函數很多用的都是交叉熵(cross entropy)?
    引言我們都知道損失函數有很多種:均方誤差(MSE)、SVM的合頁損失(hinge loss)、交叉熵(cross entropy)。這幾天看論文的時候產生了疑問:為啥損失函數很多用的都是交叉熵(cross entropy)?其背後深層的含義是什麼?如果換做均方誤差(MSE)會怎麼樣?下面我們一步步來揭開交叉熵的神秘面紗。2.
  • 熱力學熵與信息熵殊途同歸之二(普及篇)
    ,以便對信息熵的概念獲得初步的感性認識。這實際上給出了一種特殊概率分布——均勻分布的信息熵,它與熱力學熵的玻爾茲曼公式完全一致,體現了熱力學熵與香農信息熵的同一性。而且,這個實例使我們對一般以公理化方式引進香農信息熵更容易理解。問題 1:有 16 個外形完全一樣的銅球,其中有一個球的重量比其它球略輕,問用一架天平稱幾次一定可以把這個輕球找出來?
  • 【書單推薦】機器學習入門書單
    以極為通俗的語言講述了數學在機器學習和自然語言處理等領域的應用。《Machine Learning》(《機器學習》)作者TomMitchell是CMU的大師,有機器學習和半監督學習的網絡課程視頻。這本書是領域內翻譯的較好的書籍,講述的算法也比《統計學習方法》的範圍要大很多。