Learning Boosting Algorithms for Better Predictions (with R code)




在國外許多Data science 競賽中, Boosting algorithms是一個被廣泛使用的演算法, 用以提升預測模型的準確率, 尤其最近一段時間各大Data Hack比賽, 3名的獲勝者幾乎都使用XGBoost模型取得關鍵性的突破 Random Forest algorithm一樣, Boosting algorithms也是ensemble models的一種machine learning approach, 讓我們能在相同的數據資料下, 使用較少的時間獲得大幅的預測效能躍進。在這篇文章, 我將簡單描述Boosting的原理概念, 讓大家能初步了解到Boosting algorithms的運作想法, 最後同樣附上一個簡單的實例, 展示如何利用Boosting algorithms進行數據的分類預測。

Introduction to Boosting

Boosting algorithms最初開發用以解決分類(classification)預測的問題, 其概念在於藉由合併(combine)許多的weak learner(classifier, predictor, etc) , 創造出一個高準確預測的模型(稱之為strong learner/classifier). 所謂的weak learner可以視之為其模型的預測能力, 僅僅高於隨機猜測的結果。我們先簡單地以垃圾郵件辨識為例子, 說明為何ensemble models(Boosting為例- combine many weak learners), 能產生出較強的預測模型。假設我們使用下列5rules來判斷email是否為垃圾郵件:
1.      Email僅包含一張圖片 è 促銷圖片, 此封為垃圾郵件
2.      Email僅包含一個超鏈結網址 è 垃圾郵件
3.      Email內文包含您贏得了 大獎 $” è 垃圾郵件
4.      Email寄件者為任職公司的網站 è 非垃圾郵件
5.      Email寄件者存在於聯絡人清單中 è 非垃圾郵件

5rules可分別視作weak classifier, 單獨使用其中任何一個rule來進行垃圾郵件分類, 其辨識效果可想而知。但若我們將5rules合併使用, 並將5rules預測結果, 以簡單平均或是加權平均的方式計算出預測結果, 那麼我們將可以獲得一個較佳的預測能力模型。以上述為例, 3rules認定為垃圾郵件, 2rules認定為非垃圾郵件, 因此我們認定該封email為垃圾郵件。

     Boosting algorithms並非簡單地以majority votes(多數決)或平均數的方式, 來進行model building. 不同類型的Boosting algorithms, 各自有不同的數學模型與建置邏輯。目前主流的Boosting algorithms:
  1. AdaBoost (Adaptive Boosting)
  2. Gradient Boosting
  3. XGBoost (eXtreme Gradient Boosting)
這篇文章將介紹前兩種Boosting model, XGBoost將於另一篇文章再詳加討論。


繼續閱讀...