**注:本部落格為周志華《機器學習》讀書筆記,雖然有一些自己的理解,但是其中仍然有大量文字摘自周老師的《機器學習》書。
決策樹系列部落格:
決策樹(一)——構造決策樹
決策樹(二)——剪枝
決策樹(decision tree)(三)——連續值處理
決策樹(四)缺失值處理
前面在決策樹(decision tree)(一)中介紹了幾種對結點劃分的方法(資訊增益、資訊增益率、基尼指數),在這篇部落格裡主要介紹剪枝,即;
預剪枝(pre-pruning)後剪枝(post-pruning)
首先剪枝(pruning)的目的是為了避免決策樹模型的過擬合。因為決策樹演算法在學習的過程中為了盡可能的正確的分類訓練樣本,不停地對結點進行劃分,因此這會導致整棵樹的分支過多,也就導致了過擬合。決策樹的剪枝策略最基本的有兩種:預剪枝(pre-pruning)和後剪枝(post-pruning):
一、預剪枝(pre-pruning)
下面來看下具體的構造過程:
前面部落格(決策樹(一))講過用資訊增益怎麼構造決策樹,這邊還是用資訊增益構造決策樹,先來計算出所有特徵的資訊增益值:
因為色澤和臍部的資訊增益值最大,所以從這兩個中隨機挑選乙個,這裡選擇臍部來對資料集進行劃分,這會產生三個分支,如下圖所示:
但是因為是預剪枝,所以要判斷是否應該進行這個劃分,判斷的標準就是看劃分前後的泛華效能是否有提公升,也就是如果劃分後泛華效能有提公升,則劃分;否則,不劃分。下面來看看是否要用臍部進行劃分,劃分前:所有樣本都在根節點,把該結點標記為葉結點,其類別標記為訓練集中樣本數量最多的類別,因此標記為好瓜,然後用驗證集對其效能評估,可以看出樣本被正確分類,其他被錯誤分類,因此精度為43.9%。劃分後:劃分後的的決策樹為:
則驗證集在這顆決策樹上的精度為:5/7 = 71.4% > 42.9%。因此,用臍部進行劃分。
接下來,決策樹演算法對結點 (2) 進行劃分,再次使用資訊增益挑選出值最大的那個特徵,這裡我就不算了,計算方法和上面類似,資訊增益值最大的那個特徵是「色澤」,則使用「色澤」劃分後決策樹為:
但到底該不該劃分這個結點,還是要用驗證集進行計算,可以看到劃分後,精度為:4/7=0.571<0.714,因此,預剪枝策略將禁止劃分結點 (2) 。對於結點 (3) 最優的屬性為「根蒂」,劃分後驗證集精度仍為71.4%,因此這個劃分不能提公升驗證集精度,所以預剪枝將禁止結點 (3) 劃分。對於結點 (4) ,其所含訓練樣本已屬於同一類,所以不再進行劃分。
所以基於預剪枝策略生成的最終的決策樹為:
總結:對比未剪枝的決策樹和經過預剪枝的決策樹可以看出:預剪枝使得決策樹的很多分支都沒有「展開」,這不僅降低了過擬合的風險,還顯著減少了決策樹的訓練時間開銷和測試時間開銷。但是,另一方面,因為預剪枝是基於「貪心」的,所以,雖然當前劃分不能提公升泛華效能,但是基於該劃分的後續劃分卻有可能導致效能提公升,因此預剪枝決策樹有可能帶來欠擬合的風險。二、後剪枝(post-pruning)後剪枝就是先構造一顆完整的決策樹,然後自底向上的對非葉結點進行考察,若將該結點對應的子樹換為葉結點能夠帶來泛華效能的提公升,則把該子樹替換為葉結點。前面已經說過了,使用前面給出的訓練集會生成一顆(未剪枝)決策樹:
後剪枝演算法首先考察上圖中的結點 (6),若將以其為根節點的子樹刪除,即相當於把結點 (6) 替換為葉結點,替換後的葉結點包括編號為的訓練樣本,因此把該葉結點標記為「好瓜」(因為這裡正負樣本數量相等,所以隨便標記乙個類別),因此此時的決策樹在驗證集上的精度為57.1%(為剪枝的決策樹為42.9%),所以後剪枝策略決定剪枝,剪枝後的決策樹如下圖所示:
接著考察結點 5,同樣的操作,把以其為根節點的子樹替換為葉結點,替換後的葉結點包含編號為的訓練樣本,根據「多數原則」把該葉結點標記為「好瓜」,測試的決策樹精度認仍為57.1%,所以不進行剪枝。
考察結點 2 ,和上述操作一樣,不多說了,葉結點包含編號為的訓練樣本,標記為「好瓜」,此時決策樹在驗證集上的精度為71.4%,因此,後剪枝策略決定剪枝。剪枝後的決策樹為:
接著考察結點 3 ,同樣的操作,剪枝後的決策樹在驗證集上的精度為71.4%,沒有提公升,因此不剪枝;對於結點 1 ,剪枝後的決策樹的精度為42.9%,精度下降,因此也不剪枝。
因此,基於後剪枝策略生成的最終的決策樹如上圖所示,其在驗證集上的精度為71.4%。
總結:對比預剪枝和後剪枝,能夠發現,後剪枝決策樹通常比預剪枝決策樹保留了更多的分支,一般情形下,後剪枝決策樹的欠擬合風險小,泛華效能往往也要優於預剪枝決策樹。但後剪枝過程是在構建完全決策樹之後進行的,並且要自底向上的對樹中的所有非葉結點進行逐一考察,因此其訓練時間開銷要比未剪枝決策樹和預剪枝決策樹都大得多。參考文獻
[1]: 周志華 《機器學習》
決策樹理論 Decision tree
決策樹面試被提及的題目 1 決策樹的原理 從根結點開始,對例項的某一特徵進行測試,根據測試的結果,將例項分配到其子結點 每乙個子結點對應著該特徵的乙個取值。如此遞迴地對例項進行測試並分配,直至達到葉結點。最後將例項分配到葉結點的類中。2 決策樹的過程 步驟 決策樹學習通常包括3個步驟 特徵選擇 決策...
Decision Tree演算法(決策樹)
1.定義 決策樹是一種十分常用的分類方法。決策樹是乙個樹結構 可以是二叉樹或非二叉樹 其每個非葉節點表示乙個特徵屬性上的測試,每個分支代表這個特徵屬性在某個值域上的輸出,而每個葉節點存放乙個類別。使用決策樹進行決策的過程就是從根節點開始,測試待分類項中相應的特徵屬性,並按照其值選擇輸出分支,直到到達...
決策樹(decision tree)分類演算法
2.1 決策樹 decision tree 分類演算法 決策樹是以例項為基礎的歸納學習演算法。它從一組無次序 無規則的元組中推理出決策樹表示形式的分類規則。它採用自頂向下的遞迴方式,在決策樹的內部結點進行屬性值 的比較,並根據不同的屬性值從該結點向下分支,葉結點是要學習劃分的類。從根到葉結點的一條路...