機器學習(七) 決策樹

2021-08-09 15:16:56 字數 3554 閱讀 7864

決策樹(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...

機器學習 決策樹

我覺得決策樹是機器學習所有演算法中最可愛的了 沒有那麼多複雜的數學公式哈哈 下圖是一棵決策樹,用來判斷西瓜是好瓜還是壞瓜 決策過程中提出的每個判定問題都是都對某個屬性的測試,每個測試結果要麼推導出最終結論,要麼匯出進一步判斷的問題,在上次決策結果限定的範圍內做進一步判斷。從上圖可以看出,葉節點對應決...

機器學習 決策樹

一 演算法簡介 決策樹一般都是自上而下來生成的,每個決策後事件 即自然狀態 都可能引出兩個或多個事件,導致結果的不同,把這種結構分支畫成形狀很像一棵樹的枝幹,故稱為決策樹。決策樹能夠讀取資料集合,並且決策樹很多任務都是為了資料中所蘊含的知識資訊,因此決策樹可以使用不熟悉的資料集合,並從中提取一系列規...