大家一起學 Python – (14) XGBOOST: Kaggle 之王道
Kaggle 是一個開放的機器學習比賽平台。裡面有成千上萬的機器學習相關的比賽,而比賽很常都是由大公司如: Google,Microsoft 所舉辦。如果在某個比賽得了前三名的話,你不但可以獲得獎金,甚至可以把經歷放到履歷裡面讓自己變得很香。重點是我們這群普通人還有一堆 label 過的 data 可以使用。 在過去的比賽中,最常用到的模型都是屬於 Ensembled Trees 類型,最有名的就是傳說中的 Random Forest。但在 2016 年,一個 KDDCup 大大,華盛頓大學資工系博士生,Tianqi Chen(不知道中文名)提出了 XGBoost,並且屌打了過去的演算法,並稱霸 Kaggle 的天下。雖然如今 Kaggle 也快被 Neural Network 佔領地位了,但是還是有很多人都還是會先用 XGBoost 來當成 baseline,或最終模型。 在繼續解釋前,我們要先講解一下一些決策樹基本概念。決策樹很適合用在表類數據,只要找到正確的 feature 來做 splitting, 基本上都會有很高的準確率;並且它的可譯性高,因此很受歡迎。樹長得越深,代表模型長得越複雜,這樣會降低效率,甚至可能造成這棵樹不夠 generalized,使得它很容易 overfit。反之,樹長得太淺複雜度降低,雖然會很有效率,但是會很有可能造成 variance 太大,所給的答案是亂猜的。 那我們稍微來介紹一下什麼是 XGBoost。 Define: eXtreme Gradient Boosting 正如上次的介紹,我們每次在使用一個模型前,要稍微對模型有個了解。我們在上面稍微提到了,XGBoost 為 Ensembled Trees 的一種,因此它是背後的演算法也是基於一組 …