1. 程式人生 > >【機器學習】決策樹演算法的基本原理

【機器學習】決策樹演算法的基本原理

  參考周志華老師的《機器學習》一書,對決策樹演算法進行總結。
  決策樹(Decision Tree)是在已知各種情況發生概率的基礎上,通過構建決策樹來求取淨現值期望值大於等於0的概率,評價專案風險,判斷其可行性的決策分析方法,是直觀運用概率分析的圖解法。
  決策樹演算法是一種有監督學習演算法,代表的是物件屬性和屬性值之間的對映關係。樹中的每個結點表示某個物件。分叉路徑代表可能的屬性值。每個葉子結點為從根結點到該葉子結點所經歷的路徑所表示的物件的值。常用的決策樹演算法有ID3,C4.5,CART,隨機森林等。

1.構建決策樹的基本步驟:

(1)將資料集D看做一個結點
(2)遍歷每個變數並計算一種劃分方式,找到最好的劃分點(屬性)
(3)劃分成結點D1和D2
(4)對D1和D2執行第(2)(3)步,直到滿足停止生長條件。
下圖為決策樹構建的流程圖。注意,虛線框標註部分不是決策樹構建必備步驟,有些是最基本的決策樹演算法的改進和擴充套件。
決策樹構建流程圖

2.結點劃分標準

決策樹根據資訊純度來構建,資訊增益、資訊增益率、Gini不純度等經常被用來度量資訊純度,進行決策樹構建。

ID3演算法(1975年被提出)以“資訊熵”為核心,計算每個屬性的資訊增益Gains(X,Y),計算方法見公式(1)(2)。結點劃分標準是選取資訊增益最高的屬性作為劃分屬性。ID3演算法只能處理離散屬性,並且類別值較多的輸入變數比類別值少的輸入變數更有機會成為當前最佳劃分點。

Gains(X,Y)=Ent(X)Ent(X|Y)=Ent(X)i=0v|Dv||D|Ent(Dv)(1)Ent(X)=i=0vpilog2pi(2) 其中,v是屬性a的屬性值取值個數。pi為第i類標籤出現的概率。

C4.5演算法使用資訊增益率(公式(3))來選擇屬性,存在取值數目較少屬性的偏好,因此,採用一個啟發式搜尋方法,先從候選劃分屬性中找出資訊增益高於平均水平的屬性,再從中選擇資訊增益率最高的屬性作為劃分屬性。基於這些改進,C4.5演算法克服了ID3演算法使用資訊增益選擇屬性時偏向選擇取值多的屬性的不足。但資訊增益率

GainsR(D)=Gains(X,Y)Ent(Y)(3)

CART演算法生成的決策樹為結構簡單的二叉樹,每次對樣本集的劃分都計算Gini係數,Gini係數越小則劃分越合理。Gini係數又稱基尼不純度,表示一個隨機選中的樣本在在子集中被分錯的可能性。當一個結點中所有樣本都屬於一個類別時,Gini係數為0.

Gini(D)=i=0nP(i)(1P(i))=i=0nP(i)2i=0nP(i)2=1i=0nP(i)2(4)

3.停止分裂,防止過擬合

  過擬合是指直接生成的完全決策樹,對訓練樣本的特徵描述得“過於精確”,無法實現對新樣本的合理分析。過擬合的決策樹失去了一般的代表性,無法對新資料進行分類或預測。
  針對過擬合,解決方法有:
  (1)最小葉子結點限制、最大決策樹深度限制。即當前結點中的記錄數低於一個最小閾值,則停止分割,採取多數表決法決定葉結點的分類;當決策樹結點劃分次數大於最大深度時,停止決策樹生長。
  (2)對樹進行剪枝。通過判斷結點劃分前後決策樹泛化能力的變化,在完全分割訓練樣本前停止決策樹生長(預剪枝)、決策樹完全生長之後按照特定標準去掉某些子樹(後剪枝)。一般情況下,後剪枝決策樹的欠擬合風險小,泛化效能優於預剪枝決策樹。但後剪枝是在完全決策樹生成之後進行,自底向上對所有非葉子結點進行逐一判斷,訓練開銷比預剪枝、未剪枝決策樹大。

4.連續與缺失值處理

  連續屬性值的處理以C4.5演算法為例進行介紹。C4.5演算法除了改進資訊增益對取值多的屬性的偏好,還通過二分法實現了對連續屬性值的處理。根據樣本屬性值計算屬性候選劃分點Ta,選取資訊增益最大的劃分點。

Ta={ai+ai+12,1in1}(5)

  通常離散屬性在決策樹構建過程中僅使用一次。與離散屬性不同的是,當前結點劃分屬性為連續屬性時,該屬性可作為其後代結點的劃分屬性。也就是說,在父結點上使用屬性A>123劃分結點後,子結點仍可採用屬性A>155進行結點劃分。
  對於缺失值的處理,主要通過計算各屬性的取值在無缺失樣本、有缺失樣本中的概率,按照概率對資訊增益、Gini不純度計算進行加權即可。

Gains(D,a)=ρ×Gain(D,a)=ρ×(Ent(D)i=0vrvEnt(Dv))(6)

其中,ρ為無缺失樣本所佔比例。公式6引數表示無缺失樣本中屬性a為av的樣本所佔比例。