XGBoost :eXtreme Gradient Boosting
項目地址:https://github.com/dmlc/xgboost
文檔:http://xgboost.readthedocs.io...
一個可升級的樹提高算法(a scalable machine learning system for tree boosting),XGBoost經過不斷迭代,將多個弱分類器組合成一個強分類器,它的基學習器是決策樹。相對於GBDT,XGBoost使用二階信息,能夠更快在訓練集上收斂。
(本文主要描述xgboost的公式推導)git
說明:各個參數的定義來源於論文XGBoost: A Scalable Tree Boosting Systemgithub
n examples and m features
樹的預測值:
最終歸屬於葉子節點j的樣本集:算法
目標函數:
其中,是懲罰項,只與第t棵決策樹有關,與樣本無關,也與前t-1棵決策樹無關,由於在第t次迭代中前t-1棵決策樹已經肯定;機器學習
是損失函數;函數
表示t棵決策樹在第i個樣本處的預測值;學習
表示第t棵決策樹在第i個樣本處的預測值(未知),能夠認爲f_t (X_i )是前t-1棵樹的優化量。
注意區分:t棵決策樹和第t棵決策樹
使用二階泰勒展開式(式(6))來近似代替損失函數,加快最小化速度:優化
又第t次迭代中前t-1棵決策樹已經肯定,即其損失函數也已經肯定,故認爲
是常數,將其省略且將式(5)代入獲得式(8):
聯立式(2)(3)(8),獲得:
ω_j是葉子節點的權重(對於分類問題,預測類別對應不一樣的權值;對於迴歸問題,預測值即爲權重)
由式(8)到式(9),將兩個式子中的求和分開:是全部n個樣本對應的預測值(即分類類別的權重)乘以其對應得而梯度gi,求和。
決策樹的T個葉子節點,每一個樣本都必定且惟一被分類到T個節點中的一個,一個葉子節點能夠被分到多個樣本。先將每一個葉子節點上的樣本的梯度g_i相加,再乘以該葉子節點的權值;最後對全部葉子節點求和。
二者得而結果同樣。
(類比:一個班有n個學生,要求某門課程班級總分;式(8)的求法可理解爲直接將每一個同窗的成績相加;而式(9)的求法可理解爲先求各個分段的同窗的成績總分,再將每一個分段總分相加)
對公式(9)求關於ωj的導數,並令其等於零,獲得式(10):
將式(10)代入式(9),獲得最優解:spa
即將更新。。。.net
Chen T, Guestrin C. XGBoost: A Scalable Tree Boosting System[C]// ACM SIGKDD International Conference on Knowledge Discovery and Data Mining. ACM, 2016:785-794. 點此下載
小象學院《機器學習升級版》第七期第12課
https://blog.csdn.net/a819825...