基於樹的學習算法被認爲是最好的和最經常使用的監督學習方法之一。 基於樹的方法賦予預測模型高精度,穩定性和易於解釋的能力。 與線性模型不一樣,它們很是好地映射非線性關係。 它們適用於解決手頭的任何問題(分類或迴歸)。決策樹,隨機森林,梯度加強等方法正在各類數據科學問題中普遍使用。 所以,對於每一個分析師學習這些算法並將其用於建模很是重要。本文的目的是介紹決策樹學習的基本理論基礎,並提出ID3算法。算法
簡而言之,決策樹是一棵樹,其中每一個分支節點表明多個備選方案之間的選擇,每一個葉節點表明一個決策。它是一種監督學習算法,主要用於分類問題,適用於分類和連續輸入和輸出變量。 是概括推理的最普遍使用和實用的方法之一(概括推理是從具體例子中得出通常結論的過程)。決策樹從給定的例子中學習和訓練數據,並預測不可見的狀況。app
決策樹的圖形表示能夠是:函數
有幾種算法能夠構建決策樹,其中一些是:學習
在本文中,咱們將重點關注ID3算法。測試
基本術語:ui
當因變量是連續的時,使用迴歸樹。因變量是分類時使用分類樹。spa
兩棵樹都將預測空間(自變量)劃分爲不一樣的和不重疊的區域。爲簡單起見,您能夠將這些區域視爲框。
這兩棵樹都遵循自上而下的貪婪方法,稱爲遞歸二進制分裂。咱們將其稱爲「自上而下」,由於當全部觀察在單個區域中可用時,它從樹的頂部開始,而且連續地將預測器空間分紅樹下的兩個新分支。它被稱爲「貪婪」,由於該算法只關注當前分裂的關鍵(尋找最佳可用變量),而不關心未來會致使更好樹的分裂。繼續該拆分過程,直到達到用戶定義的中止標準。例如:一旦每一個節點的觀測數量小於50,咱們就能夠告訴算法中止。
在這兩種狀況下,分裂過程都會致使樹木徹底生長,直到達到中止標準。可是,徹底成長的樹可能會過分填充數據,致使看不見的數據的準確性不好。這帶來了'修剪'。修剪是用於解決過分擬合的技術之一。3d
ID3表明Iterative Dichotomizer 3。ID3算法由Ross Quinlan發明。 它從一組固定的實例構建決策樹,結果樹用於對測試樣本進行分類。基本思想是經過在給定集合中使用自上而下的貪婪搜索來構造決策樹,以測試每一個樹節點處的每一個屬性。決策樹的構造是做爲重複過程完成的,估計哪一個變量能夠得到最大的信息增益。信息增益是當已知自變量的狀態時因變量的熵的減小。從本質上講,當咱們根據因變量的值將它分紅組時,它會測量獨立變量的組織程度。選擇提供組織最大增長的因變量,並根據此變量拆分數據集。orm
在信息論中,熵是衡量消息來源不肯定性的指標。 它爲咱們提供了數據中的無組織程度。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之間。
它衡量預期的熵減小。 它決定哪一個屬性進入決策節點。 爲了最小化決策樹深度,具備最多熵減小的屬性是最佳選擇!更確切地說,屬性A相對於示例集合S的信息增益增益(S,A)被定義爲:
假設咱們想要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
2.計算每一個屬性熵
outlook屬性包含三個 不一樣的觀測:
sunny: 5 個概率, 2 個「yes」
預期的新熵:
預期的新熵:
預期的新熵:
顯然,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 = overcast THEN play baseball = yes
最終會生成一顆像下邊同樣的樹: