模型融合的目的:將多種”弱學(xué)習(xí)器“融合成一個(gè)”強(qiáng)學(xué)習(xí)器“。
1. 簡單加權(quán)融合
① 平均法-Averaging
對于回歸問題爽柒,一個(gè)簡單直接的思路是取平均蹋订。將多個(gè)模型的回歸結(jié)果取平均值作為最終預(yù)測結(jié)果,進(jìn)而把多個(gè)弱分類器榮和城強(qiáng)分類器科侈。
稍稍改進(jìn)的方法是進(jìn)行加權(quán)平均载佳,權(quán)值可以用排序的方法確定,舉個(gè)例子臀栈,比如A柿扣、B疗韵、C三種基本模型,模型效果進(jìn)行排名撩鹿,假設(shè)排名分別是1睡扬,2盟蚣,3,那么給這三個(gè)模型賦予的權(quán)值分別是3/6卖怜、2/6屎开、1/6。
平均法或加權(quán)平均法看似簡單马靠,其實(shí)后面的高級算法也可以說是基于此而產(chǎn)生的奄抽,Bagging或者Boosting都是一種把許多弱分類器這樣融合成強(qiáng)分類器的思想。
Averaging也可以用于對分類問題的概率進(jìn)行平均甩鳄。
② 投票法-voting
對于一個(gè)二分類問題逞度,有3個(gè)基礎(chǔ)模型,現(xiàn)在我們可以在這些基學(xué)習(xí)器的基礎(chǔ)上得到一個(gè)投票的分類器妙啃,把票數(shù)最多的類作為我們要預(yù)測的類別档泽。
投票法有硬投票(hard voting)和軟投票(soft voting)
硬投票: 對多個(gè)模型直接進(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í)出若干個(gè)基學(xué)習(xí)器后,將這幾個(gè)學(xué)習(xí)器的預(yù)測結(jié)果作為新的訓(xùn)練集(第一層)突倍,來學(xué)習(xí)一個(gè)新的學(xué)習(xí)器(第二層)腔稀。
背景: 為了幫助大家理解模型的原理,我們先假定一下數(shù)據(jù)背景羽历。
訓(xùn)練集數(shù)據(jù)大小為
10000*100
焊虏,測試集大小為3000*100
。即訓(xùn)練集有10000條數(shù)據(jù)秕磷、100個(gè)特征诵闭;測試集有3000條數(shù)據(jù)、100個(gè)特征。該數(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)練一個(gè)XGB模型并預(yù)測第5折和測試集磕洪,將預(yù)測結(jié)果分別稱為XGB-pred-tran5(shape
2000*1
)和XGB-pred-test1(shape3000*1
).使用1吭练、2、3析显、5折作為訓(xùn)練集鲫咽,訓(xùn)練一個(gè)XGB模型并預(yù)測第4折和測試集,將預(yù)測結(jié)果分別稱為XGB-pred-tran4(shape
2000*1
)和XGB-pred-test2(shape3000*1
).使用1谷异、2分尸、4、5折作為訓(xùn)練集晰绎,訓(xùn)練一個(gè)XGB模型并預(yù)測第3折和測試集寓落,將預(yù)測結(jié)果分別稱為XGB-pred-tran3(shape
2000*1
)和XGB-pred-test3(shape3000*1
).使用1、3荞下、4伶选、5折作為訓(xùn)練集,訓(xùn)練一個(gè)XGB模型并預(yù)測第2折和測試集尖昏,將預(yù)測結(jié)果分別稱為XGB-pred-tran2(shape
2000*1
)和XGB-pred-test4(shape3000*1
).使用2仰税、3、4抽诉、5折作為訓(xùn)練集陨簇,訓(xùn)練一個(gè)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)練集:將三個(gè)新特征 XGB-pred-tran惰聂、LGB-pred-tran、NN-pred-tran合并得到新的訓(xùn)練集(shape
10000*3
)測試集:將三個(gè)新測試集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ù)測值從而生成第二階段模型的特征溉愁,而是建立一個(gè)Holdout集。簡單來說饲趋,Blending直接用不相交的數(shù)據(jù)集用于不同層的訓(xùn)練拐揭。
同樣以上述數(shù)據(jù)集為例,構(gòu)造一個(gè)兩層的Blending模型奕塑。
首先將訓(xùn)練集劃分為兩部分(d1堂污,d2),例如d1為4000條數(shù)據(jù)用于blending的第一層爵川,d2是6000條數(shù)據(jù)用于blending的第二層敷鸦。
第一層:用d1訓(xùn)練多個(gè)模型,將其對d2和test的預(yù)測結(jié)果作為第二層的New Features。例如同樣適用上述三個(gè)模型扒披,對d2生成6000*3
的新特征數(shù)據(jù)值依;對test生成3000*3
的新特征矩陣。
第二層:用d2的New Features和標(biāo)簽訓(xùn)練新的分類器碟案,然后把test的New Features輸入作為最終的測試集愿险,對test預(yù)測出的結(jié)果就是最終的模型融合的值。