機(jī)器學(xué)習(xí)的 XGBoost 算法簡介
XGBoost 是一種最近在應(yīng)用機(jī)器學(xué)習(xí)和 Kaggle 結(jié)構(gòu)化或表格數(shù)據(jù)競賽中占據(jù)主導(dǎo)地位的算法。
XGBoost 是為速度和性能而設(shè)計(jì)的梯度提升決策樹的實(shí)現(xiàn)。
在這篇文章中,您將了解 XGBoost 并簡要介紹它是什么、它來自哪里以及如何了解更多信息。
看完這篇文章你會知道:
XGBoost 是什么以及項(xiàng)目的目標(biāo)。
為什么 XGBoost 必須成為您的機(jī)器學(xué)習(xí)工具包的一部分。
您可以在這里了解更多信息,以便在您的下一個(gè)機(jī)器學(xué)習(xí)項(xiàng)目中開始使用 XGBoost。
什么是 XGBoost?
——陳天啟在 Quora,回答“?R gbm(梯度提升機(jī))和xgboost(極限梯度提升)有什么區(qū)別?” 時(shí)解釋道:“
XGBoost全稱是eXtreme?Gradient?Boosting
不過,xgboost 這個(gè)名字實(shí)際上是指推動提升樹算法計(jì)算資源極限的工程目標(biāo)。這就是許多人使用 xgboost 的原因。”
XGBoost是由陳天奇創(chuàng)建的梯度提升機(jī)的實(shí)現(xiàn),現(xiàn)在有許多開發(fā)人員的貢獻(xiàn)。它屬于分布式機(jī)器學(xué)習(xí)社區(qū)或DMLC保護(hù)下的更廣泛的工具集合,他們也是流行的mxnet 深度學(xué)習(xí)庫的創(chuàng)建者。
陳天啟在 XGBoost進(jìn)化背后的故事和教訓(xùn)一文中,提供了一個(gè)簡短而有趣的關(guān)于 XGBoost 創(chuàng)建的背景故事。
XGBoost 是一個(gè)軟件庫,您可以下載并安裝在您的機(jī)器上,然后從各種界面訪問。具體來說,XGBoost 支持以下主要接口:
命令行界面 (CLI)。
C++(編寫庫的語言)。
Python 接口以及 scikit-learn 中的模型。
R 接口以及 caret 包中的模型。
Julia。
Java 和 JVM 語言(如 Scala)和平臺(如 Hadoop)。
XGBoost 功能
該庫專注于計(jì)算速度和模型性能,因此幾乎沒有多余的裝飾。盡管如此,它確實(shí)提供了許多高級功能。
模型特點(diǎn)
該模型的實(shí)現(xiàn)支持 scikit-learn 和 R 實(shí)現(xiàn)的功能,并添加了正則化等新功能。支持三種主要形式的梯度提升:
梯度提升算法也稱為梯度提升機(jī),包括學(xué)習(xí)率。
隨機(jī)梯度提升,在每個(gè)分割級別的行、列和列進(jìn)行子采樣。
具有 L1 和 L2 正則化的正則化梯度提升。
系統(tǒng)特點(diǎn)
該庫提供了一個(gè)用于各種計(jì)算環(huán)境的系統(tǒng),尤其是:
在訓(xùn)練期間使用所有 CPU 內(nèi)核并行化樹構(gòu)建。
使用一組機(jī)器訓(xùn)練非常大的模型的分布式計(jì)算。
不適合內(nèi)存的超大數(shù)據(jù)集的核外計(jì)算。
緩存優(yōu)化數(shù)據(jù)結(jié)構(gòu)和算法以充分利用硬件。
算法特點(diǎn)
該算法的實(shí)現(xiàn)旨在提高計(jì)算時(shí)間和內(nèi)存資源的效率。設(shè)計(jì)目標(biāo)是充分利用可用資源來訓(xùn)練模型。一些關(guān)鍵的算法實(shí)現(xiàn)特性包括:
具有自動處理缺失數(shù)據(jù)值的稀疏感知實(shí)現(xiàn)。
支持樹構(gòu)建并行化的塊結(jié)構(gòu)。
繼續(xù)訓(xùn)練,以便您可以在新數(shù)據(jù)上進(jìn)一步提升已經(jīng)擬合的模型。
XGBoost 是免費(fèi)的開源軟件,可在 Apache-2 許可下使用。
為什么要使用 XGBoost?
使用 XGBoost 的兩個(gè)理由也是項(xiàng)目的兩個(gè)目標(biāo):
執(zhí)行速度。
模型性能。
1. XGBoost 執(zhí)行速度
通常,XGBoost 速度很快。與梯度提升的其他實(shí)現(xiàn)相比,速度非???。
Szilard Pafka執(zhí)行了一些客觀的基準(zhǔn)測試,將 XGBoost 的性能與梯度提升和袋裝決策樹的其他實(shí)現(xiàn)進(jìn)行了比較。他于 2015 年 5 月在題為“基準(zhǔn)隨機(jī)森林實(shí)現(xiàn)”的博客文章中寫下了他的結(jié)果。
他還提供了 GitHub 上的所有代碼以及更廣泛的帶有硬數(shù)字的結(jié)果報(bào)告。

