機器學習 -- 決策樹算法

1. 決策樹

決策樹是附加機率結果的一個樹狀的決策圖,是直觀地運用統計機率分析的圖法。機器學習中決策樹是一個預測模型,它表示對象屬性和對象值之間的一種映射,樹中的每個節點表示對象屬性的判斷條件,其分支表示符合節點條件的對象。樹的葉子節點表示對象所屬的預測結果。html

1.1 決策樹的案例

通俗來講,決策樹分類的思想相似於找對象。現想象一個女孩的母親要給這個女孩介紹男友,這個女孩的決策是否去見面的過程就是典型的分類樹決策。經過年齡、長相、收入和是否公務員對決策結果分爲兩個類別:見和不見。假設這個女孩對男人的要求是:30歲如下、長相中等以上而且是高收入或中等收入的公務員,那麼能夠用下圖表示女孩的決策邏輯:算法

這幅圖基本能夠算是一顆決策樹,說它基本能夠算,是由於圖中的判斷條件沒有量化,如收入高中低等等,不能算是嚴格意義上的決策樹,若是將全部條件量化,則變成真正的決策樹了。機器學習

1.2 決策樹創建

選擇一個合適的特徵做爲判斷節點,能夠快速地分類,減小決策樹的深度。決策樹的目標就是把數據集按對應的類標籤進行分類。最理想的狀況是,經過特徵的選擇能把不用類別的數據集貼上對應類標籤。特徵選擇的目標使得分類後的數據集比較純。如何衡量一個數據集純度,這裏須要引入數據純度函數。信息熵是能夠表示數據純度的函數。函數

1.3 決策樹的算法

構造決策樹的關鍵性內容是進行屬性選擇度量,屬性選擇度量是一種選擇分裂準則,是將給定的類標記的訓練集合的數據劃分。屬性選擇度量算法不少,通常使用自頂
而下遞歸分治法,並採用不回溯的貪心策略。這裏介紹ID3和C4.5算法。學習

1.3.1 ID3算法

信息增益spa

信息熵表示的是不肯定度。均勻分佈時,不肯定度最大,此時熵最大。當選擇某個特徵對數據集進行分類時,分類後的數據集信息熵會比分類前的小,其差值表示爲信息增益。信息增益能夠衡量某個特徵對分類結果的影響大小。.net

假設在樣本數據集D中,混有C中類別的數據。構建決策樹時,根據給定的樣本數據集選擇某個特徵值做爲樹的節點。在數據集中,能夠計算出該數據的信息熵:日誌

其中D表示訓練數據集,m表示數據類別數,Pi表示類別i樣本數量佔全部樣本的比例。htm

對應數據集D,選擇特徵A做爲決策樹判斷節點時,在特徵A做用後的信息熵爲InfoA(D),計算以下:對象

而信息增益即爲二者的差值:

總結:對於決策樹節點最合適的特徵選擇,就是gain(A)值最大的特徵。

ID3算法就是在每次須要分裂時,計算每一個屬性的增益率,而後選擇增益率最大的屬性進行分裂。下面咱們繼續用某社區不真實檢測的例子說明如何使用ID3算法構造決策樹。爲了簡單起見,咱們假設訓練集合包含3個元素:

日誌密度 好友密度 是否使用真實頭像 帳號是否真實
s s no no
s l yes yes
l m yes yes
m m yes yes
l m yes yes
m l no yes
m s no no
l m no yes
m s no yes
s s yes no

其中,s、m、l分別表明小、中、大。 設L、F、H和R表示日誌密度、好友密度、是否使用真實頭像和帳號是否真實

該數據的信息熵 :

對應數據集D,選擇特徵日誌密度做爲決策樹判斷節點時,在特徵日誌密度做用後的信息熵爲InfoL(D),計算以下:

所以日誌密度的信息增益是0.276:

用一樣方法獲得H和F的信息增益分別爲0.033和0.553。

所以F具備最大的信息增益,因此第一次分裂選擇F做爲分裂屬性,分裂後的結果以下圖表示:

在上圖的基礎上,再遞歸使用這個方法計算子節點的分裂屬性,最終就能夠得出整棵決策樹。

1.3.2 C4.5算法

ID3算法存在一個問題,就是偏向於多值屬性,例如,若是存在惟一標識屬性ID,則ID3會選擇它做爲分裂屬性,這樣雖然使得劃分充分純淨,但這種劃分對分類幾乎毫無用處。ID3的後繼算法C4.5使用增益率(gain ratio)的信息增益擴充,試圖克服這個偏倚。

C4.5算法首先定義了"分裂信息",其定義能夠表示成:

 其中各符號意義與ID3算法相同,而後增益率被定義爲:

C4.5選擇具備最大增益率的屬性做爲分裂屬性,其具體應用與ID3相似,再也不贅述。

1.4 關於剪枝

在分類模型創建的過程當中,很容易出現過擬合的現象。過擬合是指在模型學習訓練中,訓練樣本達到很是高的逼近精度,但對校驗樣本的逼近偏差隨着訓練次數而呈現先降低後上升的現象。過擬合時訓練偏差很小,可是檢驗偏差很大,不利於實際應用。

決策樹的過擬合現象能夠經過剪枝進行必定的修復。剪枝分爲預先剪枝和後剪紙兩種。

預先剪枝指在決策樹生長過程當中,使用必定條件加以限制,使得產生徹底擬合的決策樹以前就中止生長。預先剪枝的判斷方法也有不少,好比信息增益小於必定閾值的時候經過剪枝使決策樹中止生長。但如何肯定一個合適的閾值也須要必定的依據,閾值過高致使模型擬合不足,閾值過低又致使模型過擬合。

後剪枝是咋決策樹生長完成以後,按照自底向上的方式修剪決策樹。後剪枝有兩種方式,一種用新的葉子節點替換子樹,該節點的預測類有子樹數據集中的多數類決定。另外一種用子樹中最常使用的分支替代子樹。

總結:預先剪枝可能過早地終止決策樹的生長,後剪枝通常可以產生更好的效果。可是後剪枝在子樹被剪掉後,決策樹生長的一部分計算就被浪費了。

 

 

 


 

 

 

參考:http://blog.csdn.net/nieson2012/article/details/51314873

參考:http://www.cnblogs.com/leoo2sk/archive/2010/09/19/decision-tree.html

相關文章
相關標籤/搜索