決策樹(一)

  • 簡介

  基於樹的學習算法被認爲是最好的和最經常使用的監督學習方法之一。 基於樹的方法賦予預測模型高精度,穩定性和易於解釋的能力。 與線性模型不一樣,它們很是好地映射非線性關係。 它們適用於解決手頭的任何問題(分類或迴歸)。決策樹,隨機森林,梯度加強等方法正在各類數據科學問題中普遍使用。 所以,對於每一個分析師學習這些算法並將其用於建模很是重要。本文的目的是介紹決策樹學習的基本理論基礎,並提出ID3算法。算法


什麼是決策樹?

  簡而言之,決策樹是一棵樹,其中每一個分支節點表明多個備選方案之間的選擇,每一個葉節點表明一個決策。它是一種監督學習算法,主要用於分類問題,適用於分類和連續輸入和輸出變量。 是概括推理的最普遍使用和實用的方法之一(概括推理是從具體例子中得出通常結論的過程)。決策樹從給定的例子中學習和訓練數據,並預測不可見的狀況。app

決策樹的圖形表示能夠是:函數

  

有幾種算法能夠構建決策樹,其中一些是:學習

  • CART(分類和迴歸樹):使用基尼指數做爲度量。
  • ID3算法:使用熵函數和信息增益做爲度量。

在本文中,咱們將重點關注ID3算法。測試

與決策樹相關的重要術語

基本術語:ui

  • 根節點(Root Node):它表明整個種羣或樣本,並進一步分爲兩個或更多個同類集。
  • 拆分(Splitting):這是將節點劃分爲兩個或更多個子節點的過程。
  • 決策節點(Decision Node):當子節點分裂成更多的子節點時,它被稱爲決策節點。
  • 葉子/終端節點(Leaf/ Terminal Node):不分割的節點稱爲葉子或終端節點。

  • 修剪(Pruning):當咱們刪除決策節點的子節點時,此過程稱爲修剪。 你能夠說相反的分裂過程。
  • 分支/子樹(Branch / Sub-Tree):整個樹的子部分稱爲分支或子樹。
  • 父節點和子節點(Parent and Child Node):劃分爲子節點的節點稱爲子節點的父節點,其中子節點是父節點的子節點。

分類VS迴歸

  當因變量是連續的時,使用迴歸樹。因變量是分類時使用分類樹。spa

  • 在迴歸樹的狀況下,訓練數據中終端節點得到的值是落在該區域中的觀測的平均值。所以,若是看不見的數據觀觀測屬於該區域,咱們將使用平均值進行預測。
  • 在分類樹的狀況下,終端節點在訓練數據中得到的值(類)是落在該區域中的觀察模式。所以,若是看不見的數據觀察屬於該區域,咱們將使用模式值進行預測。

  兩棵樹都將預測空間(自變量)劃分爲不一樣的和不重疊的區域。爲簡單起見,您能夠將這些區域視爲框。
  這兩棵樹都遵循自上而下的貪婪方法,稱爲遞歸二進制分裂。咱們將其稱爲「自上而下」,由於當全部觀察在單個區域中可用時,它從樹的頂部開始,而且連續地將預測器空間分紅樹下​​的兩個新分支。它被稱爲「貪婪」,由於該算法只關注當前分裂的關鍵(尋找最佳可用變量),而不關心未來會致使更好樹的分裂。繼續該拆分過程,直到達到用戶定義的中止標準。例如:一旦每一個節點的觀測數量小於50,咱們就能夠告訴算法中止。
  在這兩種狀況下,分裂過程都會致使樹木徹底生長,直到達到中止標準。可是,徹底成長的樹可能會過分填充數據,致使看不見的數據的準確性不好。這帶來了'修剪'。修剪是用於解決過分擬合的技術之一。3d

 

優勢

  1. 易於理解:即便對於非分析背景的人來講,決策樹輸出也很容易理解。它不須要任何統計知識來閱讀和解釋它們。它的圖形表示很是直觀。
  2. 在數據探索中頗有用:決策樹是識別最重要變量和兩個或多個變量之間關係的最快方法之一。在決策樹的幫助下,咱們能夠建立具備更好預測目標變量能力的新變量(特徵)。你能夠參考一篇文章(Trick to enhance power of regression model)。它也能夠用於數據探索階段。例如,咱們正在研究一個問題,即咱們有數百個變量可用的信息,決策樹將有助於識別最重要的變量。
  3. 須要更少的數據清理:與其餘一些建模技術相比,它須要更少的數據清理。它不受異常值和缺失值的影響。
  4. 數據類型不是約束:它能夠處理數字和分類變量。
  5. 非參數方法:決策樹被認爲是非參數方法。這意味着決策樹沒有關於空間分佈和分類器結構的假設。

缺點

  1. 過擬合:過擬合是決策樹模型最實用的難點之一。 經過設置模型參數和修剪的約束來解決這個問題。
  2. 不適合連續變量:在處理連續數值變量時,決策樹在對不一樣類別的變量進行分類時會丟失信息。

