Boosting vs Bagging? 別再胡亂用了!

許多初接觸數據科學的朋友心裡都有一個疑問:什麼時候應該使用XGBoost或隨機森林這樣的模型?有些朋友也可能被面試官考問如何區分Boosting跟Bagging這種問題。無論您是否有這痛苦的經歷,懂得區分兩者的分別也是十分重要的,尤其在我們選擇那一個預測模型在了解Boosting跟Bagging之前,首先需要瞭解Bias和Varaince的概念。如果讀者們沒有聽說過,筆者建議您在我的舊文先了解一下

首先,Boosting跟Bagging都屬於Ensemble Method,原理將數個基礎模型(Base Model) 放在一起,給出更準確的結果,展示出團結就是力量。以Random Forest Classifier (隨機森林分類器)為例,它的基本模型應該是(Decision Tree Classifier)決策樹分類器,我們也稱之為"弱分類器 (Weak Classifier)"。在大多的情況下,Boosting或者Bagging模型表現都勝於單個模型,不過我們還是需要知道哪時候使用,才不會白費功夫



Bagging

我們先談袋裝, 因為它比Boosting原理更直觀和容易理解。Bagging全名為Bootstrapping Aggregatingm,當中的Bootstrap 是根據 N 個 Data Point,用隨機抽樣的方式,從N個抽出K個Data Point,並建立一組又一組的樣本,然後Weak Learner可以從建立好的樣本中進行學習。

隨機森林就是一個典型Bagging的例子。而決策樹扮演著Weak Learner的角色。如果您對決策樹沒有任何瞭解,下面是建議的閱讀(TODOURL)。訓練數據會被隨機抽樣,抽出部分的紀錄和部分的特徵,建立一組組的樣本,而每棵樹便會學習對的樣本,這些獨立學習好的樹,都會產出一個預測結果,取平均值,便是一個綜合的預測結果。現在,你可能知道為什麼它會被稱之為"隨機""森林"。實際上,其原理是使每一個基礎模型學習方法都是相互獨立,以儘可能減少 Variance,但同時也犧牲Bias。簡單地說,Bagging主要用作來解決Overfitting的問題。








Boosting

至於Boosting,您可能會發現與Bagging非常相似,也是一樣建立多個Weak Learners和然後集思廣益,  讀者們現在應該滿腦子黑人問號,但不用擔心,當你知道它的學習機制,所有謎底都會被解開。Boosting的學習特式是借由這些Weak Learner,向著前人(Previous Weak Learner)進行學習取經,而不是一味獨家村的閉門造車

具體來說,第一個Weak Learner也即是開荒牛,會學習訓練集並計算出當中的錯誤,例如平均絕對錯誤 MAE)。然後,第二個Weak Learner從它的錯誤中學習,吸收教訓以修正前人的錯誤,直到最後一個Weak Learner完成學習,便為之一個Iteration,重覆N次Iteration便完成整個訓練過程

通常,具有較好表現的Base Model被分配更高的weighting,在預測結果上較有話語權。較有名的如XGBoostAdaboost也有各自不同的演算法來確定這些weighting的多少。由此看見,每個Base Model都不是以並行方式學習,而是從上一個模型的錯誤中吸取教訓,所以能夠非常準確的預測,亦歸因於它的誕生是為了減少Bias。然而,副作用是會得較高的Variance會增加,所以筆者使用Boosting 時會格外注意會否出現Overfitting。




啊...我的預測模型表現很差

一般來說,有兩個原因導致Model Performance不佳,一是Input Variable對Target Variable是不可預測,好像你用身高來預測一個人會否便袐;另一個原因是你的模型面臨著Underfit的問題。如果是因為後者, 您還會用Bagging來解決這個問題嗎?當然不應該!Underfit意味高Bias和低Variance。如筆者的舊文所述,這是Bias和Variance之間的取捨,魚與熊掌不可兼得。要解決Underfit,應利用Boosting通過減少Bias,從而提高整體的預測能力。


為何 Ensemble methods這麼受歡迎?

Ensemble methods已變得相當普遍,解決了許多分類和回歸相關的問題。在 Kaggle 中,幾乎在每一個比賽中都看見Boosting的出現,除了由於它自身的預測能力十分強大,因為Kaggle的比賽只看預測能力,愈準愈好,也間接令Ensemble methods大為流行。當然,凡事都有例外。在Kaggle其中一個比賽中,Don't Overfit! II,Boosting立馬廢掉,哈哈!

另外,隨著時間的發展,學者們都研究出各式各樣的技術來解釋模型,尤其是判斷Input Variables如果影響結果的輸入。使這些結構複雜的模型不再是一個Black Box了,向老闆們展示解釋模型結果的時候,不用被當作外星人了!

 

 







Comments