以Random Forests和AdaBoost為例介紹下bagging和boosting方法


我們學過決策樹、朴素貝葉斯、SVM、K近鄰等分類器算法,他們各有優缺點;自然的,我們可以將這些分類器組合起來成為一個性能更好的分類器,這種組合結果被稱為 集成方法 (ensemble method)或者 元算法 (meta-method)。使用集成算法時有多種形式:

  • 不同算法的集成
  • 同一種算法在不同設置下的集成
  • 數據集不同部分分配 給不同分類器之后的集成

1、bagging 和boosting綜述

bagging 和boosting中使用的分類器類型都是一樣的,即上述第二種形式。

bagging,也稱為自舉匯聚法(boostrap aggegating) 是在原始數據集中有放回的選擇S次后得到S個新數據集的一種技術。新數據集和原數據集大小相等,但是有可能某一條數據被選擇了好幾次,而原數據集中某些數據在新數據集中可能不出現。在S個數據集建好之后,將某個算法分別作用於每個數據集就得到S個分類器。對新數據集進行分類時,就用這S個分類器進行分類,與此同時,選擇分類器投票結果中最多的的類別作為最終分類結果,如圖1所示。Random Forests是一種更先進的bagging算法,下文詳細介紹。

boosting 與bagging很類似,不同的是Boosting是通過串行訓練而獲得的,而每個新分類器都是根據已經訓練好的分類器的性能來進行訓練的。AdaBoost是這一種常用的boosting方法。

2、一種提升算法:AdaBoost

在概率近似正確的學習框架(probably approximately corect,PAC)中,一個概念,如果存在一個多項式的學習算法能夠學習他,並且正確率很高,在統計學習方法中,稱這個概念是 強可學習(strongly learnable)的;而如果正確率僅僅比隨機猜測(正確率大於0.5)略好,那么稱這個概念是 弱可學習(weakly learnable) 的。然而Schapire證明了再PAC學習框架下,一個概念是強可學習的充分必要條件是這個概念是弱可學習的。

那么也就是說,我們可以將“弱學習算法”提升為“強學習算法”,畢竟弱學習算法比強學習算法要好找的多了。問題是怎么來提升呢?有很多算法,最具代表性的就是AdaBoost算法。大多數提升方法都是改變訓練數據的概率分布(訓練數據的權值分布)。

因此,對提升算法有兩個問題需要回答:

  1. 在每一輪如何改變訓練數據的權值或者概率分布
  2. 如何將若干分類器組合成一個強分類器

對於第一個問題AdaBoost通過集中關注那些錯分的數據,即將錯分的數據賦予較大的權重,沒錯分的數據賦予較小的權重,然后再將這有具有新權重的數據集進行訓練,從而來獲得新分類器;對於第二個問題,AdaBoost采取加權多數表決的方法。

2.1、AdaBoost算法

首先提一下幾個數學表達式的意思,當做本小節的先驗知識吧。

AdaBoost算法

在上述算法中,值得注意的是:

  • 在2(c)中,由弱分類器的系數計算公式可知,在當前的弱分類器分類后,其分類誤差率em如果小於0.5,系數$\alpha _{m}$將大於0,並且系數隨着誤差率em的減少而增大,所以分類誤差率小的基本分類器在最終分類器中的作用越大。
  • 在2(d)中,更新權值分布時,被基本分類器誤分類的樣本的權值得以擴大,而被正確分類的樣本的權值得以縮小,即誤分類樣本在下一次訓練中起更大的作用。
  • 在步驟(3)中,f(x)的符號決定實例x的類,它的絕對值表示分類的確信度。利用基本分類器的線性組合構建最終分類器是AdaBoost的一個特點

AdaBoost算法的示意圖如圖2所示。

2.2、AdaBoost算法的誤差分析

AdaBoost最基本的性質是它能在學習的過程中不斷的減少訓練誤差,即在訓練數據集上的分類誤差率。那么訓練誤差是不是能無限制的減少呢?AdaBoost訓練誤差界定理回答了這個問題。

AdaBoost算法最終分類器的訓練誤差界為:

推導從略,見《統計學習方法》一書。

這一定理說明,可以在每一輪選取適當的Gm使得Zm最小,從而使訓練誤差下降最快。

對於二類分類問題有:

AdaBoost的訓練誤差是以指數速率下降的。AdaBoost具有適應性,即它能適應弱分類器各自的訓練誤差率,這也是它名稱的由來,即adaptive。

3、Random Forests(RF)

RF在實際中使用非常頻繁,其本質上和bagging並無不同,只是RF更具體一些。一般而言可以將RF理解為bagging和DT(CART)的結合。RF中的基學習器使用的是CART樹,由於算法本身能降低方差(variance),所以會選擇完全生長的CART樹。抽樣方法使用bootstrap,除此之外,RF認為隨機程度越高,算法的效果越好。所以RF中還經常隨機選取樣本的特征屬性、甚至於將樣本的特征屬性通過映射矩陣映射到隨機的子空間來增大子模型的隨機性、多樣性。RF預測的結果為子樹結果的平均值。RF具有很好的降噪性,相比單棵的CART樹,RF模型邊界更加平滑,置信區間也比較大。一般而言,RF中,樹越多模型越穩定。

3.1 隨機森林算法

隨機森林訓練過程如下:

(1)給定訓練集S,測試集T,特征維數F。確定參數:使用到的CART的數量t,每棵樹的深度d,每個節點使用到的特征數量f,終止條件:節點上最少樣本數s,節點上最少的信息增益m
對於第1-t棵樹,i=1-t:
(2)從S中有放回的抽取大小和S一樣的訓練集S(i),作為根節點的樣本,從根節點開始訓練
(3)如果當前節點上達到終止條件,則設置當前節點為葉子節點,如果是分類問題,該葉子節點的預測輸出為當前節點樣本集合中數量最多的那一類c(j),概率p為c(j)占當前樣本集的比例;如果是回歸問題,預測輸出為當前節點樣本集各個樣本值的平均值。然后繼續訓練其他節點。如果當前節點沒有達到終止條件,則從F維特征中無放回的隨機選取f維特征。利用這f維特征,尋找分類效果最好的一維特征k及其閾值th,當前節點上樣本第k維特征小於th的樣本被划分到左節點,其余的被划分到右節點。繼續訓練其他節點。有關分類效果的評判標准在后面會講。
(4)重復(2)(3)直到所有節點都訓練過了或者被標記為葉子節點。
(5)重復(2),(3),(4)直到所有CART都被訓練過。

利用隨機森林的預測過程如下:

對於第1-t棵樹,i=1-t:
(1)從當前樹的根節點開始,根據當前節點的閾值th,判斷是進入左節點(<th)還是進入右節點(>=th),直到到達,某個葉子節點,並輸出預測值。
(2)重復執行(1)直到所有t棵樹都輸出了預測值。如果是分類問題,則輸出為所有樹中預測概率總和最大的那一個類,即對每個c(j)的p進行累計;如果是回歸問題,則輸出為所有樹的輸出的平均值。

參考資料

  1. 《統計機器學習》,李航
  2. 《機器學習實戰》,Peter
  3. http://www.cnblogs.com/hrlnw/p/3850459.html


免責聲明!

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



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