1. 程式人生 > >機器學習之整合學習Ensemble

機器學習之整合學習Ensemble

整合演算法:


將多個分類器整合起來而形成的新的分類演算法。這類演算法又稱元演算法(meta-algorithm)。最常見的整合思想有兩種bagging和boosting。

整合思想 :

  1. boosting:重賦權(re-weighting)

    --基於錯誤提升分類器效能,通過集中關注被已有分類器分類錯誤的樣本,構建新分類器並整合。

    boosting的思想是 : 訓練集(其中各個元素)的權重是根據學習器的表現來改變的.

    bagging採用自助取樣的方式”產生”出多個訓練集.但是boosting只有一個訓練集,但是訓練集中各個元素(輸入向量)的權重是不同的.boosting是先從具有初始權重的訓練集訓練出一個弱學習器1,然後根據弱學習器1的表現,來更新樣本的權重

    . 然後再具有新的權重的訓練集上面訓練弱學習器2,然後根據弱學習器2的表現來更新樣本的權重……..反覆多次 ,得到m個學習器,最後整合這些弱學習器得到強學習器. 比較出名的就是Adaboost演算法。            

  •                                                              
  1. bagging:bootstrap sampling(有放回地取樣)

    --基於資料隨機重抽樣的分類器構建方法。

    bagging的思想 :  通過自助取樣的方法得到K個訓練集,然後分別在這K個訓練集上面訓練學習器.然後就得到了K個學習器.

    bootstrap : 不依靠外界的幫助,或者叫做自助法
    . 在這裡表示一種有放回的抽樣方法. bootstrap sampling : 自助取樣,對於N個樣本的訓練集,我從裡面隨機取出m個樣本,得到一個子訓練集.然後把這些樣本放回. 然後再取m個樣本,得到第二個子訓練集,再放回去………..重複這樣的步驟k次,得到k個子訓練集. Bagging可以看做是bootstrap aggregation的簡寫. 


    bagging對於弱學習器沒有限制,也就是說,你可以用決策樹,SVM等等都是可以的.一般常用的是決策樹和神經網路. 因為bagging的隨機取樣思路,模型的泛化能力很強,降低了模型的方差.但是對於訓練集的擬合程度就不是那麼好,也就是說偏差會大一些.

     符合bagging思想的比較出名的學習演算法就是隨機森林.

主要方法:

1、強可學習和弱可學習

    在整合學習方法中,是將多個弱模型,通過一定的組合方式,組合成一個強模型。在《統計學習方法》中介紹了“強可學習(strongly learnable)”和“弱可學習(weakly learnable)”的概念。     在概率近似正確(probably approximately correct, PAC)學習的框架中,一個概念(一個類),如果存在一個多項式的學習演算法能夠學習它,並且正確率很高,那麼就稱這個概念是強可學習的。一個概念,如果存在一個多項式的學習演算法能夠學習它,學習正確率僅比隨機猜測略好,那麼就稱這個概念是弱可學習的。Schapire指出在PAC學習框架下,一個概念是強可學習的充分必要條件是這個概念是弱可學習的。那麼對於一個學習問題,若是找到“弱學習演算法”,那麼可以將弱學習方法變成“強學習演算法”。

2、在驗證集上找表現最好的模型

    這樣的方法的思想與決策樹的思想類似,在不同的條件下選擇滿足條件的演算法。

3、多個模型投票或者取平均值

    對於資料集訓練多個模型,對於分類問題,可以採用投票的方法,選擇票數最多的類別作為最終的類別,而對於迴歸問題,可以採用取均值的方法,取得的均值作為最終的結果。在這樣的思路里最著名的是Bagging方法.BaggingBoostrap Aggregating,其中,Boostrap是一種有放回的抽樣方法,其抽樣策略是簡單的隨機抽樣。     在Bagging方法中,讓學習演算法訓練多次,每次的訓練集由初始的訓練集中隨機取出的個訓練樣本組成,初始的訓練樣本在某次的訓練集中可能出現多次或者根本不出現。最終訓練出個預測函式,最終的預測函式為對於分類和迴歸問題可採用如下的兩種方法:
  1. 分類問題:採用投票的方法,得票最多的類別為最終的類別
  2. 迴歸問題:採用簡單的平均方法
隨機森林演算法就是基於Bagging思想的學習演算法。

4、對多個模型的預測結果做加權平均

    在Bagging方法中,其特點在於隨機化抽樣,通過反覆的抽樣訓練新的模型,最終在這些模型的基礎上取平均。而在對多個模型的預測結果做加權平均則是將多個弱學習模型提升為強學習模型,這就是Boosting的核心思想。     在Boosting演算法中,初始化時對每個訓練樣本賦予相等的權重,如,然後用該學習演算法對訓練集訓練輪,每次訓練後,對訓練失敗的訓練樣本賦予更大的權重,也就是讓學習演算法在後續的學習中幾種對比較難學的訓練樣本進行學習,從而得到一個預測函式序列,其中每個都有一個權重,預測效果好的預測函式的權重較大。最終的預測函式為對於分類和迴歸問題可採用如下的兩種方法:
  1. 分類問題:有權重的投票方式
  2. 迴歸問題:加權平均
AdaBoostGBDT(Gradient Boosting Decision Tree)是基於Boosting思想的兩個最著名的演算法。