他的結(jié)果表明,XGBoost 幾乎總是比來自 R、Python Spark 和 H2O 的其他基準(zhǔn)實(shí)現(xiàn)更快。
從他的實(shí)驗(yàn)中,他評論道:
我還嘗試了 xgboost,這是一個(gè)流行的 boosting 庫,它也能夠構(gòu)建隨機(jī)森林。它速度快,內(nèi)存效率高,準(zhǔn)確度高
— Szilard Pafka,對隨機(jī)森林實(shí)現(xiàn)進(jìn)行基準(zhǔn)測試。
2. XGBoost 模型性能
XGBoost 在分類和回歸預(yù)測建模問題上主導(dǎo)結(jié)構(gòu)化或表格數(shù)據(jù)集。
證據(jù)是它是 Kaggle 競賽數(shù)據(jù)科學(xué)平臺上競賽獲勝者的首選算法。
例如,有一個(gè)不完整的一、二、三等獎獲獎名單,標(biāo)題為:??XGBoost: Machine Learning Challenge Winning Solutions。
為了使這一點(diǎn)更加具體,以下是 Kaggle 競賽獲勝者的一些有見地的引述:
作為越來越多的 Kaggle 比賽的獲勝者,XGBoost 再次向我們展示了它是一種出色的全能算法。
——拿督優(yōu)勝者訪談:第一名,瘋狂教授
如有疑問,請使用 xgboost。
—?Avito 優(yōu)勝者訪談:第一名,Owen Zhang
我喜歡表現(xiàn)良好的單個(gè)模型,我最好的單個(gè)模型是 XGBoost,它可以單獨(dú)獲得第 10 名。
—卡特彼勒獲獎?wù)咴L談:第一名
我只用過 XGBoost。
—?Liberty Mutual Property Inspection,優(yōu)勝者訪談:第一名,王清臣
我使用的唯一監(jiān)督學(xué)習(xí)方法是梯度提升,在優(yōu)秀的 xgboost 中實(shí)現(xiàn)。
—?Recruit Coupon Purchase 優(yōu)勝者訪談:第二名,Halla Yang
XGBoost 使用什么算法?
XGBoost 庫實(shí)現(xiàn)了梯度提升決策樹算法。
該算法有很多不同的名稱,例如梯度提升、多重加性回歸樹、隨機(jī)梯度提升或梯度提升機(jī)。
Boosting 是一種集成技術(shù),其中添加新模型以糾正現(xiàn)有模型所造成的錯誤。模型按順序添加,直到無法進(jìn)行進(jìn)一步改進(jìn)。一個(gè)流行的例子是AdaBoost 算法,它對難以預(yù)測的數(shù)據(jù)點(diǎn)進(jìn)行加權(quán)。
梯度提升是一種創(chuàng)建新模型的方法,用于預(yù)測先前模型的殘差或誤差,然后將它們相加以進(jìn)行最終預(yù)測。之所以稱為梯度提升,是因?yàn)樗褂锰荻认陆邓惴▉碜钚』砑有履P蜁r(shí)的損失。
xgboost支持回歸和分類預(yù)測建模問題。
官方 XGBoost 資源
XGBoost 的最佳信息來源是該項(xiàng)目的官方 GitHub 庫。
https://github.com/dmlc/xgboost

還有一個(gè)官方文檔頁面,其中包括一系列不同語言的入門指南、教程、操作指南等。
有一些關(guān)于 XGBoost 的更正式的論文值得一讀,以了解有關(guān)該庫的更多背景信息:
使用 Boosted Trees 發(fā)現(xiàn)希格斯玻色子,2014 年。
http://proceedings.mlr.press/v42/chen14.pdf
XGBoost:可擴(kuò)展的樹提升系統(tǒng),2016 年。
https://arxiv.org/abs/1603.02754
xgboost就為大家介紹到這里了,歡迎各位同學(xué)報(bào)名<python風(fēng)控建模實(shí)戰(zhàn)lendingclub>,學(xué)習(xí)更多集成樹算法相關(guān)知識

版權(quán)聲明:文章來自公眾號(python風(fēng)控模型),未經(jīng)許可,不得抄襲。遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
? ? ? ? ? ? ? ? ? ? ? ? ? ??