1. 導(dǎo)言
Stacking集成算法可以理解為一個兩層的集成义矛,第一層含有多個基礎(chǔ)分類器,把預(yù)測的結(jié)果(元特征)提供給第二層,而第二層的分類器通常是邏輯回歸贮配,他把一層分類器的結(jié)果當作特征擬合輸出預(yù)測結(jié)果力九。Blending是簡化版的Stacking耍铜。
2. Blending集成學(xué)習算法
- (1)將數(shù)據(jù)劃分為訓(xùn)練集和測試集(test_set),其中訓(xùn)練集需要再次劃分為訓(xùn)練集(train_set)和驗證集(val_set)跌前;
- (2)創(chuàng)建第一層的多個模型棕兼,這些模型可以使同質(zhì)的也可以是異質(zhì)的
- (3)使用train_set訓(xùn)練步驟2中的多個模型,然后用訓(xùn)練好的模型預(yù)測val_set和test_set得到val_predict, test_predict1;
- (4)創(chuàng)建第二層的模型抵乓,使用val_predict作為訓(xùn)練集訓(xùn)練第二層的模型
-
(5) 使用第二層訓(xùn)練好的模型對第二層測試集test_predict1進行預(yù)測伴挚,該結(jié)果為整個測試集的結(jié)果。
image.png
Blending缺點:只使用了一部分數(shù)據(jù)集作為留出集進行驗證灾炭,也就是只能用上數(shù)據(jù)中的一部分茎芋。
3. Stacking集成學(xué)習算法
前文提到,Blending在集成的過程中只會用到驗證集的數(shù)據(jù)蜈出,對數(shù)據(jù)實際上是一個很大的浪費田弥。在Blending中,我們產(chǎn)生驗證集的方式是使用分割的方式铡原,產(chǎn)生一組訓(xùn)練集和一組驗證集偷厦,那么可以用交叉驗證的方式來處理嗎?
image.png
- 首先將所有數(shù)據(jù)集生成測試集和訓(xùn)練集(假如訓(xùn)練集為10000行燕刻,測試集為2500行)只泼,那么上層會進行5折交叉校驗,使用訓(xùn)練集中的8000條作為訓(xùn)練集卵洗,剩余2000行作為驗證集(橙色)请唱。
- 每次驗證相當于使用了藍色的8000條數(shù)據(jù)訓(xùn)練出一個模型,使用模型對驗證集進行驗證得到2000條數(shù)據(jù)忌怎,并對測試集進行預(yù)測籍滴,得到2500條數(shù)據(jù),這樣經(jīng)過5次交叉檢驗榴啸,可以得到中間的橙色的52000條驗證集的結(jié)果(相當于每條數(shù)據(jù)的預(yù)測結(jié)果)孽惰,52500條測試集的預(yù)測結(jié)果。
- 接下來會將驗證集的52000條預(yù)測結(jié)果拼成10000行長的矩陣鸥印,標記為
勋功,而對于52500行的測試集的預(yù)測結(jié)果進行加權(quán)平均坦报,得到一個2500一列的矩陣,標記為
- 上面得到一個基模型在數(shù)據(jù)集上的預(yù)測結(jié)果
狂鞋,這樣當我們對3個基模型進行集成的話片择,相當于得到了
、
骚揍、
字管、
、
信不、
六個矩陣
- 之后我們將
嘲叔、
、
并列在一起成10000行3列的矩陣作為training data抽活,
硫戈、
、
下硕、合并在一起成2500行3列的矩陣作為testing data丁逝,讓下層學(xué)習器基于這樣的數(shù)據(jù)進行再訓(xùn)練。
- 再訓(xùn)練是基于每個基礎(chǔ)模型的預(yù)測結(jié)果作為特征(三個特征)梭姓,次學(xué)習器會學(xué)習訓(xùn)練如果往這樣的及學(xué)習的預(yù)測結(jié)果上賦予權(quán)重
霜幼,來使得最后的預(yù)測最為準確
image.png
4. Blending與Stacking的對比
Blending的優(yōu)點:
- 比stacking簡單(因為不用進行k次的交叉驗證來獲得stacker feature)
- 避開了一個信息泄露的問題:generalizrs和stacker使用了不一樣的數(shù)據(jù)集
- 在團隊建模過程中,不需要給隊友分享自己的隨機種子
缺點在于: - 使用了很少的數(shù)據(jù)(是劃分hold-out作為測試集糊昙,并非cv)
- blender可能會過擬合(其實大概率是第一點導(dǎo)致的)
3.stacking使用多次的cv會比較穩(wěn)健辛掠。
refer
圖解Blending&Stacking_學(xué)如不及,猶恐失之-CSDN博客_blending
模型融合之stacking&blending - 知乎 (zhihu.com)
Stacking方法詳解 - Christina_筆記 - 博客園 (cnblogs.com)