Ensemble Learning常見方法總結(Bagging、Boosting、Stacking、Blending)

看到過一個問題:Random Forest、Adaboost、GBDT、XGBoost的區別是什麼?這個問題基本上覆蓋了關於Ensemble Learning中常見的幾種方法,以及Ensemble Learning中各個方法的使用的流行程度,最後再來回答這個問題。

 

南京大學周志華教授在09年發佈的論文中《Ensemble Learning》對集成學習中常見的三種方法(Boosting、Bagging和Stacking)進行了介紹,除此之外還有一些其他的方法。下面我們從簡單到複雜來介紹下面幾種方法:

  • Voting
  • Averaging
  • Boosting
  • Bagging
  • Stacking
  • Blending

 

Voting

Voting是一種很思想很簡單的集成策略。主要應用與分類問題。

幾種常見的Voting方法有:

1、絕對多數投票法(majority voting)

也就是若某個標記的得票超過了半數,則預測爲該標記,否則拒絕預測。

2、相對多數投票法(plurality voting)

即預測爲得票最多的標記,若同時有多個標記,那麼從中隨機選取一個。

3、加權投票法(weighted voting)

即爲不同的標記賦予不同的權重,最後再按照相對多數投票法來預測。

Averaging

Averagin即是一種取平均的思想,從整體的角度上來提高預測的魯棒性,通常用於迴歸問題。

幾種常見的Averaging方法:

1、簡單平均法(simple averaging)

2、加權平均法(weighted averaging)

Boosting

Boosting是一種將弱學習器轉換爲強學習器的算法,它的機制是:先從初始訓練集訓練出一個基學習器,然後根據基學習器的表現對訓練樣本進行調整,使得先前基學習器做錯的訓練樣本在後續的訓練中得到更多的關注,然後基於調整後的樣本分佈來訓練下一個基學習器。Boosting的代表是Adam Boosting。

Bagging

Bagging是Bootstrap Aggregating的縮寫。Bagging是爲了得到泛化能力強的集成,因而就需要讓各個子學習器之間儘可能獨立,但是如果將樣本分爲了不同的不重合子集,那麼每個基學習器學習的樣本就會不足。所以它採用一種自助採樣的方法(boostrap sampling)每次從數據集中隨機選擇一個subset,然後放回初始數據集,下次取時,該樣本仍然有一定概率取到。然後根據對每個subset訓練出一個基學習器,然後將這些基學習器進行結合。對於分類任務可以通過vote來輸出結果,迴歸任務可以求平均值。Bagging的代表是Random Forest,RF是在決策樹作爲基學習器通過Bagging思想建立的。

Stacking

stacking是一種將弱學習器集成進行輸出的策略,其中,在stacking中,所有的弱學習器被稱作0級(0 level)學習器,他們的輸出結果被一個1級(1 level)學習器接受,然後再輸出最後的結果。這是實際上是一種分層的結構,前面提到的就是一種最基本的二級Stacking。另外,在bagging或者boosting中,所有的弱學習器一般都要求是相同的模型,如決策樹,而stacking中可以是不同的模型,如KNN、SVM、LR、RF等。

Blending

blending和stacking類似,主要是對已學好的基學習器的結果的融合不同,Blending是線性融合,而Stacking是非線性融合。

Random Forest、Adaboost、GBDT、XGBoost的區別是什麼?

現在來回答這個問題。

Random Forest是一種基於Bagging思想的Ensemble learning方法,它實際上就是Bagging + 決策樹。Random Forest可以用來做分類也可以做迴歸,做分類時最後多棵樹的分類器通過voting來決定分類結果;做迴歸時,由多棵樹預測值的averaging來決定預測結果。

Adaboost是Boosting算法中的代表,它的思想也便是基於Boosting思想的。在adaboost的運算過程中,一開始在訓練樣本時,爲每個子樣本賦予一個權重,一開始這些權重都是相等的,然後在訓練數據集上訓練出一個弱分類器,並計算這個弱分類器在每個子樣本上的錯誤率,在第二次對這同一數據集進行訓練時,將會根據分類器的錯誤率對子數據集中各個權重進行調整,分類正確的權重降低,分類錯誤的權重上升,這些權重的總和不變。最終得到的分類器會基於這些訓練的弱分類器的分類錯誤率來分配不同的決定係數,從而使權重更新時,錯誤樣本具有更高的權重。最後以此來更新各個樣本的權重,直至達到迭代次數或者錯誤率爲0。所以Adaboost會對那些影響準確率的數據額外關注,從而會降低bias,而導致overfit。

GBDT也即是Gradient Boosting Decisioin Tree,中文是梯度提升決策樹,它的基學習器是分類迴歸樹CART。

XGBoost的基學習器除了GBDT中用到的CART還支持線性分類器。傳統GBDT在優化時只用到一階導數信息,xgboost則對代價函數進行了二階泰勒展開,同時用到了一階和二階導數。區別可以參考機器學習算法中 GBDT 和 XGBOOST 的區別有哪些?總之XGBoost要比GBDT更快、效果更好。

 

借鑑:

https://www.cnblogs.com/ljygoodgoodstudydaydayup/p/7132902.html

https://blog.csdn.net/edogawachia/article/details/79441138

隨機森林

Ada Boost

GBDT

從GB、GBDT到XGBoost

xgboost

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章