cart決策樹剪枝的個人理解

2021-08-27 18:52:06 字數 1766 閱讀 7468

先說好前面部分我引用自以下這篇文章的,我不想寫了

我們這裡用的是代價複雜度剪枝演算法。

首先我們將一顆充分生長的樹稱為t0 ,我們希望減少樹的大小來防止過擬化,但又擔心去掉一些節點後**的誤差會增大,那麼如何達到這兩個變數之間的平衡則是問題的關鍵,因此我們用乙個變數α來平衡,因此損失函式定義為如下: 

t為任意子樹,c(t)為**誤差,可以是平方誤差也可以是基尼指數,|t|為子樹t的葉子節點個數,注意是葉子節點,α 是引數,c(t)衡量訓練資料的擬合程度,|t|衡量樹的複雜度(即大小),α 權衡擬合程度與樹的複雜度。

那麼我們如何找到這個合適的α來使擬合程度與複雜度之間達到最好的平衡呢,最好的辦法就是,我們將α從0取到正無窮,對於每乙個固定的α,我們都可以找到使得cα(t)最小的最優子樹t(α) 。當α 很小的時候,t0是這樣的最優子樹,當α很大的時候,單獨乙個根節點是這樣的最優的子樹。

儘管α 取值無限多,但是t0 的子樹是有限個,因此我們可以生成這樣乙個子樹序列 

tn是最後剩下的那個根節點。(這裡的子樹生成是根據前乙個子樹ti,剪掉某乙個內部節點,生成ti+1)然後對這樣的子樹序列分別用測試集進行交叉驗證,找到最優的那個子樹作為我們的決策樹。

這也是代價複雜度剪枝的核心思想。

基於上面的論述,剪枝可分為兩部分,第一部分生成子樹序列,第二部分交叉驗證。

1. 生成子樹序列

我們每次剪枝剪的都是某個內部節點的子節點,也就是將某個內部節點的所有子節點回退到這個內部節點裡,並將這個內部節點作為葉子節點。因此在計算整體的損失函式時,這個內部節點以外的值都沒變,只有這個內部節點的區域性損失函式改變了,因此我們本需要計算全域性的損失函式,但現在只需要計算內部節點剪枝前和剪枝後的損失函式。

對任意內部節點t,

剪枝前的狀態:有|tt| 個葉子節點,**誤差是c(tt)

剪枝後的狀態:只有本身乙個葉子節點,**誤差是c(t)

以下是我自己的理解部分

第一:這裡的剪枝和前面講的決策樹剪枝不同的地方就是,之前就在乙個固定的超引數alpha上剪枝,這裡不是 ,他不但剪枝,還挑選最優的超引數。

第二:雖然alpha 是無限多的 ,但是樹的可能性是固定的,因此更具上面breiman的證明我門知道,在乙個固定的區間【a,b】內,無論alpha取什麼,最優的樹都是那一棵,所以他就從下到上依次計算剪掉每個點之後對應的alpha(為什麼從下到上,,,當然是因為動態規劃啦)。

第三:為什麼從最小的alpha開始,因為我門知道alpha越大,樹就越簡單,意味著剪掉的越多,而alpha越小,樹越複雜剪掉的越少,所以從小的alpha開始意味著是一種從下到上的剪枝啦,這樣又可以動態規劃啦。

所以最後把所有可能剪掉 的枝的樹都集合起來,然後用驗證集交叉驗證選出最優的就ok了

CART決策樹剪枝個人理解

cart決策樹剪枝個人理解 在看統計學習方法關於cart樹的剪枝是,感覺書上講得很迷惑,因此基於其他部落格以及書上內容得出自己的理解。首先確定cart樹的損失函式 c t c t t 式中c t 表示 的精度,即子樹t的錯誤數量 測試集數量,t 表示子樹t的葉子節點數量 c t 表示子樹t的整體損失...

決策樹的剪枝和CART演算法

在資料探勘中,決策樹主要有兩種型別 分類樹的輸出是樣本的類標。針對y是離散變數。回歸樹的輸出是乙個實數 例如房子的 病人呆在醫院的時間等 針對y是連續變數。cart與id3區別 cart中用於選擇變數的不純性度量是gini指數 如果目標變數是標稱的,並且是具有兩個以上的類別,則cart可能考慮將目標...

決策樹的補充 剪枝與CART樹

1.剪枝 預剪枝顯著減少了決策樹的訓練時間,但另一方面,預剪枝本質上禁止這些分支展開,所以可能帶來欠擬合的風險。通常採用留出法進行驗證,將一部分訓練集劃分為驗證集。後剪枝決策樹的欠擬合風險小,泛化能力往往優於預剪枝,但是後剪枝過程是在生成決策樹之後進行的,所以訓練時間肯定比預 剪枝高出很多。2.ca...