iT邦幫忙

2021 iThome 鐵人賽

DAY 6
0
AI & Data

Python 機器學習實驗室 ʘ ͜ʖ ʘ系列 第 6

樹選手3號:XGboost

今天來認識一下kaggle比賽的常勝軍-XGboost(extreme gradient boosting),跟朋友聊天的時候朋友也說 XGboost根本業界愛用之一,主要的優勢有:

  1. 運算速度快:模型背後用C++邏輯,training速度快
  2. 精準度高

https://ithelp.ithome.com.tw/upload/images/20210920/20142004CVAkNjL6KZ.png

XGboost也與random forest一樣是種出很多棵樹的算法,那兩者的差異在哪呢?前兩天在講random forest的時候,我們利用了bagging的方式來建不同的樹,主要就是想讓每棵樹互相獨立學習;而XGboost的重點則是:每一棵樹都會根據前一棵樹不足的地方進行改良,也就是每棵樹是相互有關聯的! 另外在每次建樹的過程XGboost採用所有資料而非部份資料。

Loss function

XGboost主要透過loss function來評斷樹的好壞,這裡用一個分類問題常用的loss function- cross entropy,下圖p是label(實際值),q是prediction(預測值),基本上若p與q相近,則loss小:
https://ithelp.ithome.com.tw/upload/images/20210920/20142004cuy8paGJ8f.png

當XGboost要新建一棵樹時,會拿新的樹與前一棵樹以loss function做比較,去找出loss降低最多的結構,再依序下去,下圖中的learning rate可以先當成一個權重就好(之後會專門寫一篇gradient descent),之後learning rate也會是實際用python應用時一個重要的參數。
https://ithelp.ithome.com.tw/upload/images/20210920/20142004fjwdzs9BRe.png

To be continue.


上一篇
樹選手2號:random forest [python實例]
下一篇
樹選手3號:XGboost [python實例]
系列文
Python 機器學習實驗室 ʘ ͜ʖ ʘ30

尚未有邦友留言

立即登入留言