決策樹歸納是從類標記的訓練元組學習決策樹。決策樹是一種類似於流程圖的結構,其中,每個內部節點(非樹葉節點)表示在一個屬性上的測試,每個分枝代表一個測試輸出,而每個樹葉節點(或終節點)存放一個類標號。樹的最頂層節點是根節點,一顆典型的決策樹如下圖所示:
1 決策樹歸納
典型的算法有ID3 (迭代的二分器)、C4.5、 CART(分類與迴歸樹),三種算法均採用貪心(即非回溯的)方法,其中決策樹以自頂向下遞歸的分支方式構造。
基本決策樹算法如下圖所示:
給定訓練集D,算法的計算複雜度爲O(n×|D|×log(|D|)),其中n是描述D中元祖的屬性個數,|D|是D中訓練元組樹。
2 屬性選擇度量
決策樹算法之間的差別包括在創建樹時如何選擇屬性和用於剪枝的機制。屬性選擇度量是一種選擇分裂準則,將給定類標記的訓練元組的數據劃分D“最好”地分成個體類的啓發式方法。具有最好度量得分的屬性被選作給定元組的分類屬性。
設數據劃分D爲類標記的元組的訓練集。假定類標號屬性具有m個不同值,定義m個不同的類Ci(i=1,2,…,m)。設Ci,D是D中Ci類的元組集合,|D|和|Ci,D|分別是D和CiD中元組個數。
(1)信息增益
ID3使用信息增益作爲屬性選擇度量。設節點N代表或存放劃分D的元組,選擇具有最高信息增益的屬性作爲節點N的分裂屬性。
假設現在按屬性A劃分D中的元組,其中屬性A根據訓練數據的觀測具有V個不同的值{a1,a2,…,av}。如果A是離散值的,則這些值直接對應於A上測試的v個輸出。可以用屬性A將D劃分爲v個子集{D1,D2,…,Dv},其中Dj包含D中的元組,它們在A上具有值aj,此時爲了得到準確的分類,還需要的信息量爲:
假定屬性A是連續值時,分裂點是A上的閾值。先將A的值按遞增排序,每對相鄰值的中點都看作是可能的分裂點。這樣,給定A的v個值,則需要計算v-1個可能的分裂。
(2)增益率
ID3的後繼C4.5使用信息增益率作爲屬性選擇度量。分裂信息類似於Info(D),定義如下:
(3)Gini指標
Gini指標在CART中使用,Gini指標度量數據劃分或訓練元組集D的不純度,定義爲:
基尼指數考慮每個屬性的二元劃分。如果A的二元劃分將D劃分爲D1和D2,則給定該劃分,D的基尼指數爲
對於每個屬性,考慮每種可能的二元劃分。對於離散值屬性,選擇該屬性產生最小基尼指數的子集作爲它的分裂子集。對於離散屬性,其策略類似於信息增益。
對離散或連續屬性A的二元劃分導致的不純度降低爲
最大化不純度降低(等價地,具有最小基尼指數)的屬性爲分裂屬性。
3 樹剪枝
在決策樹創建時,由於數據中的噪聲和離羣點,許多分枝反映的是訓練數據中的異常。剪枝方法處理這種過分擬合問題。常用的剪枝方法:先剪枝和後剪枝