決策樹--ID3算法

    ID3算法也叫決策樹歸納算法,不是很使用,但是是決策樹算法的開山之作,這裏簡單說下

在信息論中,熵(entropy)是隨機變量不確定性的度量,也就是熵越大,則隨機變量的不確定性越大。設X是一個取有限個值得離散隨機變量,其概率分佈爲:

則隨機變量X的熵定義爲:

條件熵

設有隨機變量(X, Y),其聯合概率分佈爲:

條件熵H(Y|X)表示在已知隨機變量X的條件下,隨機變量Y的不確定性。隨機變量X給定的條件下隨機變量Y的條件熵H(Y|X),定義爲X給定條件下Y的條件概率分佈的熵對X的數學期望:

當熵和條件熵中的概率由數據估計得到時(如極大似然估計),所對應的熵與條件熵分別稱爲經驗熵和經驗條件熵。

表示獲取信息的不確定性大小。

信息增益

定義:信息增益表示由於得知特徵A的信息後兒時的數據集D的分類不確定性減少的程度,定義爲:

Gain(D,A) = H(D) – H(D|A)

             即集合D的經驗熵H(D)與特徵A給定條件下D的經驗條件熵H(H|A)之差。

理解:選擇劃分後信息增益大的作爲劃分特徵,說明使用該特徵後劃分得到的子集純度越高,即不確定性越小。因此我們總是選擇當前使得信息增益最大的特徵來劃分數據集。

缺點:信息增益偏向取值較多的特徵(原因:當特徵的取值較多時,根據此特徵劃分更容易得到純度更高的子集,因此劃分後的熵更低,即不確定性更低,因此信息增益更大)

算法原理

輸入:訓練數據集D,特徵集A,閾值ε;

輸出:決策樹T.

  1. 樹以代表訓練樣本的單個結點開始(步驟1)。
  2. 如果樣本都在同一個類,則該結點成爲樹葉,並用該類標號(步驟2 3)。
  3. 否則,算法使用稱爲信息增益的基於熵的度量作爲啓發信息,選擇能夠最好地將樣本分類的屬性(步驟6)。該屬性成爲該結點的測試判定屬性(步驟7)。在算法的該版本中,
  4. 所有的屬性都是分類的,即離散值。連續屬性必須離散化。
  5. 對測試屬性的每個已知的值,創建一個分枝,並據此劃分樣本(步驟8-10)。
  6. 算法使用同樣的過程,遞歸地形成每個劃分上的樣本判定樹。一旦一個屬性出現在一個結點上,就不必該結點的任何後代上考慮它(步驟13)。
  7. 遞歸劃分步驟僅當下列條件之一成立停止:
  8. (a) 給定結點的所有樣本屬於同一類(步驟2 3)。
  9. (b) 沒有剩餘屬性可以用來進一步劃分樣本(步驟4)。在此情況下,使用多數表決(步驟5)。
  10. 這涉及將給定的結點轉換成樹葉,並用樣本中的多數所在的類標記它。替換地,可以存放結
  11. 點樣本的類分佈。
  12. (c) 分枝
  13. test_attribute = a i 沒有樣本(步驟11)。在這種情況下,以 samples 中的多數類
  14. 創建一個樹葉(步驟12

Python代碼實現

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章