模型融合的目的:將多種”弱學(xué)習(xí)器“融合成一個”強(qiáng)學(xué)習(xí)器“。

1. 簡單加權(quán)融合
① 平均法-Averaging
對于回歸問題,一個簡單直接的思路是取平均。將多個模型的回歸結(jié)果取平均值作為最終預(yù)測結(jié)果,進(jìn)而把多個弱分類器榮和城強(qiáng)分類器。
稍稍改進(jìn)的方法是進(jìn)行加權(quán)平均,權(quán)值可以用排序的方法確定,舉個例子,比如A、B、C三種基本模型,模型效果進(jìn)行排名,假設(shè)排名分別是1,2,3,那么給這三個模型賦予的權(quán)值分別是3/6、2/6、1/6。
平均法或加權(quán)平均法看似簡單,其實(shí)后面的高級算法也可以說是基于此而產(chǎn)生的,Bagging或者Boosting都是一種把許多弱分類器這樣融合成強(qiáng)分類器的思想。
Averaging也可以用于對分類問題的概率進(jìn)行平均。
② 投票法-voting
對于一個二分類問題,有3個基礎(chǔ)模型,現(xiàn)在我們可以在這些基學(xué)習(xí)器的基礎(chǔ)上得到一個投票的分類器,把票數(shù)最多的類作為我們要預(yù)測的類別。
投票法有硬投票(hard voting)和軟投票(soft voting)
硬投票: 對多個模型直接進(jìn)行投票,不區(qū)分模型結(jié)果的相對重要度,最終投票數(shù)最多的類為最終被預(yù)測的類。
軟投票:增加了設(shè)置權(quán)重的功能,可以為不同模型設(shè)置不同權(quán)重,進(jìn)而區(qū)別模型不同的重要度。
2. stacking/blending
① 堆疊法-stacking
基本思想:用初始訓(xùn)練數(shù)據(jù)學(xué)習(xí)出若干個基學(xué)習(xí)器后,將這幾個學(xué)習(xí)器的預(yù)測結(jié)果作為新的訓(xùn)練集(第一層),來學(xué)習(xí)一個新的學(xué)習(xí)器(第二層)。
背景: 為了幫助大家理解模型的原理,我們先假定一下數(shù)據(jù)背景。
訓(xùn)練集數(shù)據(jù)大小為
10000*100,測試集大小為3000*100。即訓(xùn)練集有10000條數(shù)據(jù)、100個特征;測試集有3000條數(shù)據(jù)、100個特征。該數(shù)據(jù)對應(yīng)回歸問題。第一層使用三種算法-XGB、LGB、NN。第二層使用GBDT。
算法解讀
-
stacking 第一層
-
XGB算法 - 對應(yīng)圖中
model 1部分輸入:使用訓(xùn)練集進(jìn)行5-fold處理
-
處理:具體處理細(xì)節(jié)如下
使用1、2、3、4折作為訓(xùn)練集,訓(xùn)練一個XGB模型并預(yù)測第5折和測試集,將預(yù)測結(jié)果分別稱為XGB-pred-tran5(shape
2000*1)和XGB-pred-test1(shape3000*1).使用1、2、3、5折作為訓(xùn)練集,訓(xùn)練一個XGB模型并預(yù)測第4折和測試集,將預(yù)測結(jié)果分別稱為XGB-pred-tran4(shape
2000*1)和XGB-pred-test2(shape3000*1).使用1、2、4、5折作為訓(xùn)練集,訓(xùn)練一個XGB模型并預(yù)測第3折和測試集,將預(yù)測結(jié)果分別稱為XGB-pred-tran3(shape
2000*1)和XGB-pred-test3(shape3000*1).使用1、3、4、5折作為訓(xùn)練集,訓(xùn)練一個XGB模型并預(yù)測第2折和測試集,將預(yù)測結(jié)果分別稱為XGB-pred-tran2(shape
2000*1)和XGB-pred-test4(shape3000*1).使用2、3、4、5折作為訓(xùn)練集,訓(xùn)練一個XGB模型并預(yù)測第1折和測試集,將預(yù)測結(jié)果分別稱為XGB-pred-tran1(shape
2000*1)和XGB-pred-test5(shape3000*1).
-
輸出:
將XGB分別對1、2、3、4、5折進(jìn)行預(yù)測的結(jié)果合并,得到XGB-pred-tran(shape
10000*1)。并且根據(jù)5-fold的原理可以知道,與原數(shù)據(jù)可以形成對應(yīng)關(guān)系。因此在圖中稱為NEW FEATURE。將XGB-pred-test1 - 5 的結(jié)果使用Averaging的方法求平均值,最終得到XGB-pred-test(shape
3000*1)。
-
LGB算法 - 同樣對應(yīng)圖中
model 1部分輸入:與XGB算法一致
處理:與XGB算法一致。只需更改預(yù)測結(jié)果的命名即可,如LGB-pred-tran5和LGB-pred-test1
-
輸出:
將LGB分別對1、2、3、4、5折進(jìn)行預(yù)測的結(jié)果合并,得到LGB-pred-tran(shape
10000*1)。將LGB-pred-test1 - 5 的結(jié)果使用Averaging的方法求平均值,最終得到LGB-pred-test(shape
3000*1)。
-
NN算法 - 同樣對應(yīng)圖中
model 1部分輸入:與XGB算法一致
處理:與XGB算法一致。只需更改預(yù)測結(jié)果的命名即可,如NN-pred-tran5和NN-pred-test1
-
輸出:
將NN分別對1、2、3、4、5折進(jìn)行預(yù)測的結(jié)果合并,得到NN-pred-tran(shape
10000*1)。將NN-pred-test1 - 5 的結(jié)果使用Averaging的方法求平均值,最終得到NN-pred-test(shape
3000*1)。
-
-
stacking 第二層
訓(xùn)練集:將三個新特征 XGB-pred-tran、LGB-pred-tran、NN-pred-tran合并得到新的訓(xùn)練集(shape
10000*3)測試集:將三個新測試集XGB-pred-test、LGB-pred-test、NN-pred-test合并得到新的測試集(shape
30000*3)用新訓(xùn)練集和測試集構(gòu)造第二層的預(yù)測器,即GBDT模型
在這里插入圖片描述
② 混合法 - blending
Blending與Stacking大致相同,只是Blending的主要區(qū)別在于訓(xùn)練集不是通過K-Fold的CV策略來獲得預(yù)測值從而生成第二階段模型的特征,而是建立一個Holdout集。簡單來說,Blending直接用不相交的數(shù)據(jù)集用于不同層的訓(xùn)練。
同樣以上述數(shù)據(jù)集為例,構(gòu)造一個兩層的Blending模型。
首先將訓(xùn)練集劃分為兩部分(d1,d2),例如d1為4000條數(shù)據(jù)用于blending的第一層,d2是6000條數(shù)據(jù)用于blending的第二層。
第一層:用d1訓(xùn)練多個模型,將其對d2和test的預(yù)測結(jié)果作為第二層的New Features。例如同樣適用上述三個模型,對d2生成6000*3的新特征數(shù)據(jù);對test生成3000*3的新特征矩陣。
第二層:用d2的New Features和標(biāo)簽訓(xùn)練新的分類器,然后把test的New Features輸入作為最終的測試集,對test預(yù)測出的結(jié)果就是最終的模型融合的值。
