您當前的位置:首頁 > 書法

系統性梳理!機器學習這 5 種融合方法真香!

作者:由 機器學習社群 發表于 書法時間:2021-10-18

作者:Ai,文章摘自宅碼

歡迎關注 @機器學習社群 ,專注學術論文、機器學習、人工智慧、Python技巧

系統性梳理!機器學習這 5 種融合方法真香!

一、背景

之前有段時間打資料探勘類比賽,看到很多選手用模型融合的技巧,特別是比賽後期的時候,很多選手開始找隊友,多數是為了融模型。雖然我也有嘗試過一些模型融合,但卻一直缺乏體系化瞭解,所以在看了荷蘭Kaggle選手Triskelion的

《KAGGLE ENSEMBLING GUIDE》

[1],我決定體系化整理下機器學習模型融合的常見方法,自我查缺補漏。

二、融合物件

在講模型融合方法前,我們先了解下融合物件,我們融的是什麼?是不同的個體學習器 (Individual Leaner)。“一個世界從來不是由某個單獨個體簡單構成的,而是由具有不同屬性的個體共同構成的”。對於個體學習器來說,它們的不同體現在:

不同訓練資料

:資料集使用比例、預處理方法 (缺失值填補、特徵工程等);

不同模型結構

:RF、XGBoost、LightGBM、CatBoost、CNN、LSTM等;

不同超參

:隨機種子數、權重初始化、收斂相關引數 (例如學習率、batch size、epoch、早停步數)、損失函式、子取樣比例等。

三、融合方法

我一年前秋招有次電話面某公司,讓我介紹簡歷上的專案,其中有個專案是MLR+ARIMA結合在一起做的,然後我說這是模型整合,結果被人駁斥說,這不是模型整合(大機率面試官認為只有Boosting和Bagging是屬於模型整合,而其他模型結合不能稱作模型整合)。但我事後去翻西瓜書 [2],書上寫道:

整合學習 (Ensemble Learning) 透過構建並結合多個學習器來完成學習任務,有時也被稱作多分類器系統 (Multi-classifier System)、基於委員會的學習 (Committee-based Learning)等。《機器學習》- 周志華

所以說,模型整合不是隻有同質學習器的整合 (例如Boosting和Bagging) 才稱作模型整合,還有異質學習器的整合也是模型整合。OS:面試面得我很冤枉。雖然我覺得稱作”模型整合“也沒錯,但為了避嫌,我這邊都統一稱作“模型融合“。本文不細講關於同質學習器整合的內容了 (即Boosting和Bagging),這裡,我主要是基於 [1] 的內容主線,分享異質學習器的一些融合手段。

1. 投票法

適用於

分類任務

,對多個學習器的預測結果進行投票,即少數服從多數。投票法有兩種:

普通投票法

加權投票法

。加權的權重可以

人工主觀設定

或者

根據模型評估分數

來設定權重。投票需要3個及3個以上的模型,同時建議要保證模型的多樣性,有時候對同質模型們使用投票法並不能取得較好的表現,這是因為同質模型得到的結果之間可能具有較強的相關性,從而會導致多數人把少數人的好想法給壓下去了。為了避免這個問題,可以參考在2014年KDD Cup上Marios Michailid的做法,他對所有結果檔案計算

Pearson係數

,最後選取其中相關性小的模型結果進行投票,分數獲得了提升。

2. 平均法

適用於

迴歸

分類 (針對機率)

任務,對多個學習器的預測結果進行平均。平均法的好處在於平滑結果,從而減少過擬合。常見的平均法有三種:

算術平均法

幾何平均法

加權平均法

假設我們有n個模型的預測結果 ,則三類平均計算方式如下:

(1)

算術平均法

(2)

幾何平均法

(3)

加權平均法

幾何平均法受極端值的影響較算術平均法小。另外,關於加權平均法的權重,也可以人工主觀或根據模型分數來設定。同時也建議儘量平均差異性小的模型們。

3. 排序法

如果模型評估標準是與排序或者閾值相關 (例如

AUC

),簡單使用平均法並不見得都能取得較好得結果,為什麼呢?我們可以看個例子:

系統性梳理!機器學習這 5 種融合方法真香!

圖1:算術平均法樣例

