機器學習 Day 9 | 決策樹基礎

weixin_33716557發表於2018-08-16

機器學習第九天 決策樹概念

決策樹概述

決策樹(Decision Tree)演算法是一種基本的分類與迴歸方法,是最經常使用的資料探勘演算法之一。這裡只討論用於分類的決策樹。

決策樹模型呈樹形結構,在分類問題中,表示基於特徵對例項進行分類的過程。它可以認為是if-then規則的集合,也可以認為是定義在特徵空間與類空間上的條件概率分佈。

決策樹學習通常包括3個步驟:特徵選擇、決策樹的生成和決策樹的修建。

決策樹 場景

一個叫做“二十個問題”的遊戲,遊戲的規則很簡單:參與遊戲的一方在腦海中想某個事物,其他參與者向他提問,只允許提20個問題,問題的答案也只能用對或錯回答。問問題的人通過推斷分解,逐步縮小待猜測事物的範圍,最後得到遊戲的答案。

一個郵件分類系統,大致工作流程如下:

5635045-92485bc056dcc4be.jpg

首先檢測傳送郵件域名地址。如果地址為myEmployer.com,則將其放在分類“無聊時需要閱讀的郵件”中。如果郵件不是來自這個域名,則檢測郵件內容裡是否包含單詞“曲棍球”,如果包含則將郵件歸類到“需要及時處理的朋友郵件”,如果不包含則將郵件歸類到“無需閱讀的垃圾郵件”。

決策樹的定義:

分類決策樹模型是一種描述對例項進行分類的樹形結構。決策樹由結點(node)和有向邊(directed edge)組成。結點有兩種型別:內部結點(internal node)和葉結點(leaf node)。內部結點表示一個特徵或屬性(features),葉結點表示一個類(labels)。

用決策樹對需要測試的例項進行分類:從根節點開始,對例項的某一特徵進行測試,根據測試結果,將例項分配到其子結點;這時,每一個子結點對應著該特徵的一個取值。如此遞迴的對例項進行測試並分配,直至達到葉結點。最後將例項分配到葉結點的類中。

決策樹 原理

決策樹 須知概念

資訊熵 & 資訊增益

熵(entropy): 熵指的是體系的混亂的程度,在不同的學科中也有引申出的更為具體的定義,是各領域十分重要的參量。

資訊理論(information theory)中的熵(夏農熵): 是一種資訊的度量方式,表示資訊的混亂程度,也就是說:資訊越有序,資訊熵越低。例如:火柴有序放在火柴盒裡,熵值很低,相反,熵值很高。

資訊增益(information gain): 在劃分資料集前後資訊發生的變化稱為資訊增益。

決策樹 工作原理

如何構造一個決策樹?
我們使用 createBranch() 方法,虛擬碼如下所示:

def createBranch():
'''
此處運用了迭代的思想。 感興趣可以搜尋 迭代 recursion, 甚至是 dynamic programing。
'''
   檢測資料集中的所有資料的分類標籤是否相同:
       If so return 類標籤
       Else:
           尋找劃分資料集的最好特徵(劃分之後資訊熵最小,也就是資訊增益最大的特徵)
           劃分資料集
           建立分支節點
               for 每個劃分的子集
                   呼叫函式 createBranch (建立分支的函式)並增加返回結果到分支節點中
           return 分支節點

決策樹開發流程

收集資料:可以使用任何方法。
準備資料:樹構造演算法 (這裡使用的是ID3演算法,只適用於標稱型資料,這就是為什麼數值型資料必須離散化。 還有其他的樹構造演算法,比如CART)
分析資料:可以使用任何方法,構造樹完成之後,我們應該檢查圖形是否符合預期。
訓練演算法:構造樹的資料結構。
測試演算法:使用訓練好的樹計算錯誤率。
使用演算法:此步驟可以適用於任何監督學習任務,而使用決策樹可以更好地理解資料的內在含義。

決策樹 演算法特點

優點:計算複雜度不高,輸出結果易於理解,資料有缺失也能跑,可以處理不相關特徵。
缺點:容易過擬合。
適用資料型別:數值型和標稱型。

明天準備對用一個簡單案例實現一下決策樹

相關文章