Python3機(jī)器學(xué)習(xí)實(shí)踐:集成學(xué)習(xí)

Ensemble.png
這個(gè)時(shí)代,如果你覺得自己不夠強(qiáng),那就找?guī)讉€(gè)人聯(lián)合起來。集成學(xué)習(xí)亦如此。 
image

集成學(xué)習(xí)是一種將幾種機(jī)器學(xué)習(xí)模型組合成一個(gè)模型的元算法(meta-algorithm),以減小方差(例如:Bagging),偏差(例如:Boosting),或者改進(jìn)預(yù)測(例如:Stacking、Blending)。

  • 集成方法分類
  1. 串行集成方法:多個(gè)模型順序生成。此方法是利用模型之間的依賴關(guān)系。算法可以通過提高被分錯(cuò)樣本的權(quán)重來提高性能。具體參見Boosting。

  2. 并行集成方法:多個(gè)模型并行生成。此方法是利用模型之間的獨(dú)立性,因?yàn)榭梢酝ㄟ^平均來降低誤差。具體參見Bagging。

  3. 樹行集成方法:這種方法可分多層,每一層可包括多種模型,下層的訓(xùn)練數(shù)據(jù)集為上一層的訓(xùn)練結(jié)果,類似于樹。具體參見Stacking、Blending。

image

一、Bagging

Bagging:也就是自舉匯聚法(Bootstrap Aggregating),步驟如下:

  1. 在包含N個(gè)樣本的數(shù)據(jù)集中采用有放回的抽樣方式隨機(jī)抽取一定數(shù)量(可以為N)的樣本,構(gòu)成一個(gè)數(shù)據(jù)集;

  2. 按照步驟1中的方式得到M個(gè)數(shù)據(jù)集;

  3. 利用機(jī)器學(xué)習(xí)的方法(例如:SVM,決策樹,神經(jīng)網(wǎng)絡(luò)……)對得到的M個(gè)數(shù)據(jù)集,訓(xùn)練出M個(gè)弱模型(比隨機(jī)模型效果好);

  4. 集成M個(gè)弱模型的結(jié)果作為最終結(jié)果;

Bagging就是通過M個(gè)弱模型的結(jié)果,通過并行集成的方式來獲得最終結(jié)果。因?yàn)镸個(gè)數(shù)據(jù)集是相互獨(dú)立的,因此這M個(gè)弱模型之間也是相互獨(dú)立的,在最終的集成結(jié)果時(shí),每個(gè)模型的權(quán)重是一樣的。這是和下文的Boosting所不同的。

  • Bagging集成方式

  • 回歸問題
    M個(gè)模型結(jié)果的均值;

  • 分類問題
    對M個(gè)模型的結(jié)果進(jìn)行投票決定,票數(shù)多的作為結(jié)果;票數(shù)一樣,隨機(jī)決定;

  • 代表方法
    隨機(jī)森林(Random Forest)

image

二、Boosting
Boosting步驟如下:

  1. 每一次都根據(jù)上一次訓(xùn)練得到的模型結(jié)果,調(diào)整數(shù)據(jù)集樣本分布,然后再生成下一個(gè)模型;
  2. 直到生成M個(gè)模型;
  3. 根據(jù)M個(gè)模型的結(jié)果集成得到最終的結(jié)果;
  • Boosting集成方式
    每個(gè)模型的重要度作為每個(gè)模型結(jié)果的權(quán)重,然后加權(quán)計(jì)算得出結(jié)果??梢钥闯鯞oosting中生成多個(gè)模型的方式并不是和Bagging一樣并行生成,而是串行生成,因此也決定了多個(gè)模型結(jié)果的集成是串行集成,也就是每個(gè)模型的結(jié)果權(quán)重并不是一樣的。如何來調(diào)整樣本分布以及計(jì)算模型的重要度,不同方法有不同的定義,詳情參見具體方法。

  • 代表方法
    AdaBoost
    GBDT
    XGBoost
    LightGBM
    CatBoost

image

三、Stacking
Stacking步驟如下:
將訓(xùn)練好的所有基模型對整個(gè)訓(xùn)練集進(jìn)行預(yù)測,第j個(gè)基模型對第i個(gè)訓(xùn)練樣本的預(yù)測值將作為新的訓(xùn)練集中第i個(gè)樣本的第j個(gè)特征值,最后基于新的訓(xùn)練集進(jìn)行訓(xùn)練。同理,預(yù)測的過程也要先經(jīng)過所有基模型的預(yù)測形成新的測試集,最后再對測試集進(jìn)行預(yù)測。

image

四、Blending
Blending步驟如下:
原始訓(xùn)練數(shù)據(jù)集劃分為訓(xùn)練數(shù)據(jù)集和驗(yàn)證數(shù)據(jù)集,針對訓(xùn)練數(shù)據(jù)集訓(xùn)練多個(gè)模型,每個(gè)模型針對驗(yàn)證數(shù)據(jù)集的結(jié)果構(gòu)成新的訓(xùn)練數(shù)據(jù)集,每個(gè)模型針對預(yù)測數(shù)據(jù)集的結(jié)果構(gòu)成新的預(yù)測數(shù)據(jù)集。然后針對新的訓(xùn)練數(shù)據(jù)集訓(xùn)練模型,訓(xùn)練完成后,得到的模型對新的預(yù)測數(shù)據(jù)集的結(jié)果作為最終的結(jié)果。

image

方法介紹、實(shí)例、代碼隨機(jī)森林、AdaBoost、GBDT、XGBoost、LightGBM,CatBoost,Stacking,Blending。掃描下方二維碼或者微信公眾號(hào)直接搜索”Python范兒“,關(guān)注微信公眾號(hào)pythonfan, 獲取更多實(shí)例和代碼。

pythonfan.jpg

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

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

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