Boosting和Bagging


集成學習(ensemble learning)通過構建並結合多個學習器來完成學習任務。集成學習通過將多個學習器進行結合,常可以獲得比單一學習器顯著優越的泛化性能。這對“弱學習器”尤為明顯,因此集成學習的很多理論研究都是針對弱學習器進行的。

要獲得好的集成,個體學習器應該“好而不同”,即個體學習器要有一定的“准確性”,即學習器不能太壞,並且要有“多樣性”,即學習器之間有差異。

根據個體學習器的生成方式,目前的集成學習方法大致可以分為兩大類,即個體學習器間存在強依賴關系,必須串行生成的序列化方法,以及個體學習器間不存在強依賴關系,可同時生成的並行化方法,前者的代表是boosting,后者的代表是Bagging和隨機森林。

1. Boosting

Boosting是一族可將弱學習器提升為強學習器的算法。這族算法的工作機制類似:先從初始訓練集訓練出一個基學習器,再根據基學習器的表現對訓練數據樣本分布進行調整,似的先前基學習器做錯的訓練樣本在后續受到更多的關注,然后基於調整后的樣本分布來訓練下一個基學習器;如此重復進行,直至基學習器數目達到事先指定的值T,最終將這T個基學習器進行加權結合。

Boosting算法最著名的代表是AdaBoost,其可以通過“加性模型”(additive model)來推導得到,即基學習器的線性組合為:

來最小化指數損失函數(exponential loss function):

若H(x)能令指數損失函數最小化,則考慮用損失函數對H(x)求偏導:

這意味着sign(H(x))達到了貝葉斯最優錯誤率。換言之,若指數損失函數最小化,則分類錯誤率也將最小化;這說明指數損失函數是分類任務原本0/1損失函數的一致的替代損失函數。由於這個替代函數有更好的數學性質,例如它是連續可微函數,因此我們用它來替代0/1損失函數作為優化目標。

在AdaBoost算法中,第一個基分類器是通過直接將基學習器用於初始數據分布而得;此后迭代地生成下一個基分類器以及其對應的加權權重分。當基分類器基於當前的數據分布得到后,該基分類器的權重應使得其最小化指數損失函數:

AdaBoost算法在獲得 Ht-1后樣本分布將進行調整,使得下一輪的基學習器ht能糾正Ht-1的一些錯誤。理想情況下能糾正全部錯誤,即最小化:

由此可見,理想的ht將在分布Dt下最小化分類誤差。因此,弱分類器將基於分布Dt來訓練,且針對Dt的分類誤差應小於0.5.這在一定程度上類似“殘差逼近”的思想。考慮Dt和Dt+1的關系,有:

於是,我們可以從基於“加性模型”和優化”指數損失函數“的角度推導出AdaBoost算法:

 

Boosting算法要求基學習器能對特定數據分布進行學習,這可以通過”重賦權法“或者”重采樣法“來處理。

從偏差-方差分解的角度(http://www.cnblogs.com/bentuwuying/p/6654536.html)來看,Boosting主要關注降低偏差,因此Boosting能基於泛化性能相當弱的學習器構建出很強的集成。

 

2. Bagging與隨機森林

欲得到泛化性能強的集成,集成中的個體學習器應盡可能相互獨立;雖然”獨立“在現實任務中無法做到,但可以設法使基學習器盡可能具有較大的差異。給定一個訓練數據集,一種可能的做法就是對訓練樣本進行采樣,產生出若干個不同的子集,再從每個子集中訓練出一個基學習器。由於訓練數據的不同,我們獲得的基學習器可望具有較大的差異。然而,為獲得較好的集成,我們同時還希望個體學習器不能太差。如果采樣的每個子集都完全不同,則每個學習器只用到了一小部分訓練數據,甚至不足以進行有效學習,這顯然無法保證產生出較好的基學習器。為解決這個問題,我們可以考慮使用互相有交集的采樣子集。這就是Bagging的思想。

從偏差-方差分解的角度看,Bagging主要關注的是降低方差,因此它在不剪枝決策樹,神經網絡等易受樣本擾動的學習器上效果更為明顯。

隨機森林(RF)是Bagging的一個擴展變體。RF在以決策樹為基學習器構建Bagging集成的基礎上,進一步在決策樹的訓練過程中引入隨機屬性選擇。在RF中,對基決策樹的每個結點,先從該節點的屬性集合中隨機選擇一個包含k個屬性的子集,然后再從這個子集中選擇一個最優屬性用於划分。一般情況下,推薦k=log2d,d是所有的屬性集合。

隨機森林中的基學習器的多樣性不僅來自於樣本擾動,還來自於屬性擾動,這就使得最終集成的泛化性能可通過個體學習器之間差異度的增加而進一步提升。

 

3. 總結

學習器結合可能會從三方面帶來好處。

1. 從統計的方面來看,由於學習任務的假設空間往往很大,可能有多個假設在訓練集上達到同等性能,此時若使用單學習器可能因誤選而導致泛化性能不佳,結合多個學習器可以減小這個風險。

2. 從計算的方面來看,學習算法往往會陷入局部極小,有的局部極小點所對應的泛化性能可能很糟糕,而通過多次運行之后進行結合,可降低陷入糟糕局部極小點的風險。

3. 從表示的方面來看,某些學習任務的真實假設可能不在當前學習算法所考慮的假設空間中,此時若使用單學習器肯定無效,而通過結合多個學習器,由於相應的假設空間有所擴大,有可能學得更好的近似。

 


免責聲明!

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



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