參考博客:https://blog.csdn.net/qq_31342997/article/details/88078213
https://blog.csdn.net/u012969412/article/details/76636336
https://blog.csdn.net/maqunfi/article/details/82220115
https://www.jianshu.com/p/fc4de92a9486
一、模型融合的概念
先產生一組“個體學習器 ”,再用某種策略將它們結合起來,加強模型效果。
二、常見模型融合的方法
boosting方法介紹:迭代的訓練某個基本模型(base model),每次根據上一輪預測錯誤得到情況來修改訓練樣本的權重,比較容易過擬合。
bagging方法介紹:抽取訓練集中不同的子集來訓練每個基本模型(base model),最后對每個base model進行投票(少數服從多數的思想)。
stacking方法介紹:層次融合的思想,第一輪用多個基本模型(一種多個,或多種)訓練,然后對其結果用LR在訓練(為了匹配每個基本模型的權重)。
blending方法介紹:層次融合的思想,用不相交的數據。將訓練集train數據划分兩部分(d1,d2),用對d1訓練的模型去預測d2,test。
用上一輪d2的預測值和標簽訓練新的分類器,然后把test的New Features輸入作為最終的預測值。
三、各種模型融合的區別
Bagging,Boosting二者之間的區別
(1)樣本選擇上:
Bagging:訓練集是在原始集中有放回選取的,從原始集中選出的各輪訓練集之間是獨立的。
Boosting:每一輪的訓練集不變,只是訓練集中每個樣例在分類器中的權重發生變化。而權值是根據上一輪的分類結果進行調整。
(2)樣例權重:
Bagging:使用均勻取樣,每個樣例的權重相等
Boosting:根據錯誤率不斷調整樣例的權值,錯誤率越大則權重越大。
(3)預測函數:
Bagging:所有預測函數的權重相等。
Boosting:每個弱分類器都有相應的權重,對於分類誤差小的分類器會有更大的權重。
(4)並行計算:
Bagging:各個預測函數可以並行生成
Boosting:各個預測函數只能順序生成,因為后一個模型參數需要前一輪模型的結果。
Stacking,Blending二者之間的區別
1.Blending方式和Stacking方式很類似,相比Stacking更簡單點,兩者區別是:
blending是直接准備好一部分10%留出集只在留出集上繼續預測,用不相交的數據訓練不同的 Base Model,將它們的輸出取(加權)平均。
實現簡單,但對訓練數據利用少了。
2.blending 的優點是:比stacking簡單,不會造成數據穿越(所謂數據創越,就比如訓練部分數據時候用了全局的統計特征,導致模型效果過分的好),
generalizers和stackers使用不同的數據,可以隨時添加其他模型到blender中。
3.缺點在於:blending只使用了一部分數據集作為留出集進行驗證,而stacking使用多折交叉驗證,比使用單一留出集更加穩健
4.兩個方法都挺好,看偏好了,可以一部分做Blending、一部分做Stacking。