1. 程式人生 > >sklearn 決策樹

sklearn 決策樹

貪婪 center .net inf simple 種類 基於 .html 數據

決策樹的原理很簡單:一顆由多個判斷節點組成的樹。因為其應用之廣,也有許許多多的衍生(Random Forest, GBDT,XGBOOST)。我想確實很有必要做一個總結。

決策樹的一些優點是:

  • 簡單理解和解釋。樹可以被可視化。
  • 需要很少的數據準備。其他技術通常需要數據標準化,需要創建虛擬變量,並刪除空白值。但請註意,該模塊不支持缺少的值。
  • 使用樹(即,預測數據)的成本是用於訓練樹的數據點的數量的對數。
  • 能夠處理數字和分類數據。其他技術通常專門用於分析只有一種變量的數據集。查看更多信息的算法
  • 能夠處理多輸出問題。
  • 使用白盒模型。如果一個給定的情況在模型中是可觀察的,那麽這個條件的解釋就很容易用布爾邏輯來解釋。
    相比之下,在黑箱模型(例如,在人造神經網絡中),結果可能更難以解釋。
  • 可以使用統計測試來驗證模型。這可以說明模型的可靠性。
  • 即使其假設受到數據生成的真實模型的某種程度的違反,也可以很好地執行。

決策樹的缺點包括:

  • 決策樹學習者可以創建過於復雜的樹,不能很好地概括數據。這被稱為過度擬合。修剪(目前不支持)等機制,設置葉節點所需的最小樣本數或設置樹的最大深度是避免此問題所必需的。
  • 決策樹可能不穩定,因為數據中的小的變化可能會導致生成完全不同的樹。通過在集合中使用決策樹可以緩解這個問題。
  • 學習最優決策樹的問題在最優化的幾個方面甚至簡單的概念上都被認為是NP完全的。因此,實際的決策樹學習算法基於啟發式算法,例如在每個節點處進行局部最優決策的貪婪算法。
    這樣的算法不能保證返回全局最優的決策樹。這可以通過在集合學習器中訓練多個樹來減輕,其中特征和樣本隨機地被替換。
  • 有些概念很難學,因為決策樹不能很容易地表達它們,比如XOR,奇偶校驗或多路復用器問題。
  • 決策樹學習者如果某些類占主導地位,就會創建偏向性樹。因此建議在擬合決策樹之前平衡數據集。

分類樹:

分類決策樹的核心思想就是在一個數據集中找到一個最優特征,然後從這個特征的選值中找一個最優候選值,根據這個最優候選值將數據集分為兩個子數據集,然後遞歸上述操作,直到滿足指定條件為止。

主要講講C4.5算法(用信息增益率)有一個很好的例子:

技術分享圖片

1. 計算類別信息熵

技術分享圖片

2. 計算每個屬性的信息熵
每個屬性的信息熵相當於一種條件熵。他表示的是在某種屬性的條件下,各種類別出現的不確定性之和。屬性的信息熵越大,表示這個屬性中擁有的樣本類別越不“純”。

技術分享圖片

3. 計算信息增益

信息增益的 = 熵 - 條件熵,在這裏就是 類別信息熵 - 屬性信息熵,它表示的是信息不確定性減少的程度。如果一個屬性的信息增益越大,就表示用這個屬性進行樣本劃分可以更好的減少劃分後樣本的不確定性,當然,選擇該屬性就可以更快更好地完成我們的分類目標。

信息增益就是ID3算法的特征選擇指標。

技術分享圖片

4.計算屬性分裂信息度量

用分裂信息度量來考慮某種屬性進行分裂時分支的數量信息和尺寸信息,我們把這些信息稱為屬性的內在信息(instrisic information)。信息增益率用信息增益 / 內在信息,會導致屬性的重要性隨著內在信息的增大而減小(也就是說,如果這個屬性本身不確定性就很大,那我就越不傾向於選取它),這樣算是對單純用信息增益有所補償。

技術分享圖片

5. 計算信息增益率

(下面寫錯了。。應該是IGR = Gain / H )

技術分享圖片

C4.5的算法流程:

技術分享圖片

sklearn 決策樹