決策樹-剪枝算法(二)


上一章主要描述了ID3算法的的原理,它是以信息熵為度量,用於決策樹節點的屬性選擇,每次優選信息量最多

的屬性,以構造一顆熵值下降最快的決策樹,到葉子節點處的熵值為0,此時每個葉子節點對應的實例集中的實例屬於同一類。

理想的決策樹有三種:

1.葉子節點數最少

2.葉子加點深度最小

3.葉子節點數最少且葉子節點深度最小。

在實際的操作中還會設計到ID3算法的收斂,過度擬合等問題下面依次進行描述

1.ID算法收斂

2.過度擬合問題

1.ID3算法的收斂

當ID3確定根節點以及后續節點之后,因此當算法滿足以下條件該分支的既可以結束

1.該群數據的每一個數據都已經歸類到同一類別中

2.該群數據已經沒有辦法找到新的屬性進行節點分割

3.該群數據已經沒有任何尚未處理的數據。

2.過度擬合問題

原因:

造成多度擬合的潛在原因主要以下兩個方面

1.噪聲導致的過度擬合

比如錯誤的分類,或者屬性值。

2.缺乏代表性樣本所導致的過度擬合

方法:

1.預剪枝

通過提前停止樹的構建而對樹剪枝,一旦停止,節點就是樹葉,該樹葉持有子集元祖最頻繁的類。

停止決策樹生長最簡單的方法有:

1.定義一個高度,當決策樹達到該高度時就停止決策樹的生長

2.達到某個節點的實例具有相同的特征向量,及時這些實例不屬於同一類,也可以停止決策樹的生長。這個方法對於處理

數據的數據沖突問題比較有效。

3.定義一個閾值,當達到某個節點的實例個數小於閾值時就可以停止決策樹的生長

4.定義一個閾值,通過計算每次擴張對系統性能的增益,並比較增益值與該閾值大小來決定是否停止決策樹的生長。

2.后剪枝方法

后剪枝(postpruning):它首先構造完整的決策樹,允許樹過度擬合訓練數據,然后對那些置信度不夠的結點子樹用葉子結點來代替,該葉子的類標號用該結點子樹中最頻繁的類標記。相比於先剪枝,這種方法更常用,正是因為在先剪枝方法中精確地估計何時停止樹增長很困難。

以上可以理解為后剪枝的基本思想,其中后剪枝方法主要有以下幾個方法:

Reduced-Error Pruning(REP,錯誤率降低剪枝)

Pesimistic-Error Pruning(PEP,悲觀錯誤剪枝)

Cost-Complexity Pruning(CCP,代價復雜度剪枝)

EBP(Error-Based Pruning)(基於錯誤的剪枝)

以下分別進行說明:

1.REP

REP方法是一種比較簡單的后剪枝的方法,在該方法中,可用的數據被分成兩個樣例集合:一個訓練集用來形成學習到的決策樹,一個分離的驗證集用來評估這個決策樹在后續數據上的精度,確切地說是用來評估修剪這個決策樹的影響。

這個方法的動機是:即使學習器可能會被訓練集中的隨機錯誤和巧合規律所誤導,但驗證集合不大可能表現出同樣的隨機波動。所以驗證集可以用來對過度擬合訓練集中的虛假特征提供防護檢驗。

該剪枝方法考慮將書上的每個節點作為修剪的候選對象,決定是否修剪這個結點有如下步驟組成:

1:刪除以此結點為根的子樹

2:使其成為葉子結點

3:賦予該結點關聯的訓練數據的最常見分類

4:當修剪后的樹對於驗證集合的性能不會比原來的樹差時,才真正刪除該結點

因為訓練集合的過擬合,使得驗證集合數據能夠對其進行修正,反復進行上面的操作,從底向上的處理結點,刪除那些能夠最大限度的提高驗證集合的精度的結點,直到進一步修剪有害為止(有害是指修剪會減低驗證集合的精度)。

REP是最簡單的后剪枝方法之一,不過由於使用獨立的測試集,原始決策樹相比,修改后的決策樹可能偏向於過度修剪。這是因為一些不會再測試集中出現的很稀少的訓練集實例所對應的分枝在剪枝過如果訓練集較小,通常不考慮采用REP算法。

盡管REP有這個缺點,不過REP仍然作為一種基准來評價其它剪枝算法的性能。它對於兩階段決策樹學習方法的優點和缺點提供了了一個很好的學習思路。由於驗證集合沒有參與決策樹的創建,所以用REP剪枝后的決策樹對於測試樣例的偏差要好很多,能夠解決一定程度的過擬合問題。

2.PEP

悲觀錯誤剪枝法是根據剪枝前后的錯誤率來判定子樹的修剪。該方法引入了統計學上連續修正的概念彌補REP中的缺陷,在評價子樹的訓練錯誤公式中添加了一個常數,假定每個葉子結點都自動對實例的某個部分進行錯誤的分類。

