這個時代,如果你覺得自己不夠強(qiáng)椿猎,那就找?guī)讉€人聯(lián)合起來。集成學(xué)習(xí)亦如此刹孔。
集成學(xué)習(xí)是一種將幾種機(jī)器學(xué)習(xí)模型組合成一個模型的元算法(meta-algorithm)泳秀,以減小方差(例如:Bagging)迅栅,偏差(例如:Boosting)殊校,或者改進(jìn)預(yù)測(例如:Stacking、Blending)读存。
- 集成方法分類
串行集成方法:多個模型順序生成为流。此方法是利用模型之間的依賴關(guān)系。算法可以通過提高被分錯樣本的權(quán)重來提高性能让簿。具體參見Boosting敬察。
并行集成方法:多個模型并行生成。此方法是利用模型之間的獨立性尔当,因為可以通過平均來降低誤差莲祸。具體參見Bagging。
樹行集成方法:這種方法可分多層椭迎,每一層可包括多種模型锐帜,下層的訓(xùn)練數(shù)據(jù)集為上一層的訓(xùn)練結(jié)果,類似于樹畜号。具體參見Stacking缴阎、Blending。
一简软、Bagging
Bagging:也就是自舉匯聚法(Bootstrap Aggregating)蛮拔,步驟如下:
在包含N個樣本的數(shù)據(jù)集中采用有放回的抽樣方式隨機(jī)抽取一定數(shù)量(可以為N)的樣本,構(gòu)成一個數(shù)據(jù)集痹升;
按照步驟1中的方式得到M個數(shù)據(jù)集建炫;
利用機(jī)器學(xué)習(xí)的方法(例如:SVM,決策樹疼蛾,神經(jīng)網(wǎng)絡(luò)……)對得到的M個數(shù)據(jù)集肛跌,訓(xùn)練出M個弱模型(比隨機(jī)模型效果好);
集成M個弱模型的結(jié)果作為最終結(jié)果察郁;
Bagging就是通過M個弱模型的結(jié)果衍慎,通過并行集成的方式來獲得最終結(jié)果。因為M個數(shù)據(jù)集是相互獨立的绳锅,因此這M個弱模型之間也是相互獨立的西饵,在最終的集成結(jié)果時,每個模型的權(quán)重是一樣的鳞芙。這是和下文的Boosting所不同的眷柔。
Bagging集成方式
回歸問題
M個模型結(jié)果的均值;分類問題
對M個模型的結(jié)果進(jìn)行投票決定原朝,票數(shù)多的作為結(jié)果驯嘱;票數(shù)一樣,隨機(jī)決定喳坠;
二鞠评、Boosting
Boosting步驟如下:
- 每一次都根據(jù)上一次訓(xùn)練得到的模型結(jié)果,調(diào)整數(shù)據(jù)集樣本分布壕鹉,然后再生成下一個模型剃幌;
- 直到生成M個模型;
- 根據(jù)M個模型的結(jié)果集成得到最終的結(jié)果聋涨;
Boosting集成方式
每個模型的重要度作為每個模型結(jié)果的權(quán)重,然后加權(quán)計算得出結(jié)果负乡‰拱祝可以看出Boosting中生成多個模型的方式并不是和Bagging一樣并行生成,而是串行生成抖棘,因此也決定了多個模型結(jié)果的集成是串行集成,也就是每個模型的結(jié)果權(quán)重并不是一樣的茂腥。如何來調(diào)整樣本分布以及計算模型的重要度,不同方法有不同的定義切省,詳情參見具體方法最岗。
三、Stacking
Stacking步驟如下:
將訓(xùn)練好的所有基模型對整個訓(xùn)練集進(jìn)行預(yù)測朝捆,第j個基模型對第i個訓(xùn)練樣本的預(yù)測值將作為新的訓(xùn)練集中第i個樣本的第j個特征值般渡,最后基于新的訓(xùn)練集進(jìn)行訓(xùn)練。同理右蹦,預(yù)測的過程也要先經(jīng)過所有基模型的預(yù)測形成新的測試集诊杆,最后再對測試集進(jìn)行預(yù)測。
-
代表方法
Stacking
四何陆、Blending
Blending步驟如下:
原始訓(xùn)練數(shù)據(jù)集劃分為訓(xùn)練數(shù)據(jù)集和驗證數(shù)據(jù)集晨汹,針對訓(xùn)練數(shù)據(jù)集訓(xùn)練多個模型,每個模型針對驗證數(shù)據(jù)集的結(jié)果構(gòu)成新的訓(xùn)練數(shù)據(jù)集贷盲,每個模型針對預(yù)測數(shù)據(jù)集的結(jié)果構(gòu)成新的預(yù)測數(shù)據(jù)集淘这。然后針對新的訓(xùn)練數(shù)據(jù)集訓(xùn)練模型,訓(xùn)練完成后巩剖,得到的模型對新的預(yù)測數(shù)據(jù)集的結(jié)果作為最終的結(jié)果铝穷。
-
代表方法
Blending
方法介紹、實例佳魔、代碼:隨機(jī)森林曙聂、AdaBoost、GBDT鞠鲜、XGBoost宁脊、LightGBM,CatBoost贤姆,Stacking榆苞,Blending。掃描下方二維碼或者微信公眾號直接搜索”Python范兒“霞捡,關(guān)注微信公眾號pythonfan坐漏, 獲取更多實例和代碼。