機器學習競賽王者演算法:XGBoost、LightGBM、CatBoost
若是有參加過機器學習競賽的人應該都會聽過 XGBoost 這個橫掃各種競賽的演算法,其實後來也有衍生出 LightGBM 和 Cat boost 這兩種演算法可以使用,只是比較少人聽過,又鑒於這方面資料似乎比較少,就自己吃了一些學習資源來介紹,順便推動自己的學習,希望才疏學淺的本人可以幫助你更了解這三個常見演算法。 The map of machine Learning algorithms Source 不論是 XGBoost, LightGBM 還是 Catboost,他們都屬於 Ensemble learning (集成式學習)中的 Boosting 方法。Ensemble learning 的基本想法就是一個不夠,你有沒有試過兩個?兩個不夠,你有沒有試過三個?也就是將多種學習方法都集合在一起使用,彼此互相補足,讓演算法的架構更加靈活。 Boosting Boosting 是 循序 的演算法,一開始會先產生多個弱學習器(Weak learner)並讓它們不斷改正舊模型的錯誤,最後合成起來變成一個強學習器(Strong learner)。而所謂的弱學習器是指比隨機猜的表現還要更好一點的模型,這種學習器的訓練成本低、複雜度也低,同時也不易 Overfitting。正因為這些特性,所以我們才可以在短時間內訓練很多種弱學習器,彼此組合起來得到一個強力的模型。 Gradient Boosting Gradient boosting 指的則是將梯度下降法(Gradient descent)應用到這些弱學習器的學習上,幫助最小化 error。這個方法的主要問題在於每跑一次 Gradient descent都需要重新建立一次學習器,這樣非常沒有效率,也因此 XGboost 出現了。 Gradient Boosting Decision Tree (GBDT) 當我們剛剛所提到的每一個弱學習器都是一個決策樹的時候,這個意圖學習並組合出最好的決策樹的Gradient Boosting就叫做GBDT。這也是我們目前最常見用來實作Gradient boosting的做法,同時, 這樣做也正好緩和了決策樹容易Overfitting 的問題。今天的三大主題 XGBoost, LightGBM, CatBoost 都是基於 GBDT 的改進方法。 XGBoost XGBoost的全名是