集成學習之bagging,stacking,boosting

集成學習之bagging,stacking,boosting

來自專欄人工智慧從入門到逆天殺神(FutureAI)13 人贊了文章

首先吐槽下知乎標題欄字數限制太少了吧。這標題已經不允許讓我多加一個字了。俗話說,如果你不能向一個老奶奶解釋清楚這個概念,那表示你沒掌握這個概念。所以這篇文章我盡量簡單,如果有公式,也是看不看都不影響理解的公式。如果能讓讀者你覺得讀完就有醍醐灌頂的感覺,那將會是筆者的莫大欣慰。

這篇文章主要講解集成學習三種方法。集成學習(Emsemble Learning)是通過結合幾個模型的元演算法(meta-algorithm),使得最後的表現比任何一個模型好。在Kaggle,集成學習是取得高排名的不二法寶。本文介紹集成學習的三種模式,以便幫助讀者對自己的最後模型進行決策。這三種方法以及他們的效果分別是:

  1. Bagging:減少 variance
  2. boosting: 減少 bias
  3. stacking:增強預測效果

1.bagging

Bagging 是 bootstrap aggregation的縮寫。bagging對於數據集進行取樣,每個數據點有同等幾率被採樣,然後創建n個模型,每個模型進行m個數據採樣,最後進行投票(voting)得出最後結果。

例如n=4,m=4,數據條目數味8,bagging過程如下:每個bag從數據集里隨機取樣,然後訓練,如下圖

訓練好後,預測新數據時,過程是一個投票(voting)。voting過程如下:

Bagging已經有很廣泛的應用,例如random forest就是把n個decision tree進行bagging,然後通過投票選出最可能的結果。

為什麼bagging可以降低variance?這裡打個比方:

一個班級有50個人,如果這個50個人同時朗讀,你會覺得對你注意力造成影響。因為他們聲音的variance很大。variance衡量的是每個時間點的幅度與總體均值的關係。如果你把他們齊讀的聲音作為波形圖,你會發現波形非常抖,離中軸很遠,也就是variance非常大,大概是這樣的。

但如何他們是自由讀呢?很有可能的是正負波形有一部分抵消,然後各種聲音混合,產生這樣的聲波:

在bagging中,單個人說話的幅度各自產生variance,但加起來總的bias沒降低,也就是分貝其實並沒降低。

2.boosting

相比下boosting比較複雜,但也很巧妙。

Bagging的思想比較簡單,它是均勻概率分布,有放回的,每個bag或者說predictor是平行的。

boosting的每一次抽樣的樣本分布都是不一樣的,每個predictor是有順序的。

boosting創建了一系列predictor,或者說是learner。前面的learner用簡單的模型去適配數據,然後分析錯誤。然後會給予錯誤預測的數據更高權重,然後用後面的learner去修復。boosting通過把一些列的weak learners串起來,組成一個strong learners。

最常用的方法是AdaBoost[1],是adaptive boosting的簡稱,為了使得本文可讀性增加,我把這Adaboost單獨寫一篇文章,具體可以參考

桔了個仔:AdaBoost演算法以及公式傻瓜式一步一步超詳細講解帶示例?

zhuanlan.zhihu.com圖標

比喻一下,大家做過作業吧,有收集過錯題本嗎?今天考試我這道題做錯了,我把它記在錯題本里,下次考試前,我就單獨翻開錯題本單獨做一遍。如果下次考試做對了,就從錯題本里刪除,否則,在錯題本里把這道題再做一次。這樣每次下去,你的考試成績就很可能提高。Boosting就是這樣的原理。

3.Stacking

stacking的演算法如上圖。其實和和bagging不同的是,stacking通常是不同的模型。

第一步,有T個不同模型,根據數據,各自獨立訓練。每個模型輸出結果為 h_t ,其中t= 1,2,3...T

第二步,根據每個模型預測,創建新的『訓練集』,訓練集的數據(X)是預測結果,Y是實際結果。

第三步,再訓練一個classifier,這裡叫meta-classifier,來從各個預測中再生成最後預測。

和bagging有點相似,不一樣的是:

  1. bagging每個classifier其實是同一種模型
  2. bagging每個bag用部分數據訓練,stacking每個classifier都用了全部訓練數據

個人實踐,如果第三步沒有足夠訓練數據,可以取平均。如果有足夠數據,可以用線性回歸,畢竟數據維度有點太低。如果有讀者有更好實踐,請大聲在評論區喊出來。

Reference:

[1] towardsdatascience.com/


推薦閱讀:

TAG:深度學習DeepLearning | 集成學習 | 人工智慧 |