1. 程式人生 > >Chapter 4 Decision Tree

Chapter 4 Decision Tree

卡巴拉生命之樹

第四章 決策樹

4.1基本流程

決策樹:由一個根結點(包含所有樣本集)。若干內部結點(屬性測試)和若干葉結點(分類結果)組成。
決策樹是一個遞迴過程,當產生如下三種情況時,會導致遞迴返回:
1.當前節點包含的所有樣本歸屬同一類,無需再分;
2.當前屬性集為空,或所有樣本在該屬性上取值相同;(->葉結點)
3.當前節點包含的樣本集合為空。(->葉結點,並以其父結點所含樣本最多的類別作為該葉結點類別)

4.2劃分選擇(即選取最優劃分屬性)

4.2.1資訊增益

資訊熵:假定樣本集合D中的第k類樣本所佔比例為 p

k ( k = 1 , 2 , . .
. γ ) p_k(k=1,2,...|\gamma|) ,則D的資訊上定義為:
E n
t ( D ) = k = 1 γ p k l o g 2 p k ( 0 l o g 2 γ ) Ent(D)=-\sum_{k=1}^{|\gamma|}p_klog_2p_k (取值從0到log_2|\gamma|)

Ent(D)值越小,純度越高。
基於此,考慮每一節點的影響會由於結點包含的樣本數不同而不同,所以給分支結點賦予權重 D v / D |D^v|/|D| 。用 D v D^v 來記第v個節點包含D中所有在屬性a上的取值為 a v a^v 的樣本數。
資訊增益(information gain):
G a i n ( D , a ) = E N T ( D ) v = 1 V D v D E n t ( D v ) Gain(D,a)=ENT(D)-\sum_{v=1}^{V}\frac{|D^v|}{|D|}Ent(D^v)
對應的是以資訊熵減去賦予權重後的資訊熵和,表現在該分支節點劃分不同類別的能力越大,也就是說能夠獲得的純度提升越大。

4.2.2增益率

首先,要注意的是資訊增益準則對於可取多個值的屬性是有偏好的,這並不好,很容易導致嚴重的過擬合。
所以引入著名的C4.5決策樹演算法,不直接使用資訊增益,而是使用資訊增益率
G a i n _ r a t i o ( D , a ) = G a i n ( D , a ) I V ( a ) Gain\_ratio(D,a)=\frac{Gain(D,a)}{IV(a)}
其中, I V ( a ) = v = 1 V D v D l o g 2 D v D IV(a)=-\sum_{v=1}^{V}\frac{|D^v|}{|D|}log_2\frac{|D^v}{D} 稱為屬性的固有值,a的可能取值越多,(V越大),則IV(a)的值通常會越大。這樣,就會使通過過多取值的屬性影響降低(相反,增益率可能多取值少的屬性有所偏好)
小結:C4.5決策樹並不會一上來就找增益率最高的,他會先選出資訊增益高於平均水平的,再從中選出增益率最高的。

4.2.3基尼指數

CART決策樹(Classification and Regression Tree) 所使用的基尼指數是另一種劃分屬性的有效手段,不同於資訊增益中資訊熵用不同類別所佔比例表達樣本集合純度,基尼係數是通過從D中隨機抽取兩個樣本判斷其類別不同的概率,所以Gini(D)越小,D越純,基尼值
G i n i ( D ) = k = 1 γ k k p k p k = 1 k = 1 γ p k 2 Gini(D)=\sum_{k=1}^{|\gamma|}\sum_{k'\neq{k}}p_kp_{k'} = 1-\sum_{k=1}{|\gamma|}p_k^2
基尼指數(其定義有類似於資訊增益率之處,都引入了 D v / D |D^v|/|D| 以將分直接點的樣本數考慮進去):
G i n i _ i n d e x ( D , a ) = v = 1 V D v D G i n i ( D v ) Gini\_index(D,a)=\sum_{v=1}^V\frac{|D^v|}{|D|}Gini(D^v)
同樣,在候選屬性集合A中,選擇劃分後是的基尼指數最小的屬性優先劃分。

4.3剪枝處理(pruning)

決策樹剪枝有兩個基本策略:
一是**“預剪枝”(在生成決策樹過程中,在劃分節點前先估計判斷該節點劃分是否能帶來決策樹泛化效能的提升–>制止了過多層數的劃分)
一是
後剪枝**(在完整的決策樹自下而上的考察,判斷該節點子樹若替換為葉結點是否能帶來泛化效能的提升–>欠擬合風險小,但開銷遠大於預剪枝)。
那麼如何判斷泛化效能是否提升呢?瓜皮書用回了第二章裡的留出法(即劃分訓練集和驗證集)。

4.4連續與缺失值

4.4.1連續值處理

首先,可用連續屬性離散化,這也是C4.5決策樹演算法的策略。將資訊增益稍加改造:
G a i n ( D , a ) = m a x t T a G a i n ( D , a , t ) = m a x t T a E n t ( D ) λ { , + } D v D E n t ( D t λ ) Gain(D,a)=max_{t∈T_a}Gain(D,a,t)\\=max_{t∈T_a}Ent(D)-\sum_{λ∈\{-,+\}}\frac{|D^v|}{|D|}Ent(D_t^λ),