演算法示例:

  1. 將訓練集按照橫(隨機抽樣本)、列(隨機抽特徵)進行有放回的隨機抽取,獲得n個新的訓練集,訓練出n個決策樹,通過這n個樹投票決定分類結果。主要的parameters 有n_estimators 和 max_features。

  2. 訓練資料中的每個樣本,並賦予其一個權重,這些權重構成了向量D。一開始,這些權重都初始化成相等值。首先在訓練資料上訓練出一個弱分類器並計算該分類器的錯誤率,然後在統一資料集上再訓練分類器。在第二次訓練中,會調高那些前一個分類器分類錯誤的樣本的權重。如此反覆,訓練出許多分類器來進行加權投票,每個分類器的權重是基於該分類器的錯誤率計算出來的。

  3. GBDT (Gradient Boosting Decision Tree: boosting + 決策樹):

    GBDT與Adaboost類似,反覆訓練出多個決策樹,每次更新訓練集的權重是按照損失函式負梯度的方向。n_estimators是弱分類器個數;max_depth或max_leaf_nodes可以用來控制每棵樹的規模;learning_rate是hyper-parameter,取值範圍為(0, 1.0],用來控制過擬合與欠擬合

Boosting和Bagging的區別:
(1)從偏差-方差分解的角度看,Boosting主要關注降低偏差,因此Boosting能基於泛化效能相當弱的學習器構建出很強的整合;而Bagging主要關注降低方差,因此它在不剪枝決策樹、神經網路等易受樣本擾動的學習器上效用更加明顯; 
(2)Bagging的訓練集的選擇是隨機的,各輪訓練集之間相互獨立,而Boosting的各輪訓練集的選擇與前面各輪的學習結果有關,即Bagging採用均勻取樣,而Boosting根據錯誤率來取樣,因此Boosting的分類精度要優於Bagging; 
(3)Bagging的各個預測函式沒有權重,而Boosting是有權重的; 
(4)Bagging的各個預測函式可以並行生成,而Boosting的各個預測函式只能順序生成; 
(5)對於像神經網路這樣極為耗時的學習方法,Bagging可通過並行訓練節省大量時間開銷; 
(6)bagging和boosting都可以有效地提高分類的準確性。在大多數資料集中,boosting的準確性比bagging高。但在有些資料集中,boosting會導致Overfit。

補充結合策略 :
假設整合包含T個基學習器這裡寫圖片描述,其中這裡寫圖片描述在示例x上的輸出為這裡寫圖片描述。以下介紹幾種對這裡寫圖片描述進行結合的常見策略: 
一.平均法
對於數值型輸出這裡寫圖片描述,最常見的結合策略是使用averaging(平均法)。 
(1)Simple averaging(簡單平均法) 
          這裡寫圖片描述

(2)Weighted averaging(加權平均法) 
          這裡寫圖片描述 
其中這裡寫圖片描述是個體學習器這裡寫圖片描述的權重,通常要求這裡寫圖片描述這裡寫圖片描述。  
注意: 
加權平均法的權重一般是從訓練資料中學習而得,現實任務中的訓練樣本通常不充分或存在噪聲,這將是的學習出的權重不完全可靠。尤其是對規模比較大的整合來說,要學習的權重比較多,容易導致過擬合。因此實驗和應用均顯示出,加權平均法未必一定優於簡單平均法。一般而言,在個體學習器效能相差較大時適合使用加權平均法,而在個體學習器效能相近時適合使用簡單平均法。

二.投票法 
對分類任務來說,學習器這裡寫圖片描述將從類別標記集合這裡寫圖片描述中預測一個標記,最常見的結合策略是使用voting。為了便於討論,我們將這裡寫圖片描述在樣本x上的預測輸出表示為一個N維向量這裡寫圖片描述,其中這裡寫圖片描述這裡寫圖片描述在類別標記這裡寫圖片描述上的輸出。 
(1)Majority voting(絕對多數投票法)

這裡寫圖片描述

即若某標記得票過半數,則預測為該標記,否則拒絕預測。

(2)Plurality voting(相對多數投票法)

        這裡寫圖片描述

即預測為得票最多的標記,若同時有多個標記獲得最高票,則從中隨機選取一個。

(3)Weighted voting(加權投票法)

       這裡寫圖片描述

與加權平均法類似,這裡寫圖片描述這裡寫圖片描述的權重,通常這裡寫圖片描述這裡寫圖片描述

三.學習法 
當訓練資料很多時,一種更為強大的結合策略是使用“學習法”,即通過另一個學習器來進行結合。Stacking是學習法的典型代表。 
Stacking先從初始資料集訓練出初級學習器,然後“生成”一個新的資料集用於訓練次級學習器。在這個新的資料集中,初級學習器的輸出被當作樣例輸入特徵,而初級樣本的標記仍被當作樣例標記。我們假定初級學習器使用不同的學習演算法產生,即初級整合是異質的,具體過程如下: 
(1)劃分訓練資料集為兩個不相交的集合; 
(2)在第一個集合上訓練多個學習器; 
(3)在第二個集合上測試這幾個學習器; 
(4)把第三步得到的預測結果作為輸入,把正確的迴應作為輸出,訓練一個高層學習器。 
注意: 
在訓練階段,次級訓練集是利用初級學習器產生的。若直接用初級學習器的訓練集來產生次級訓練集,則過擬合的風險會比較大。因此,一般是通過使用交叉驗證或者留一法的方式,用訓練初級學習器未使用的樣本來產生次級學習器的訓練樣本。

參考資料: http://blog.csdn.net/savinger/article/details/52842981
http://blog.csdn.net/savinger/article/details/52862004