WisdomOcean task5

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

模型融合

1. 簡單加權(quán)融合

① 平均法-Averaging

  1. 對于回歸問題,一個簡單直接的思路是取平均。將多個模型的回歸結(jié)果取平均值作為最終預(yù)測結(jié)果,進(jìn)而把多個弱分類器榮和城強(qiáng)分類器。

  2. 稍稍改進(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。

  3. 平均法或加權(quán)平均法看似簡單,其實(shí)后面的高級算法也可以說是基于此而產(chǎn)生的,Bagging或者Boosting都是一種把許多弱分類器這樣融合成強(qiáng)分類器的思想。

  4. Averaging也可以用于對分類問題的概率進(jìn)行平均。

② 投票法-voting

  1. 對于一個二分類問題,有3個基礎(chǔ)模型,現(xiàn)在我們可以在這些基學(xué)習(xí)器的基礎(chǔ)上得到一個投票的分類器,把票數(shù)最多的類作為我們要預(yù)測的類別。

  2. 投票法有硬投票(hard voting)和軟投票(soft voting)

  3. 硬投票: 對多個模型直接進(jìn)行投票,不區(qū)分模型結(jié)果的相對重要度,最終投票數(shù)最多的類為最終被預(yù)測的類。

  4. 軟投票:增加了設(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ù)背景。

  1. 訓(xùn)練集數(shù)據(jù)大小為10000*100,測試集大小為3000*100。即訓(xùn)練集有10000條數(shù)據(jù)、100個特征;測試集有3000條數(shù)據(jù)、100個特征。該數(shù)據(jù)對應(yīng)回歸問題

  2. 第一層使用三種算法-XGB、LGB、NN。第二層使用GBDT。

算法解讀

  1. stacking 第一層

    1. 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(shape 3000*1).

        • 使用1、2、3、5折作為訓(xùn)練集,訓(xùn)練一個XGB模型并預(yù)測第4折和測試集,將預(yù)測結(jié)果分別稱為XGB-pred-tran4(shape 2000*1)和XGB-pred-test2(shape 3000*1).

        • 使用1、2、4、5折作為訓(xùn)練集,訓(xùn)練一個XGB模型并預(yù)測第3折和測試集,將預(yù)測結(jié)果分別稱為XGB-pred-tran3(shape 2000*1)和XGB-pred-test3(shape 3000*1).

        • 使用1、3、4、5折作為訓(xùn)練集,訓(xùn)練一個XGB模型并預(yù)測第2折和測試集,將預(yù)測結(jié)果分別稱為XGB-pred-tran2(shape 2000*1)和XGB-pred-test4(shape 3000*1).

        • 使用2、3、4、5折作為訓(xùn)練集,訓(xùn)練一個XGB模型并預(yù)測第1折和測試集,將預(yù)測結(jié)果分別稱為XGB-pred-tran1(shape 2000*1)和XGB-pred-test5(shape 3000*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)。

    2. LGB算法 - 同樣對應(yīng)圖中model 1部分

      • 輸入:與XGB算法一致

      • 處理:與XGB算法一致。只需更改預(yù)測結(jié)果的命名即可,如LGB-pred-tran5LGB-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)。

    3. NN算法 - 同樣對應(yīng)圖中model 1部分

      • 輸入:與XGB算法一致

      • 處理:與XGB算法一致。只需更改預(yù)測結(jié)果的命名即可,如NN-pred-tran5NN-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)。

  2. stacking 第二層

    • 訓(xùn)練集:將三個新特征 XGB-pred-tranLGB-pred-tran、NN-pred-tran合并得到新的訓(xùn)練集(shape 10000*3)

    • 測試集:將三個新測試集XGB-pred-testLGB-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é)果就是最終的模型融合的值。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容