決策樹(decision tree)可以算是分類演算法中最著名的模型了,因為它是基於人們最能理解的規則來構造分類器,且每一次分支都能給出解釋。
決策樹大家族十分龐大,這裡只介紹基於決策樹的單一分類模型,不包括基於深度學習的gbdt。
決策樹有點類似二叉排序樹,到達節點時,就比較一次,然後進入下乙個節點。
基本上來說,對於度量的選擇,我們都希望,所選擇的度量能夠將樣本劃分的更純。不純的程度越低,類分類就越傾斜。
三個度量方式都很容易理解,只不過對於誤差的處理不同。
假設c是類的個數,則各指數的計算公式如下: en
trop
y=−∑
i=0c
−1p(
i|t)
log2
p(i|
t)gi
ni=1
−∑i=
0c−1
p(i|
t)2c
lass
ific
atio
nerr
or=1
−maxip
(i|t
) 這三類的度量看似一致,從計算上來說都可以表示劃分的不純性度量,但需要指出的是,三個指標並不等價,即存在同一批資料對於三種度量,劃分屬性大小不一致的情況。
需要說明的是,度量的選擇對於決策樹演算法的效能影響很小。
有了度量標準,那麼選擇屬性的標準也就出來了,那就是選擇的屬性就是選擇前後度量差最大的那個。
如果選擇的度量時資訊熵,那麼度量差就叫做資訊增益。
使用資訊增益看似很合理,因為純度越高,毫無疑問分類越好,但這種考慮有失偏頗,因為它沒有規定屬性取值的個數。這使得屬性可能的取值個數越多,該屬性越可能被選來做劃分。
這個問題可能導致的直接後果就是過擬合,過擬合會導致模型的泛化能力下降。
由此需要考慮將屬性的個數資訊考慮進去。
於是就有了劃分屬性的定義,vi
代表屬性v取值為vi
: p(
vi)=
樣本中屬
性v取v
i的樣本
個數總樣
本數個數
spli
tinf
ov=−
∑i=0
kp(v
i)lo
g2p(
vi)
增益率的定義如下: ga
inra
tio=
gain
spli
tinf
ov這樣一來,使用資訊增益就可以較好的平衡分類效果和泛化能力了。
構建決策樹模型時,過擬合是乙個實際問題,隨著樹的深度越來越大,越來越多的噪音被考慮進去,此時**誤差會上公升。
一般通過剪枝的方法避免過擬合,預剪枝和後剪枝。
預剪枝就是在決策樹模型構建時決定是否需要減除該節點。
有多種方法能判斷是否需要該節點,比如通過**節點的資訊增益與閾值的比較,但閾值的選擇很難。
還有一種方法就是根據**節點的泛化誤差來決定,即從訓練資料中分出一部分驗證資料,節點**時(此時可以確定的是對於訓練集,節點的劃分是有益的),使用驗證資料來評判劃分是否能提高正確率,依次決定是否確定劃分。
後剪枝同理也可以使用驗證集作為評判標準。
即預剪枝和後剪枝都可以使用驗證集作為是否**的標準,與決策樹的構建先後無關。
但兩者所獲得的結果是有區別的:往往後剪枝獲得的決策樹要比預剪枝獲得的大,且欠擬合風險很小,泛化效能往往更優,但毫無疑問的是,後剪枝的開銷更大。
對於連續值,一般採用最容易理解的二分法:
比如樣本中長度有如下取值:
長度1.6
1.71.4
1.21.1
1.92.0
1.80.9
1.11.0
labelxx
yyyx
xxyy
y 於是先將長度排序,然後依次取相鄰兩個長度的中值作為二分的臨界值,比較那個中值能獲得最大的資訊增益。下面將介紹的c4.5決策樹就是採用這種方法。
對於缺失值需要考慮兩個問題:
1.樣本集屬性缺失,如何根據缺失的屬性來選擇劃分節點?
在不做缺失值填充的情況下,顯然只能使用在該節點沒有缺失值的子樣本集進行計算,然後資訊增益的計算最後需要乘上乙個不缺失係數(即該節點不缺失的樣本集數與總樣本的比)
2.**集屬性缺失
若**時,某個屬性缺失,則以一定概率將該樣本劃分到該節點的各個取值中。至於這個概率如何選取,參考資料決策樹是如何處理不完整資料的?
單變數決策樹的每個節點都是使用乙個屬性,這樣生成的決策樹如果用座標空間來刻畫(屬性即座標軸),劃分的邊界都是平行於座標軸的。
但有時候單一的屬性很難刻畫分類的邊緣,會造成抖動,而這個抖動只需要一條斜邊就可以很好的解決了。
其實所謂的斜邊就是屬性的線性組合。
即節點使用多個屬性的線性表示式來作為評判標準。
作為乙個總結,決策樹的優缺點特別列出
1. 決策樹不要求任何先驗假設
2. 找到最佳決策樹是np完全問題,因此一般採用啟發式的貪心演算法
3. 決策樹對於雜訊的干擾有較好的魯棒性
4.冗餘屬性不會對決策樹的準確率造成不利影響
這三個決策樹模型分別是id3, c4.5和cart.
其實這些決策樹都是上面介紹的基本決策樹的變形,之所以需要單獨拿出來是因為這三者是最著名的決策樹模型,且應對不同的領域。
id3演算法,使用資訊增益(也即資訊熵,注意不是增益率)作為劃分標準 ,但和上述描述的決策樹不同的是,一旦節點擊擇某個屬性劃分後,就刪除該屬性,即乙個屬性只能使用一次。這使得id3生成的決策樹很小。
從構建過程來看,這也是個標準的貪心式流程。
毫無疑問,id3擁有決策樹的大部分優缺點。
從id3的構建中,我們發現了id3只是實現了最基本的決策樹構建過程,諸如連續值,過擬合,缺失值等都未處理。
於是就有了基於id3的改進版——c4.5演算法。
1. 針對屬性取值問題——拋棄資訊增益,使用資訊增益率,避免選擇屬性劃分時偏向多取值的屬性
2. 針對過擬合的問題——使用剪枝處理(預剪枝和後剪枝),避免過擬合
3. 針對數值型的屬性——使用排序後取中值的測試方法,選擇合適的劃分
4. 針對缺失值的問題——參考上述講解
c4.5有一些版本,有些採取了上面的全部改進,有些只採取了一兩個改進,應該來說,c4.5是id3的一次公升級。本質上並未作出太大的原則性改動
cart(classification and regression tree)分類回歸數,與上面不同的是,該演算法有兩大特點:
1. 使用gini指標作為分類的標準
2. 節點的決策只能是「是」或「否」,即節點採用二分類
注意節點採用二分類的實現方式,之前某個屬性x有是哪個取值」a」,」b」,」c」,對於cart模型來說,如果該屬性被選擇作為節點,則該節點的判定條件只能是x=」a」?兩個分支取是或者否兩個值。
貼乙個參考鏈結決策樹之cart演算法
最後cart還可以用於回歸,這部分有時間在介紹。
機器學習 決策樹
一 基本概念 決策樹 decision tree 是一種基本的分類與回歸方法。決策樹模型呈樹形結構,在分類問題中,表示屬於特徵對例項進行分類的過程,它可以認為是if then規則的集合,也可以認為是電議在特徵空間與類空空上的條件概率分布,其主要優點是模型具有可讀性,分類速度快。決策樹的學習通常包括3...
機器學習 決策樹
我覺得決策樹是機器學習所有演算法中最可愛的了 沒有那麼多複雜的數學公式哈哈 下圖是一棵決策樹,用來判斷西瓜是好瓜還是壞瓜 決策過程中提出的每個判定問題都是都對某個屬性的測試,每個測試結果要麼推導出最終結論,要麼匯出進一步判斷的問題,在上次決策結果限定的範圍內做進一步判斷。從上圖可以看出,葉節點對應決...
機器學習 決策樹
一 演算法簡介 決策樹一般都是自上而下來生成的,每個決策後事件 即自然狀態 都可能引出兩個或多個事件,導致結果的不同,把這種結構分支畫成形狀很像一棵樹的枝幹,故稱為決策樹。決策樹能夠讀取資料集合,並且決策樹很多任務都是為了資料中所蘊含的知識資訊,因此決策樹可以使用不熟悉的資料集合,並從中提取一系列規...