在博弈論中常常使用決策樹尋找最優決策,這些決策樹往往是人工生成的。在數據挖掘過程中,決策樹的生成通常是通過對數據的擬合、學習,從數據集中獲取到一棵決策樹。
決策樹的形式,從根節點到葉子節點的路徑就是決策的過程。其本質思路就是使用超平面對數據遞歸化划分。決策樹的生成過程,就是對數據集進行反復切割的過程,直到能夠把決策類別區分開來為止,切割的過程就形成了一棵決策樹。
而實例隸屬於決策樹每個終端節點的個數,就可以看作該節點的支持度,支持度越大,該規則越有力。
決策樹的構造過程
決策樹解決的問題:
- 選擇哪一個屬性進行第一次划分?
- 什么時候停止繼續划分?
對於第一個問題,需要定義由屬性進行划分的度量,根據該度量可以計算出對當前數據子集來說最佳的划分屬性。對於第二個問題,通常有幾種方法:一種是定義一個停止樹進一步生長的條件,另一種是對生成完成的樹進行再剪枝。
選擇屬性進行划分
信息增益方法基於信息熵原理(一種對信息混亂程度的度量)。一般來說,信息如果是均勻的混合分布,則信息熵就高。若信息呈現一致性分布,則信息熵就低。在決策樹分類之中,若數據子集中類別混合均勻分布,則信息熵較高。若類別單一分布,則信息熵就低。
顯然地,選擇信息熵向最小的方向變化的屬性,就能使得決策樹能夠迅速達到葉子節點,從而能夠構造一棵決策樹。對於每個數據集/數據子集,信息熵可如下定義:
c是數據集/子集D_j中決策類的個數,p_i是第i個決策類在D中的比例。
對於任意一個屬性,將數據集進行划分為多個數據子集,則該屬性的信息增益為未進行划分時的數據集的信息熵與划分后數據子集的信息熵加權和的差:
A是候選屬性,k是該屬性的分支數;D是未使用A進行划分時的數據集,D_j是由A划分而成的子數據集;|x|代表數據集的實例個數。
Gini系數則是從另一個方面刻畫了信息的純度。該方法用於計算從相同的總體中隨機選擇的兩個樣本來自於不同類別的概率:
c是數據集/子集D_j中決策類的個數,p_i是第i個決策類在D中的比例
於是,對於任意一個屬性,將數據集划分為多個子集,則未進行划分時的數據集的Gini系數與划分后數據子集的Gini系數加權和的差為:
在所有屬性中,具有最大G(A)的屬性被選為當前進行划分的結點。
由此可以看出,兩者計算結果是類似的,但是,信息增益方法和Gini系數法都有一個問題,即他們都偏向於具有很多不同值得屬性,因為多個分支能降低信息熵或Gini系數。但決策樹划分為很多分支會降低決策樹的適用性。
CART算法 只生成二叉樹。為生成二叉樹,CART使用Gini系數測試屬性值兩兩組合,找出最好的二分方法。
C4.5算法 采用了信息增益的改進形式增益率來解決問題。增益率在信息增益中引入了該結點的分支信息,對分支過多的情況進行懲罰:
k為屬性A的分支數。 因此可知,k越大,增益率越小。
CHAID方法 利用卡方檢驗來尋找最優的划分屬性。(對於連續的屬性,使用卡方檢驗方法將其離散化。對於離散屬性,使用卡方檢驗方法查找可以合並的值。
獲得大小適合的樹
決策樹的目的事實上是通過訓練集獲得一棵簡潔的、預測能力強的樹。但往往樹完全生長會導致預測能力的降低,因此最好是恰如其分。以下定義樹停止生長的條件如下:
- 最小划分實例數:當當前結點對應的數據子集的大小小於指定的最小划分實例數時,即使它們不屬於同一類,也不再進行進一步划分。
- 划分閾值:當使用的划分方法所得的值與其父結點的值的差小於指定的閾值時,不再進行划分
- 最大樹深度。當進一步的划分超過最大樹的深度的時候,停止划分。
另一種方法是在生成完全決策樹之后進行剪枝任務。
在CART中,對每個子樹構造一個成本復雜性指數(參考了誤分類錯誤率和樹的結構復雜度),從一系列結構中選擇該指數最小的樹作為最好的樹。其中,誤分率需要用一個單獨的剪枝集來評估。樹的復雜度也通過樹的終端節點個數與每個終端節點的成本的積來刻畫。
而C4.5則采用了悲觀剪枝法。采用樹的葉節點在訓練集上的錯誤率,在一定的置信度上根據二項式分布估計其在未知數據上的錯誤率上限。根據該值來確定是否進行剪枝。C4.5的剪枝過程中,可以將子樹完全剪掉,也可以用該子樹的某個子樹來代替該子樹。
