模型融合的blending方法

模型融合有bagging, stacking, boosting,居然還有個blending!初學,初學^_^。

https://www.cnblogs.com/makefile/p/stacking.html 這篇文章寫的很清楚,以下是部分原文。

------------------------------------

Bagging

Bagging的代表算法是隨機森林,簡單說下隨機森林的步驟:

(1) 對訓練樣本進行bootstrap採樣,即有放回的採樣,獲得M個採樣集合;

(2) 在這M個採樣集合上訓練處M個弱決策樹。注意到,在決策樹生成中還用到了列採樣的技巧,原本決策樹中節點分裂時,是選擇當前節點中所有屬性的最優屬性進行劃分的,但是列採樣的技巧是在所有屬性中的子集中選最優屬性進行劃分。這樣做可以進一步降低過擬合的可能性;

(3) 對這M個訓練出來的弱決策樹進行集成。

Stacking

Stacking還沒有代表性的算法,我姑且把它理解成一個集成的思想吧。具體做法是:

(1) 先將訓練集D拆成k個大小相似但互不相交的子集D1,D2,…,Dk;

(2) 令Dj’= D - Dj,在Dj’上訓練一個弱學習器Lj。將Dj作爲測試集,獲得Lj在Dj上的輸出Dj’’;

(3) 步驟2可以得到k個弱學習器以及k個相應的輸出Dj’’,這個k個輸出加上原本的類標構成新的訓練集Dn;

(4) 在Dn訓練次學習器L,L即爲最後的學習器。

Stacking是用新的模型(次學習器)去學習怎麼組合那些基學習器,它的思想源自於Stacked Generalization這篇論文。如果把Bagging看作是多個基分類器的線性組合,那麼Stacking就是多個基分類器的非線性組合。Stacking可以很靈活,它可以將學習器一層一層地堆砌起來。

根據上圖分析一下stacking具體步驟:

  1)TrainingData進行5-fold分割,正好生成5個model,每個model預測訓練數據的1/5部分,最後合起來正好是一個完整的訓練集Predictions,行數與TrainingData一致。

  2)TestData數據,model1-model5每次都對TestData進行預測,形成5份完整的Predict(綠色部分),最後對這個5個Predict取平均值,得到測試集Predictions。

  3)上面的1)與2)步驟只是用了一種算法,如果用三種算法,就是三份“訓練集Predictions與測試集Predictions”,可以認爲就是形成了三列新的特徵,訓練集Predictions與測試集Predictions各三列。其實三種特徵有點少,容易overfitting,儘量多用一些算法。

  4)3列訓練集Predictions+TrainingData的y值,就形成了新的訓練樣本數據;測試集Predictions的三列就是新的測試數據。

  5)利用meta model(模型上的模型),其實就是再找一種算法對上述新數據進行建模預測,預測出來的數據就是提交的最終數據。

 

Blending

Blending是一種模型融合方法,對於一般的blending,主要思路是把原始的訓練集先分成兩部分,比如70%的數據作爲訓練集,剩下30%的數據作爲測試集。第一輪訓練: 我們在這70%的數據上訓練多個模型,然後去預測那30%測試數據的label。第二輪訓練,我們就直接用第一輪訓練的模型在這30%數據上的預測結果做爲新特徵繼續訓練。
Linear Blending(線性融合)
一般而言, 在個體學習器性能相近時適合使用均勻融合(每個模型g的作用相同),個體學習器性能相差較大時,使用加權平均給每個g都一個不同的權重,效果可能會更好,這就是線性融合(Linear Blending):

Linear Blending

Linear Blending

 

假設我們已經得到了T個 gtgt ,那麼應該如何確定 αtαt 呢,思路就是最小化錯誤 (如使用均方誤差):

min error

min error

 

因此 αtαt 可以通過線性迴歸/邏輯迴歸等得到. 因此 Linear Blending 是通過基學習器訓練次學習器, 是簡化版本的Stacking.

Blending與stacking相比優點在於:

  1. 比stacking簡單(因爲不用進行k次的交叉驗證來獲得新特徵)。
  2. 由於兩層訓練使用的數據不同,所以避免了一個信息泄露的問題。
  3. 在團隊建模過程中,不需要給隊友分享自己的隨機種子。

而缺點在於:

  1. 由於blending對數據集這種劃分形式,第二輪的數據量比較少。
  2. 由於第二輪數據量比較少所以可能會過擬合。
  3. stacking使用多次的CV會比較穩健。

對於實踐中的結果而言,stacking和blending的效果是差不多的,所以使用哪種方法都沒什麼所謂,完全取決於個人愛好。


 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章