把一顆子樹(具有多個葉子節點)的分類用一個葉子節點來替代的話,在訓練集上的誤判率肯定是上升的,但是在新數據上不一定。於是我們需要把子樹的誤判計算加上一個經驗性的懲罰因子。對於一顆葉子節點,它覆蓋了N個樣本,其中有E個錯誤,那么該葉子節點的錯誤率為(E+0.5)/N。這個0.5就是懲罰因子,那么一顆子樹,它有L個葉子節點,那么該子樹的誤判率估計為:

這樣的話,我們可以看到一顆子樹雖然具有多個子節點,但由於加上了懲罰因子,所以子樹的誤判率計算未必占到便宜。剪枝后內部節點變成了葉子節點,其誤判個數J也需要加上一個懲罰因子,變成J+0.5。那么子樹是否可以被剪枝就取決於剪枝后的錯誤J+0.5在的標准誤差內。對於樣本的誤差率e,我們可以根據經驗把它估計成各種各樣的分布模型,比如是二項式分布,比如是正態分布。

那么一棵樹錯誤分類一個樣本值為1,正確分類一個樣本值為0,該樹錯誤分類的概率(誤判率)為e(e為分布的固有屬性,可以通過統計出來),那么樹的誤判次數就是伯努利分布,我們可以估計出該樹的誤判次數均值和標准差:

把子樹替換成葉子節點后,該葉子的誤判次數也是一個伯努利分布,其概率誤判率e為(E+0.5)/N,因此葉子節點的誤判次數均值為

使用訓練數據,子樹總是比替換為一個葉節點后產生的誤差小,但是使用校正后有誤差計算方法卻並非如此,當子樹的誤判個數大過對應葉節點的誤判個數一個標准差之后,就決定剪枝:

這個條件就是剪枝的標准。當然並不一定非要大一個標准差,可以給定任意的置信區間,我們設定一定的顯著性因子,就可以估算出誤判次數的上下界。

話不多說,上例子:

在上述例子中T8種的類1可以認為是識別錯誤的T4這課子樹的估計錯誤為5,T4子樹的最后葉子節點為3個

上述是悲觀錯誤剪枝。

悲觀剪枝的准確度比較高,但是依舊會存在以下的問題:

1.PeP算法實用的從從上而下的剪枝策略,這種剪枝會導致和預剪枝同樣的問題,造成剪枝過度。

2.Pep剪枝會出現剪枝失敗的情況。d

代價復雜度剪枝:

該算法為子樹Tt定義了代價(cost)和復雜度(complexity),以及一個可由用戶設置的衡量代價與復雜度之間關系的參數α,其中,代價指在剪枝過程中因子樹Tt被葉節點替代而增加的錯分樣本,復雜度表示剪枝后子樹Tt減少的葉結點數,α則表示剪枝后樹的復雜度降低程度與代價間的關系,定義為:

其中,

|N1|:子樹Tt中的葉節點數;

R(t):結點t的錯誤代價,計算公式為R(t)=r(t)*p(t),

r(t)為結點t的錯分樣本率,p(t)為落入結點t的樣本占所有樣本的比例;

R(Tt):子樹Tt錯誤代價,計算公式為R(Tt)=∑R(i),i為子樹Tt的葉節點。

CCP剪枝算法分為兩個步驟:

1.對於完全決策樹T的每個非葉結點計算α值,循環剪掉具有最小α值的子樹,直到剩下根節點。在該步可得到一系列的剪枝樹{T0,T1,T2......Tm},其中T0為原有的完全決策樹,Tm為根結點,Ti+1為對Ti進行剪枝的結果;

2.從子樹序列中,根據真實的誤差估計選擇最佳決策樹。

上例子:


EBP:

第一步:計算葉節點的錯分樣本率估計的置信區間上限U
第二步:計算葉節點的預測錯分樣本數
葉節點的預測錯分樣本數=到達該葉節點的樣本數*該葉節點的預測錯分樣本率U
第三步:判斷是否剪枝及如何剪枝
分別計算三種預測錯分樣本數:
計算子樹t的所有葉節點預測錯分樣本數之和,記為E1
算子樹t被剪枝以葉節點代替時的預測錯分樣本數,記為E2
算子樹t的最大分枝的預測錯分樣本數,記為E3
比較E1E2E3,如下:
E1最小時,不剪
E2最小時,進行剪枝,以一個葉節點代替t
E3最小時,采用“嫁接”(grafting)策略,即用個最大分枝代替t
其算法的具體過程可以參考附件


以下是幾種剪枝的方法的比較:




REP PEP CCP
剪枝方式 自底向上 自頂向下 自底向上
計算復雜度 0(n) o(n) o(n2)
誤差估計 剪枝集上誤差估計 使用連續糾正 標准誤差






附件列表

     


    免責聲明!

    本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



     
    粵ICP備18138465號   © 2018-2025 CODEPRJ.COM