1. 程式人生 > >機器學習總結(六):整合學習(Boosting,Bagging,組合策略)

機器學習總結(六):整合學習(Boosting,Bagging,組合策略)

(也是面試常考)

主要思想:利用一定的手段學習出多個分類器,而且這多個分類器要求是弱分類器,然後將多個分類器進行組合公共預測。核心思想就是如何訓練處多個弱分類器以及如何將這些弱分類器進行組合,個體分類器應該“好而不同”。

弱分類器如何選擇:一般採用弱分類器的原因在於將誤差進行均衡,因為一旦某個分類器太強了就會造成後面的結果受其影響太大,嚴重的會導致後面的分類器無法進行分類,,常用的弱分類器可以採用誤差小於0.5的,比如邏輯斯蒂迴歸,SVM,神經網路等。

如何生成個體學習器:

(1)個體學習器間存在強依賴關係,必須序列生成的序列化方法,例如基於Booosting;

(2)個體學習器間不存在強依賴關係,可同時生成的並行化方法,例如基於Bagging和隨機森林。

Boosting演算法:

(1)基本思想:先從初始訓練集上訓練一個基學習器,再根據基學習器的表現對訓練樣本分佈進行調整,使得先前基學習器做錯的訓練樣本在後續受到更多關注,然後基於調整後的樣本分佈來訓練下一個基學習器,如此反覆進行,直至基學習器數目達到實現指定的值T,最終將這T個基學習器進行加權結合。

(2)Adaboost演算法

基本思想:通過訓練資料的分佈構造一個分類器,然後通過誤差率求出這個弱分類器的權重,通過更新訓練資料的分佈,迭代進行,直到達到迭代次數或者損失函式小於某一閾值。

演算法流程:a.初始化訓練資料的分佈,訓練資料的權重設定為平均分配;b.選擇合適的基本分類器;c.計算分類器的係數和更新資料權重:

其中

d.構建基本分類器的線性組合

特點:關注降低偏差,能基於泛化效能相當弱的學習器構建出很強的整合。

Bagging演算法:

(1)基本思想:自助取樣法,給定包含m個樣本的資料集,隨機取出一個樣本放入取樣集中,再把該樣本放回初始資料集,這樣經過m次隨機取樣操作,可以得到含m個樣本的取樣集。照這樣,可以取樣出T個含m個訓練樣本的取樣集,然後基於每個取樣集訓練出一個基學習器,再將這些基學習器進行結合。結合時對多分類任務使用簡單投票法,對迴歸任務使用簡單平均法。

(2)優點: a.訓練一個Bagging整合與直接使用基學習演算法訓練一個學習器的複雜度同階,高效;b.

標準的AdaBoost只適用於二分類,Bagging能直接用於多分類,迴歸等任務;c.因為自助取樣,每個基學習器只使用了出事訓練集中約63.2%的樣本,剩下的樣本可以用作驗證集等等。

(3) 特點:關注降低方差,在易受樣本擾動的學習器上效用更為明顯。

(4)隨機森林演算法(RandomForest,簡稱RF)

基本思想:RF在以決策樹為基學習器構建Bagging整合的基礎上,進一步在決策樹的訓練過程中引入了隨機屬性選擇。(即先從節點的屬性集合M中隨機選擇一個包含k個屬性的子集,然後再從這個子集中選擇一個最優屬性用於劃分,一般k遠小於M,取k= )

特點:兩個隨機過程避免了過擬合現象的出現(一是輸入資料是隨機的從整體的訓練資料中選取一部分作為一棵決策樹的構建,而且是有放回的選取,第二個是隨即特徵的選取)。

過程:a. 從訓練資料中選取n個數據作為訓練資料輸入,有放回的選取,這樣會造成一部分資料無法被取到,這部分資料被稱為袋外資料,可以使用其做誤差估計;b.選取了輸入的訓練資料之後,需要構建決策樹,隨機選取k個特徵;c.構造決策時,按照選取最小的基尼指數進行分裂節點的選取進行決策樹的構建,直到該節點所有訓練樣例都屬於同一類或達到樹的最大深度;d,重複b、c,得到隨機森林;e. 多數投票進行決策。

