今天來認識一下kaggle比賽的常勝軍-XGboost(extreme gradient boosting),跟朋友聊天的時候朋友也說 XGboost根本業界愛用之一,主要的優勢有:
XGboost也與random forest一樣是種出很多棵樹的算法,那兩者的差異在哪呢?前兩天在講random forest的時候,我們利用了bagging的方式來建不同的樹,主要就是想讓每棵樹互相獨立學習;而XGboost的重點則是:每一棵樹都會根據前一棵樹不足的地方進行改良,也就是每棵樹是相互有關聯的! 另外在每次建樹的過程XGboost採用所有資料而非部份資料。
XGboost主要透過loss function來評斷樹的好壞,這裡用一個分類問題常用的loss function- cross entropy,下圖p是label(實際值),q是prediction(預測值),基本上若p與q相近,則loss小:
當XGboost要新建一棵樹時,會拿新的樹與前一棵樹以loss function做比較,去找出loss降低最多的結構,再依序下去,下圖中的learning rate可以先當成一個權重就好(之後會專門寫一篇gradient descent),之後learning rate也會是實際用python應用時一個重要的參數。
To be continue.