ID3算法

  ID3表明Iterative Dichotomizer 3。ID3算法由Ross Quinlan發明。 它從一組固定的實例構建決策樹,結果樹用於對測試樣本進行分類。基本思想是經過在給定集合中使用自上而下的貪婪搜索來構造決策樹,以測試每一個樹節點處的每一個屬性。決策樹的構造是做爲重複過程完成的,估計哪一個變量能夠得到最大的信息增益。信息增益是當已知自變量的狀態時因變量的熵的減小。從本質上講,當咱們根據因變量的值將它分紅組時,它會測量獨立變量的組織程度。擇提供組織最大增長的因變量,並根據此變量拆分數據集。orm

信息熵(Entropy

在信息論中,熵是衡量消息來源不肯定性的指標。 它爲咱們提供了數據中的無組織程度。blog

給定集合S包含某些目標概念的正面和負面示例,S相對於此布爾分類的熵是:

這裏,p +和p-是S中正負例子的比例。

考慮相對於布爾分類(即二分類)的這種熵函數,由於正例p +的比例在0和1之間變化。

 

假設S是14個例子的集合,包括9個正例和5個負例子[9 +,5-]。 而後S的熵是:

 

請注意,若是S的全部成員屬於同一個類,則熵爲0。 例如,若是全部成員都是正數(p + = 1),則p-爲0,而且

Entropy(S)= -1* log2(1) - 0.*log2 0 = -1. 0 - 0. log2 0 = 0。

當集合包含相同數量的正面和負面示例時,熵爲1。

若是集合包含不等數量的正面和負面示例,則熵在0和1之間。

信息增益(Information Gain

   它衡量預期的熵減小。 它決定哪一個屬性進入決策節點。 爲了最小化決策樹深度,具備最多熵減小的屬性是最佳選擇!更確切地說,屬性A相對於示例集合S的信息增益增益(S,A)被定義爲:

 

  • S =屬性A的全部可能值的每一個值v
  • Sv =屬性A具備值v的S的子集
  • | SV| = Sv中的元素數
  • | S | = S中的元素數 

具體例子

   假設咱們想要ID3來決定天氣是否適合打棒球。 在兩週的時間內,收集數據以幫助ID3構建決策樹。 目標分類是「咱們應該打棒球嗎?」,能夠是或不是。

 

天氣屬性是 outlook, temperature, humidity, and wind speed.。 

  • outlook = { sunny, overcast, rain }

  • temperature = {hot, mild, cool }

  • humidity = { high, normal }

  • wind = { weak, strong }

 咱們須要找到哪一個屬性將成爲決策樹中的根節點。

 計算數據集上最高信息增益的步驟

1.計算整個數據集的熵

14個記錄,9個yes,5個No

  • Entropy(S) = – (9/14) Log2 (9/14) – (5/14) Log2 (5/14) = 0.940

2.計算每一個屬性熵

2.1 - outlook 

 outlook屬性包含三個 不一樣的觀測:

  • outlook = { sunny, overcast, rain }
    • overcast: 4 個記錄, 4 個 「yes」
    • rainy: 5 個記錄, 3 個 「yes」
    • -(3/5 log_2 3/5 + 2/5 log_2 2/5) approx 0.97

    • sunny: 5 個概率, 2 個「yes」

      -(2/5 log_2 2/5 + 3/5 log_2 3/5) approx 0.97

  •  預期的新熵:
  •  

2.2 - temperature

預期的新熵:

2.3 - humidity

預期的新熵:

2.4 - windy

預期的新熵:

3.信息增益

 

顯然,outlook屬性的增益最高。 所以,它用做根節點。

  因爲outlook有三個可能的值,所以根節點有三個分支( sunny, overcast, rain )。 接下來的問題是,應該在sunny分支節點測試什麼屬性? 因爲咱們在根部使用了outlook,咱們只決定其他三個屬性: temperature, humidity, and wind。

  • Ssunny = {D1, D2, D8, D9, D11} = 5 examples from the table with outlook = sunny

  • Gain(Ssunny, Humidity) = 0.970

  • Gain(Ssunny, Temperature) = 0.570

  • Gain(Ssunny, Wind) = 0.019

 humidity,增益最大; 所以,它被用做決策節點。 這個過程一直持續到全部數據都被完美分類或者咱們的屬性用完了.

 

決策樹也能夠用規則格式表示:

  • IF outlook = sunny AND humidity = high THEN play baseball = no
  • IF outlook = rain AND humidity = high THEN play baseball = no
  • IF outlook = rain AND wind = strong THEN play baseball = yes
  • IF outlook = overcast THEN play baseball = yes

  • IF outlook = rain AND wind = weak THEN play baseball = yes

最終會生成一顆像下邊同樣的樹:

 

相關文章
相關標籤/搜索