統計學習方法--提升方法adaBoost算法(集成學習)


1、主要內容

  介紹集成學習,然后講述boosting和bagging的區別與聯系,同時對adaBoost進行推導然后進行gbdt的推導,最后比較隨機森林和gdbt的區別和聯系。

2、集成學習

  集成學習(ensamble learning)通過構建多個學習器來完成任務。集成學習的一般結構:先產生一組“個體學習器”,然后再用某種策略將這些個體學習器進行聯系起來,個體學習器由現有的一個算法產生,比如說c4.5決策樹,bp神經網絡等。根據集成學習中個體學習器是否相同可以分為同質集成和已質集成,同質集成中個體學習器被稱為“基學習器”,已質集成中的個體學習器稱為“組件學習器”。

  集成學習通過使用多個學習器進行組合獲得強大的功能,通常個體學習器為弱分類器:分類結果不是太好但是要比隨機猜測的預測結果好(精度高於50%)。目前集成學習的生成方式有兩類:

  1)、boosting:個體學習器之間存在強烈的依賴關系,只能進行串行生成不同的個體學習器,以adaboost和gdbt為代表

  2)、bagging:個體學習器獨立生成,互相之間沒有關系,以隨機森林為代表

3、boosting 和 bagging

  boosting的工作機制:從初始訓練數據集出發訓練出一個基學習器,然后再根據基學習器的表現對訓練的樣本進行調整,使得先前基學習器中學習結果錯誤的樣本權重提升獲得更大的關注,然后使用調整后的訓練樣本進行訓練下一個基學習器,如此重復直到產生足夠數量的基學習器。

  bagging的工作機制:都訓練樣本進行又放回的抽樣(bootstrap sampling)產生和訓練數據規模相同的新的訓練數據,重復動作產生N個訓練樣本,然后使用這N個樣本數據進行分別訓練基學習器,基學習器之間沒有關系,相互獨立。

4、adaboost算法

  輸入:訓練數據集 T={(x1,y1),(x2,y2),...,(xN,yN)}; 其中xy = {-1, +1};弱分類器算法

  輸出:最終分類器G(x),此處得到的是一個分類器

  (1)、初始化訓練數據的分布權重

    D1 = {w11,w12,....,w1i,.....,w1N}, i = 1,2,3, ..... , N

    w1i = 1/N

  (2)、對於要生成M個基學習器,則對於m = 1,2,.....,M:

  (a)、使用具有權重分布Dm的訓練數據進行生成基學習器:

    

  (b)、計算Gm(x)在訓練數據集上的分類誤差率:

    

  關於這個誤差率計算的問題,針對不同的問題有不同的計算方法,此處為分類器的計算方法,上式還可以寫為:

    

  這個表達式就表明了計算分類錯誤率時就是被Gm(x)誤分類樣本的權重之和,從這個關系上可以看出分類誤差率和樣本權重之間的關系。在此處,實際工程中需要判斷以下誤差率是否小於0.5,如果小於則表示這個基學習器還不如隨機預測的結果,如果加入到最終分類器中會嚴重影響分類器的性能需要拋棄該學習器。

  (c)、計算基學習器Gm(x)的系數

    

  基學習器Gm(x)的系數就是這個學習器正確分類的概率除以分錯概率的對數值的一半。當em越小時αm也就越大,也就是說分類誤差率越小的分類器在最終的分類器中的作用就越來越大,也是保證了最終分類器性能強勁的原因。同時如果 em 》0.5的話,結果小於0.這是不允許的,這就是上面要拋棄掉分類誤差大於0.5的學習器的原因。

  (d)、更新訓練數據集的權重分布

    

 

    

 

   其中Zm為:

  

  從更新權重值的公式可以看出,正確分類的樣本數據的權重減小了(e-am < 1),同樣錯誤分類的樣本的權重變大了,因此錯誤樣本在下一輪的訓練中會被重視,如果這個樣本還是算錯那么誤差率必然會很大,因為必然會導致基學習器變換分類策略使得誤差率變小,通過更新權重避免了改變訓練數據,使不同的訓練數據在基學習器的學習過程中起到不同的作用,這是adaBoost的一個特點。

  (3)、構建基本分類器的線性組合

    

  得到最終的分類器:

  

  需要注意的是這里的αm的和並不等於1,表示每個分類器的重要程度,f(x)的符號表明了x的類別,|f(x)|表示分類的確信度,越大分類結果越可靠。

   對於adaBoost的回歸情況分析,以下內容來自http://www.cnblogs.com/pinard/p/6133937.html

  回歸問題與分類問題算法的不同點在於誤差率計算的方式不同,分類問題一般都采用0/1損失函數,而回歸問題一般都是平方損失函數或者是線性損失函數,因此此處會有較大的不同。

  對於第k個弱學習器,計算他在訓練集上的最大誤差:

  

  然后計算每個樣本的相對誤差結果:

  

  此處使用的是線性誤差的情況,如果是平方誤差,則

  

  如果采用指數誤差函數那么:

  

  最終得到第k個弱學習器的誤差率:

  

  有了誤差率后看學習器的權重系數的計算:

  

  計算完學習器的權重系數后更芯樣本權重Dm+1

  

  最后進行線性組合:

  

 

  同時其他的adaBoost的算法可以參考:http://www.cnblogs.com/jcchen1987/p/4581651.html

  

  這里對Adaboost算法的優缺點做一個總結。

    Adaboost的主要優點有:

    1)Adaboost作為分類器時,分類精度很高

    2)在Adaboost的框架下,可以使用各種回歸分類模型來構建弱學習器,非常靈活。

    3)作為簡單的二元分類器時,構造簡單,結果可理解。

    4)不容易發生過擬合

    Adaboost的主要缺點有:

    1)對異常樣本敏感,異常樣本在迭代中可能會獲得較高的權重,影響最終的強學習器的預測准確性

5、隨機森林

  bagging的典型代表。未完


免責聲明!

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



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