上圖能發現,模型1幾乎沒有給模型2帶來大的影響,因為像這種波動小的模型做融合,對最終結果造成的影響不大。為了解決這個問題,可以考慮使用排序平均法。在賽圈,碰到AUC,很多都會採用這種方法進行模型融合。比如在招商銀行的 “消費金融場景下的使用者購買預測” 的冠軍方案中 [3] 便針對賽題方的AUC評分標準,採用了基於排序的模型融合方法。排序法的具體步驟如下:

(1) 對預測結果進行

排序

(2) 對排序序號進行

平均

(3) 對平均排序序號進行

歸一化

這裡還是用上面的例子幫助理解:

系統性梳理!機器學習這 5 種融合方法真香!

圖2:排序平均法樣例

透過平均排序和歸一化,我們能發現波動小的模型1給最終的模型融合帶來了影響。但在使用排序法的時候,有個地方我們需要注意:我們都知道,排序是針對測試集預測結果來做的,但如果在工業界使用,很多時候會有新樣本進來要你預測,此時該怎麼辦呢?,針對新樣本,其實有兩種處理方式:

重新排序

:將新樣本放入原測試集中,重新排序,一旦資料量大,時間複雜度會增加。

參考歷史排序

:先將歷史測試集的預測結果和排序結果儲存,新樣本進來後,在歷史測試集中找到與新樣本預測值最近的值,然後取其排序號賦予新樣本。之後平均排序,使用歷史最大最小值進行歸一化操作即可。

4. Stacking

Stacking堆疊法是相對比較高階的模型融合法,也是本文的重點。Stacking的思路是基於原始資料,訓練出多個基學習器,然後將基學習器的預測結果組合成新的訓練集,去訓練一個新的學習器。

Stacking主要分為以下三類:

單層Stacking

多層Stacking

其它技術與Stacking的結合

(1) 單層Stacking

單層Stacking是指在基學習器上只堆疊一層元學習器,這也是最常見的Stacking結構,示意圖如下所示:

系統性梳理!機器學習這 5 種融合方法真香!

圖3:單層Stacking結構示意圖

圖3裡的基學習器可以是同質或異質的模型,而元學習器在傳統做法中是選用

邏輯迴歸

模型,當然也能使用

非線性模型

作為元學習器,例如GBDT, KNN, NN, RF等。比如在 ”天池零基礎入門金融風控-貸款違約預測“ 一賽中,TOP6的方案 [4] 使用了LightGBM,CatBoost和XGBoost作為基學習器,然後利用Pearson相關係數分析模型結果差異性,選取差異較大的結果檔案,再輸入第二層元學習器RF進一步融合結果。如果我們有4個特徵的資料集和3個基學習器,,單層Stacking (5-Fold) 的訓練和預測的具體細節是怎樣的呢?請見下圖:

系統性梳理!機器學習這 5 種融合方法真香!

圖4:單層Stacking (5-Fold) 的訓練預測流程圖

單層Stacking在基學習器和元學習器上可靈活選用自己喜歡的模型,甚至說能暴力去做(量力而行):

系統性梳理!機器學習這 5 種融合方法真香!

圖5:暴力單層Stacking [1]

除此之外,Stacking在特徵上也可以玩出一些花樣,其中,[1] 便介紹了兩種單層Stacking上的特徵互動方法:

Feature-weighted Linear Stacking (FWLS)

:Still等人在論文 [5] 中提出了該方法。基學習器們的預測結果叫元特徵,因為它們是用於訓練元學習器。FWLS提出可以在元學習器前,對元特徵進行特徵互動,互動物件可以是元特徵本身,也可以是原始特徵(即:

元特徵*元特徵

元特徵*原始特徵

)。

Quadratic Linear Stacking of Models

:它採用的特徵互動模式是:元特徵*元特徵+元特徵*原始特徵。

(2) 多層Stacking

這個是聽說的,即增加多層元學習器,但我也沒用過。大概結構示意圖如下:

系統性梳理!機器學習這 5 種融合方法真香!

圖6:雙層Stacking結構示意圖

(3) 其它技術與Stacking的結合

Stacking可以與無監督學習方法結合。例如:使用

t-SNE

將資料降維到2或3維,然後用非線性元學習器來融合。案例可參考Kaggle的“Otto Group Product Classification Challenge”中,Mike Kim提出的方法 [6]。

5. Blending

