決策樹演算法(ID3,C4.5,CART)
ID3,C4.5,CART是是決策樹的核心演算法。它們都由特徵選擇,樹的生成,剪枝組成。但ID3和C4.5用於分類,CART可用於分類與迴歸。
1.ID3演算法
ID3演算法遞迴地構建決策樹,從根節點開始,對所有特徵計算資訊增益,選擇資訊增益最大的特徵作為節點的特徵,由該特徵的不同取值建立子節點;再對子節點遞迴地呼叫以上方法構建決策樹;知道所有特徵的資訊增益均很小或者沒有特徵可以選擇為止。最後得到一個決策樹。
在演算法中(C4.5也是),有三種情形導致遞迴返回:
(1)當前節點包含的樣本全屬於同一類別,無需劃分。
(2)當前屬性集為空,或是所有樣本在所有屬性上取值相同,無法劃分。(此時將所含樣本最多的類別設定為該葉子節點類別)
(3)當前節點包含的樣本集合為空,不能劃分。(將其父節點中樣本最多的類別設定為該葉子節點的類別)
2.C4.5演算法
資訊增益準則對可取值數目較多的屬性有所偏好,例如將資料的ID作為特徵的話,它的資訊增益將達到最大值,會造成過擬合。因而,C4.5演算法中將採用資訊增益比來進行特徵的選擇。資訊增益比準則對可取值數目較少的屬性有所偏好。
C4.5演算法同ID3演算法過程相似,僅在選擇特徵時,使用資訊增益比作為特徵選擇準則。
輸入:訓練資料集 DD ,特徵集 AA , 閾值 ϵϵ ;
過程:函式 TreeGenerate(D,A)TreeGenerate(D,A) .
1:計算節點資訊增益比 Gainratio(D,a)Gainratio(D,a) :
2: 節點a的熵: Ent(D,a)Ent(D,a)
3: 節點D的熵: Ent(D)Ent(D)
4: 節點資訊增益: Gain(D,a)=Ent(D)−Ent(D,a)Gain(D,a)=Ent(D)−Ent(D,a)
5: 節點固定值: IV(a)IV(a)
6: 節點資訊增益比: Gainratio(D,a)=Gain(D,a)IV(a)Gainratio(D,a)=Gain(D,a)IV(a)
7:生成節點node:
8:if
9: 將node標記為 CC 類葉節點;return
10:end if
11:if A=∅A=∅ OR DD 中樣本在 AA 上取值相同then
12: 將node標記為葉節點,期類別標記為 DD 中樣本數最多的類;return
13:end if
14:按照節點資訊增益,從 AA 中選擇最優劃分屬性 a∗a∗
15:for a∗a∗ 中的每一個值 ai∗a∗i do
16: 為node生成一個分支;令 DiDi 表示 DD 中在 a∗a∗ 上取值為 ai∗a∗i 的樣本子集;
17: if DiDi 為空,then
18: 將分支節點標記為葉節點,其類別標記為 DD 中樣本最多的類;return
19: else
20: 以 TreeGenerate(Di,A/a∗)TreeGenerate(Di,A/a∗) 為分支節點
21: end if
22:end for
輸出:以node為根節點的一棵決策樹
3. CART演算法
CART分類樹通過基尼指數選擇最優特徵,同時決定該特徵的最優二值切分點(ID3和C4.5直接選擇最優特徵,不用劃分)。基尼指數越大,樣本集合不確定性越大。
CART樹生成
(1) 設結點的訓練資料集為D,計算現有特徵對該資料集的基尼指數.此時,對於每個特徵,每次取其中一個每個可能取得值,根據樣本點對該值的測試結果為”是”或”否”將D分成2部分,並計算基尼指數.
(2) 在所有可能的特徵,以及他們所有可能的切分點中,選擇基尼指數最小的特徵,該選擇的特徵為最優特徵,該特徵中的切分點為最優切分點,依照最優特徵和最優切分點生成二叉樹,並把訓練資料集分配到子節點中。
(3)對兩個子節點遞迴呼叫 (1) (2) ,直至滿足停止條件
(4)生成CART決策樹。
停止條件是樣本個數小於預定閾值,或樣本基尼指數小於預定閾值,或沒有更多特徵。
4. 剪枝操作
理想的決策樹有三種:
1.葉子節點數最少
2.葉子加點深度最小
3.葉子節點數最少且葉子節點深度最小。
而在實際操作中,會由於噪聲或者缺乏代表性樣本導致過擬合,這就需要進行剪枝操作。剪枝包含預剪枝和後剪枝。
預剪枝
通過提前停止樹的構建而對樹剪枝,一旦停止,節點就是樹葉,該樹葉持有子集元祖最頻繁的類。
停止決策樹生長最簡單的方法有:
1)定義一個高度,當決策樹達到該高度時就停止決策樹的生長
2)達到某個節點的例項具有相同的特徵向量,及時這些例項不屬於同一類,也可以停止決策樹的生長。這個方法對於處理
資料的資料衝突問題比較有效。
3)定義一個閾值,當達到某個節點的例項個數小於閾值時就可以停止決策樹的生長
4)定義一個閾值,通過計算每次擴張對系統性能的增益,並比較增益值與該閾值大小來決定是否停止決策樹的生長。
2.後剪枝方法
後剪枝(postpruning):它首先構造完整的決策樹,允許樹過度擬合訓練資料,然後對那些置信度不夠的結點子樹用葉子結點來代替,該葉子的類標號用該結點子樹中最頻繁的類標記。相比於先剪枝,這種方法更常用,正是因為在先剪枝方法中精確地估計何時停止樹增長很困難。
參考網址
https://www.cnblogs.com/lliuye/p/9008901.html