上篇文章中講了決策樹的定義、決策樹如何做決策、決策樹的構建等,這篇則是關於決策數中關於剪枝的內容。

什麼是剪枝?

剪枝是指將一顆子樹的子節點全部刪掉,根節點作爲葉子節點,以下圖爲例:

決策樹系列(二)——剪枝

爲甚麼要剪枝?

決策樹是充分考慮了所有的數據點而生成的複雜樹,有可能出現過擬合的情況,決策樹越複雜,過擬合的程度會越高。

考慮極端的情況,如果我們令所有的葉子節點都只含有一個數據點,那麼我們能夠保證所有的訓練數據都能準確分類,但是很有可能得到高的預測誤差,原因是將訓練數據中所有的噪聲數據都”準確劃分”了,強化了噪聲數據的作用。

剪枝修剪分裂前後分類誤差相差不大的子樹,能夠降低決策樹的複雜度,降低過擬合出現的概率。

怎樣剪枝?

兩種方案:先剪枝和後剪枝

先剪枝說白了就是提前結束決策樹的增長,跟上述決策樹停止生長的方法一樣。

後剪枝是指在決策樹生長完成之後再進行剪枝的過程。這裏介紹三種後剪枝方案:

(1)REP—錯誤率降低剪枝

顧名思義,該剪枝方法是根據錯誤率進行剪枝,如果一棵子樹修剪前後錯誤率沒有下降,就可以認爲該子樹是可以修剪的。

REP剪枝需要用新的數據集,原因是如果用舊的數據集,不可能出現分裂後的錯誤率比分裂前錯誤率要高的情況。由於使用新的數據集沒有參與決策樹的構建,能夠降低訓練數據的影響,降低過擬合的程度,提高預測的準確率。

(2)PEP—悲觀剪枝

悲觀剪枝認爲如果決策樹的精度在剪枝前後沒有影響的話,則進行剪枝。怎樣纔算是沒有影響?如果剪枝後的誤差小於剪枝前經度的上限,則說明剪枝後的效果與剪枝前的效果一致,此時要進行剪枝。

進行剪枝必須滿足的條件:

決策樹系列(二)——剪枝

其中:

Esubtree表示剪枝前子樹的誤差;

Eleaf表示剪枝後節點的誤差;

兩者的計算公式如下:

決策樹系列(二)——剪枝

令子樹誤差的經度滿足二項分佈,根據二項分佈的性質

決策樹系列(二)——剪枝

決策樹系列(二)——剪枝

其中

決策樹系列(二)——剪枝

N爲子樹的數據量。

上述公式中,0.5表示修正因子。由於子節點是父節點進行分裂的結果,從理論上講,子節點的分類效果總比父節點好,分類的誤差更小,如果單純通過比較子節點和父節點的誤差進行剪枝就完全沒有意義了,因此對節點的誤差計算方法進行修正。修正的方法是給每一個節點都加上誤差修正因子0.5,在計算誤差的時候,子節點由於加上了誤差修正因子,就無法保證總誤差低於父節點。

算例:

決策樹系列(二)——剪枝

決策樹系列(二)——剪枝

決策樹系列(二)——剪枝

由於

決策樹系列(二)——剪枝

所以應該進行剪枝。

(3)CCP—代價複雜度剪枝

代價複雜度選擇節點表面誤差率增益值最小的非葉子節點,刪除該非葉子節點的左右子節點,若有多個非葉子節點的表面誤差率增益值相同小,則選擇非葉子節點中子節點數最多的非葉子節點進行剪枝。

可描述如下:

令決策樹的非葉子節點爲{T1,T2,T3.... Tn}。

a) 計算所有非葉子節點的表面誤差率增益值

b)選擇表面誤差率增益值最小的非葉子節點(若多個非葉子節點具有相同小的表面誤差率增益值,選擇節點數最多的非葉子節點)。

c)對選中的非葉子節點進行剪枝

表面誤差率增益值的計算公式:

決策樹系列(二)——剪枝

其中:

R(t)表示葉子節點的誤差代價,R(t)=r(t)-p(t),r(t)爲節點的錯誤率,p(t)爲節點數據量的佔比;

R(T)表示子樹的誤差代價;

決策樹系列(二)——剪枝

ri(t)爲子節點i的錯誤率;pi(t)表示節點i的數據節點佔比;

N(T)表示子樹節點個數。

算例:

下圖是決策樹A的其中一顆子樹,決策樹的總數據量爲40。

決策樹系列(二)——剪枝

該子樹的表面誤差率增益值可以計算如下:

決策樹系列(二)——剪枝

求出該子樹的表面錯誤覆蓋率爲 1/40,只要求出其他子樹的表面誤差率增益值就可以對決策樹進行剪枝.

查看原文 >>
相關文章