我們思考下Stacking,基學習器和元學習器本質上都是用同一訓練集訓練的 (雖然輸入的x不一樣,但標籤y一樣),這就會造成資訊洩露,從而導致元學習器過擬合我們的資料集。為了避免這種問題,Blending方法被提出了,它的想法是:對原始資料集先劃分出一個較小的留出集,比如10%訓練集被當做留出集,那麼

Blending用90%的資料做基學習器的訓練,而10%留出集用作訓練元學習器

,這樣基學習器和元學習是用不同資料集來訓練的。Blending的示意圖如下所示:

系統性梳理!機器學習這 5 種融合方法真香!

圖7:Blending的訓練預測流程圖

上圖的紅框是區分Stacking的關鍵。相比於Stacking,Blending能有效防止資訊洩露,但也正因為如此,元學習器只用了較小部分的資料集進行訓練,且容易對留出集過擬合。

如果資料量有限,個人更偏好於Stacking

四、總結

模型融合看起來很贊,很多比賽選手也熱衷於在比賽後期去找使用不同模型的隊友進行模型融合,但真實工業中,還是

Less is better

。例如:在2006年,Netflix組織的第一場資料科學競賽,隊伍Korbell以8。43%的提升獲得了第一進步獎,為此,他們融合了107個演算法且耗時2000小時。由於融合帶來的複雜度,最後Netflix並沒有將他們方案完全應用在產品中 [7]。現在很多比賽平臺也宣告禁止選手過多堆砌模型,特別是很多比賽已經開始將預測時間加入分數評估中。對於我們來說,模型融合是一種提升分數的有力技巧,但還是建議平衡好整個解決方案的準確率和效率。

參考資料

[1] 《KAGGLE ENSEMBLING GUIDE》- MLWave: [

https://

mlwave。com/kaggle-ensem

bling-guide/

](

https://

mlwave。com/kaggle-ensem

bling-guide/

[2] 《機器學習》- 周志華

[3] 招商銀行的消費金融場景下的使用者購買預測的冠軍方案: [

https://

github。com/sunwantong/C

hina-Merchants-Bank-credit-card-Cente-User-purchase-forecast

](

https://

github。com/sunwantong/C

hina-Merchants-Bank-credit-card-Cente-User-purchase-forecast

[4] 《天池新人賽:貸款違約預測TOP6方案分享》- 曹歡 (Coggle小組成員)

[5] Sill, J。, Takács, G。, Mackey, L。, & Lin, D。 (2009)。 Feature-weighted linear stacking。 arXiv preprint arXiv:0911。0460。

[6] T-SNE+Stacking:[

https://www。

kaggle。com/c/otto-group

-product-classification-challenge/discussion/14295

](

https://www。

kaggle。com/c/otto-group

-product-classification-challenge/discussion/14295

[7] Netflix Recommendations: Beyond the 5 stars (Part 1): [

https://

netflixtechblog。com/net

flix-recommendations-beyond-the-5-stars-part-1-55838468f429

](

https://

netflixtechblog。com/net

flix-recommendations-beyond-the-5-stars-part-1-55838468f429

——版權宣告——

僅用於學術分享,若侵權請聯絡刪除

推薦文章

新論文石錘 Transformer:別隻看注意力,沒有殘差和 MLP,它啥都不是

patch成為了ALL You Need?挑戰ViT、MLP-Mixer的簡單模型來了

馬賽克變高畫質,谷歌將SR3、CDM相結合,推出超解析度新方法

北大華為鵬城聯合首次提出視覺 Transformer 後量化演算法!

基於PyTorch,集合17種方法,南京大學等提出小樣本演算法庫LibFewShot

打破 Transformer 宿命,新秀 VOLO 開源!橫掃 CV 多項記錄,首個超越 87% 的模型

經典!17 個注意力機制 PyTorch 實現

當Transformer又遇見U-Net!Transformer-Unet:醫學影象分割新工作

有了這個機器學習畫圖神器,論文、部落格都可以事半功倍了!

Jupyter notebook 實現,慕尼黑工大220頁免費書籍介紹基於物理的深度學習

利用 Transformer 網路建立預測模型

DeiT:使用Attention蒸餾Transformer

施一公:如何一個通宵寫出一篇Nature?

ShapeNet:一款非常棒的時序分類最新NN框架

標簽: 模型  Stacking  學習  排序  融合