注意點:不需要剪枝,構建決策樹時分裂點的選擇是依據最小基尼係數的。

基尼係數:

優點:1.兩個隨機性的引入使得隨機森林不容易陷入過擬合還具有很好的抗噪聲能力;2.容易做成並行化方法;3.實現簡單;4.能夠處理高緯度的資料,並且不需要做特徵選擇。

缺點:對噪聲敏感。

如何在隨機森林中避免出現過擬合?1.對樹的深度進行控制;2.把模型訓練比較複雜,看合併節點後的子樹能否降低泛化誤差。


組合策略

為什麼要結合學習器:(1)統計方面,由於假設空間往往很大,可能有多個假設在訓練集上達到同等效能。此時若使用單學習器可能因誤選導致泛化效能不佳;(2)計算方面,單個學習演算法容易陷入區域性極小;(3)表示方面,某些學習任務的真實假設可能不在當前學習演算法的假設空間,此時使用多個學習器擴大假設空間。

演算法:平均法(加權(個體學習器效能相差較大),簡單(效能相近)),投票法(絕對多數(超過半數標記。否則拒絕預測),相對多數,加權投票),學習法(通過另一個學習器來進行結合,Stacking演算法

Stacking演算法:

基本思想:先從初始資料集訓練出初級學習器,然後生成一個新資料集用於訓練次級學習器。在這個新資料集中,初級學習器的輸出被當作樣例輸入特徵,而出事樣本的標記仍被當作樣例標記。

注意點:若直接用初級學習器的訓練集來產生次級訓練集,則過擬合風險會比較大;一般會通過交叉驗證等方式,用訓練初級學習器未使用的樣本來產生次級學習器的訓練樣本。

如何增強整合學習的多樣性?

(1)     資料樣本擾動(基於取樣法,給定初始資料集,可以產生不同的資料子集,例如Bagging的自助取樣,AdaBoost的序列取樣),適合不穩定的基學習器(決策樹,神經網路等)。

(2)     輸入屬性擾動(不同的屬性子集提供了觀察資料的不同視角),適合於冗餘屬性多的資料集。

(3)     輸出表示擾動(對訓練樣本的類標記稍作變動或者對輸出表示進行轉化)

(4)     演算法引數擾動(修改基學習器的引數,如神經網路層數等等)。

GBDT(gradient boosting decision tree)

基本思想:積跬步以至千里,每次學習一點。先用一個初始值來學習一棵決策樹,葉子處可以得到預測的值,以及預測之後的殘差,然後後面的決策樹就是要基於前面決策樹的殘差來學習,直到預測值和真實值的殘差為0。最後對於測試樣本的預測值,就是前面許多棵決策樹預測值的累加。

Shrinkage(縮減):仍以殘差作為學習目標,但對於殘差學習出來的結果,只累加一小部分(step*殘差)逐步逼進目標。原因:每次走一小步逐漸逼近結果的效果要比每次邁一大步很快逼近結果的方式更容易避免過擬合。本質:為每棵樹設定一個weight,累加時要乘以這個weight。

基於梯度的版本:代價函式是對數似然函式形式。沿著殘差減小的梯度方向學習到迴歸樹。

GBDT和隨機森林對比

相同點:1.都是由多棵樹組成;2.最終的結果都是由多棵樹一起決定;

不同點:1.隨機森林的子樹可以是分類或迴歸樹,而GBDT只能是迴歸樹;2.隨機森林可以並行生成,而GBDT只能是序列;3.輸出結果,隨機森林採用多數投票,GBDT將所有結果累加起來;4隨機森林對異常值不敏感,GBDT敏感;5:隨進森林減少方差,GBDT減少偏差;6:隨機森林對資料集一視同仁,GBDT是基於權值的弱分類器的整合。

GBDT和隨機森林哪個容易過擬合?

隨機森林,因為隨機森林的決策樹嘗試擬合數據集,有潛在的過擬合風險,而boostingd的GBDT的決策樹則是擬合數據集的殘差,然後更新殘差,由新的決策樹再去擬合新的殘差,雖然慢,但是難以過擬合。