資源 | XGBoost 中文文檔開放:上去就是一把梭

2021-02-17 機器之心

近日,ApacheCN 開放了 XGBoost 中文文檔項目,該項目提供了 XGBoost 相關的安裝步驟、使用教程和調參技巧等中文內容。該項目目前已完成原英文文檔 90% 的內容,機器之心簡要介紹了該文檔並希望各位讀者共同完善它。

中文文檔地址:http://xgboost.apachecn.org/cn/latest/

英文文檔地址:http://xgboost.apachecn.org/en/latest/

中文文檔 GitHub 地址:https://github.com/apachecn/xgboost-doc-zh

梯度提升樹已經在實踐中證明可以有效地用於分類和回歸任務的預測挖掘。之前我們所選擇的提升樹算法一直都是 MART(multiple additive regression tree)。但從 2015 年開始,一種新的且總是獲勝的算法浮出了水面:XGBoost。這種算法重新實現了樹提升,並在 Kaggle 和其它數據科學競賽中屢獲佳績,因此受到了人們的歡迎。

在介紹陳天奇等人提出的 XGBoost 之前,我們需要先了解一些關於提升方法的概念。首先提升方法是一種使用多個更簡單的模型來擬合數據的學習算法,它所用的這些更簡單的模型也被稱為基本學習器(base learner)或弱學習器(weak learner)。它通過改變訓練樣本的權重而學習多個分類器,並將這些分類器進行線性組合以提升分類性能。

對於 AdaBoost 算法來說,提高那些被前一輪弱分類器錯誤分類樣本的權重,而降低那些被正確分類樣本的全職。這樣,那些沒有得到正確分類的數據,由於權重的加大而受到後一輪的弱分類器的更大關注,因此分類問題就被一些列弱分類器分而治之。

若我們將提升算法與樹方法結合起來,就能構建提升樹算法,它在很多 Kaggle 競賽中都能得到十分優秀的結果。提升後的樹模型可以看作是自適應基函數模型,其中的基函數是分類回歸樹。提升樹模型是多個樹模型的和,所以也被稱為樹集成或加性樹模型(additive tree model)。一般來說,提升樹往往使用很淺的分類回歸樹,即僅有少數葉結點的回歸樹。相對於更深度的樹,這樣的方差較低,但偏差更大。

因此,在提升樹模型(即自適應的確定鄰域)的幫助下,MART 和 XGBoost 一般可以比其它方法實現更好的擬合。它們可以執行自動特徵選擇並且獲取高階交互,而不會出現崩潰。

通過比較 MART 和 XGBoost,儘管 MART 確實為所有樹都設置了相同數量的葉結點,但 XGBoost 通過設置 Tmax 和一個正則化參數而使樹變得更深,且同時仍然讓方差保持很低。相比於 MART 的梯度提升,XGBoost 所使用的牛頓提升很有可能能夠學習到更好的結構。XGBoost 還包含一個額外的隨機化參數,即列子採樣,這有助於進一步降低每個樹的相關性。

因此總而言之,XGBoost 在很多方面都優於一般的 MART 算法,它帶來了一種改進提升樹的新方法。

在最近的 ApacheCN 項目中,他們開放了一份 XGBoost 中文文檔:可伸縮且靈活的梯度提升。


該項目不僅包含完整的安裝指南:

安裝頁面提供了有關如何在各種作業系統上構建和安裝 xgboost 軟體包的說明. 由如下兩個步驟組成:

1. 首先, 從 C++ 代碼中構建共享庫(針對 linux/osx 的是 libxgboost.so 然後針對 windows 的是 libxgboost.dll)。

2. 然後, 安裝相關的程式語言軟體包(例如. Python 軟體包)。

重要提示:最新版本的 xgboost 使用子模塊來維護軟體包, 所以當你 clone repo 時, 記得按如下方式使用遞歸選項。

git clone --recursive https://github.com/dmlc/xgboost

針對使用 github 工具的 windows 用戶, 可以打開 git shell, 然後輸入以下命令。

git submodule init

git submodule update

如果你在安裝期間有任何問題, 請首先參考 故障排除部分. 如果其中的說明不適合你, 請放心的到 xgboost-doc-zh/issues 上提問題, 或者如果你能解決該問題, 最好發起一個 pull request。

安裝頁面內容目錄

在 Ubuntu/Debian 上構建

在 OSX 上構建

在 Windows 上構建

自定義構建

除了安裝外,學習教程頁面還介紹了提升樹、AWS 上的分布式 XGBoost YARN 和 DART Booster。這三個教程都有詳細的推導或實現步驟,是 XGBoost 包中的官方教程。

在我們正式使用 XGBoost 時,還有很重要的步驟就是參數調整。該文檔的參數調整部分介紹了如何理解 Bias-Variance(偏差-方差)權衡、控制過擬合和處理不平衡的數據集等方面。

此外,本文檔還提供了非常重要的 XGBoost 運行過程,包括 libsvm 文本格式、Numpy 2 維數組和 xgboost 二進位緩存文件等數據接口,參數設置、訓練過程、預測和繪圖等方法。以下是使用 Python 的概要:

import xgboost as xgb

# 讀取數據

dtrain = xgb.DMatrix('demo/data/agaricus.txt.train')

dtest = xgb.DMatrix('demo/data/agaricus.txt.test')

# 通過 map 指定參數

param = {'max_depth':2, 'eta':1, 'silent':1, 'objective':'binary:logistic' }

num_round = 2

bst = xgb.train(param, dtrain, num_round)

# 預測

preds = bst.predict(dtest)

本文為機器之心整理,轉載請聯繫本公眾號獲得授權

✄---

加入機器之心(全職記者/實習生):hr@jiqizhixin.com

投稿或尋求報導:content@jiqizhixin.com

廣告&商務合作:bd@jiqizhixin.com

相關焦點

  • 資料|陳天奇介紹Xgboost原理的PPT
    from=leiphonecolumn_res0929【 圖片來源:https://xgboost.apachecn.org/所有者:https://xgboost.apachecn.org/ 】內容簡介陳天奇介紹Xgboost原理的PPT,用於學習xgboost原理。XGBoost是一個優化的分布式梯度增強庫,旨在實現高效,靈活和便攜。
  • 【機器學習】XGBoost算法學習小結
    XGBoost概述    xgboost 是"極端梯度上升"(Extreme Gradient Boosting)的簡稱,是一種現在在數據科學競賽的獲勝方案很流行的算法,它的流行源於在著名的Kaggle數據科學競賽上被稱為"奧託分類"的挑戰。由於
  • 從零解讀 Xgboost 算法 (原理+代碼)
    代碼匯總3.0 xgboost 如何篩選特徵重要程度3.1 xgboost完整訓練代碼xgboost 代碼調參xgboost常規面試題參考連結0.提升樹 首先要明確一點,xgboost 是基於提升樹的。
  • 機器學習實戰|GBDT Xgboost LightGBM對比
    傳統的GBDT用的是CART,Xgboost能支持的分類器更多,也可以是線性的。GBDT只用了一階導,但是xgboost對損失函數做了二階的泰勒展開,並且還可以自定義損失函數。import xgboost as xgbimport numpy as npimport time# read data into Xgboost DMatrix formatdtrain = xgb.DMatrix(Xtrain
  • Python XGBoost算法代碼實現和篩選特徵應用
    XGBoost算法的步驟和GB基本相同,都是首先初始化為一個常數,gb是根據一階導數ri,xgboost是根據一階導數gi和二階導數hi,迭代生成基學習器,相加更新學習器。—可以通過booster [default=gbtree]設置參數:gbtree: tree-based models/gblinear: linear models2.傳統GBDT在優化時只用到一階導數信息,xgboost則對代價函數進行了二階泰勒展開,同時用到了一階和二階導數。
  • 100天搞定機器學習|Day61 手算+可視化,終於徹底理解了 XGBoost
    import XGBClassifierfrom xgboost import plot_treeimport matplotlib.pyplot as pltfrom xgboost import plot_importancefrom sklearn.model_selection import GridSearchCVfrom sklearn.metrics
  • 我的XGBoost學習經歷及動手實踐
    引入基本工具庫:import numpy as npimport pandas as pdimport xgboost as xgbimport matplotlib.pyplot as pltplt.style.use("ggplot")%matplotlib inline2.
  • 第113天: Python XGBoost 算法項目實戰
    ,在需要重複試驗的時候,保證得到一組一樣的隨機數。一個已訓練的xgboost模型能夠自動計算特徵重要性,這些重要性得分可以通過成員變量feature_importances_得到。梯度提升算法是如何計算特徵重要性的?使用梯度提升算法的好處是在提升樹被創建後,可以相對直接地得到每個屬性的重要性得分。
  • 大戰三回合:XGBoost、LightGBM和Catboost一決高低
    Battle 中,根據訓練和預測的時間、預測得分和可解釋性等評測指標,讓三個算法一決高下!一言不合就 BattleGBDT 是機器學習中的一個非常流行並且有效的算法模型,2014 年陳天奇博士提出的 XGBoost 算法就是 GBDT 一個重要實現。
  • SHAP——Xgboost的歸因新境界
    ———————————導讀分割線———————————之前讀研時,有專門學過XGBoost,在我工作後,第一個接觸的項目就是用XGBoost預測ATM存支票的欺詐現象。根據以前所學的知識,我一直覺得這個模型的可解釋性不強,只能用Gain,Weight,Cover進行全局歸因。
  • 【機器學習基礎】xgboost系列丨xgboost建樹過程分析及代碼實現
    特徵一總共有以下幾個取值:sorted(df.x1.unique())# [1, 2, 3, 6, 7, 8, 9, 10]對x1的取值進行排序後,最小值為1,顯然沒有樣本的x1特徵值<1,以x1劃分相當於沒有進行劃分,因此從x1=2進行劃分。
  • 中信建投證券:xgboost中證500指數增強7月持倉組合發布
    xgboost模型是一種強學習模型,其是由眾多弱學習模型集成,其採用弱學習模型為CART,即分類與回歸樹。該模型重在擬合特徵和標籤間的非線性關係。組成該模型的眾多弱學習器之間的關係是補充彌補的關係,弱學習器的訓練有先後,每個新的弱學習器的學習目標都是之前已訓練好的弱學習器的殘差。
  • 機器學習 | 機器學習之XGBoost Part2
    試試看在其他參數相同的情況下,我們xgboost庫本身和sklearn比起來,效果如何:#默認reg:linearreg = XGBR(n_estimators=180,random_state=420).fit(Xtrain,Ytrain)reg.score(Xtest, Ytest)#sklearn調用方法結果#0.9050526026617368
  • 數學推導 + 純 Python 實現 XGBoost
    將該二階泰勒展開式帶入前述推導的XGBoost損失函數中,可得損失函數的近似表達式:所以只需要求出每一步損失函數的一階導和二階導的值,然後最優化目標函數,就可以得到每一步的 所以該式就是一個只包含一個變量葉子結點權重
  • 數學推導+純Python實現機器學習算法17:XGBoost
    將該二階泰勒展開式帶入前述推導的XGBoost損失函數中,可得損失函數的近似表達式:     所以只需要求出每一步損失函數的一階導和二階導的值,然後最優化目標函數,就可以得到每一步的 所以該式就是一個只包含一個變量葉子結點權重
  • Python官方中文文檔來了
    小夥伴們已經習慣了原汁原味的英文文檔,但如果有官方中文文檔,那麼查閱或理解速度都會大大提升。本文將介紹隱藏在 Python 官網的中文文檔~以前也是有一些第三方維護的 Python 中文文檔,不過可能因為人力等限制,並做不到同步更新與維護。目前也有很多高質量的 Python 中文資源,但大部分都是大牛寫的書或教程,官方文檔的翻譯並得不到保證。
  • Python官方中文文檔強勢來襲
    Python 官方支持的文檔一直沒有中文。小夥伴們已經習慣了原汁原味的英文文檔,但如果有官方中文文檔,對於初學者來說,門檻會大大的降低。
  • 學界 | 多 GPU 加速學習,這是一份嶄新的 XGBoost 庫
    目前這一改進與實現已經加入到了標準 XGBoost 庫中,我們可以直接在 GPU 環境下進行編譯與使用。梯度提升是一種可以獲得當前最佳性能的監督學習方法,它在分類、回歸和排序方面有很好的表現。XGBoost 是一般化梯度提升算法的實現,它在多核和分布式機器上有著高度優化的實現,且能處理稀疏數據。
  • 看官方中文文檔啦
    目前也有很多高質量的 Python 中文資源,但大部分都是大牛寫的書或教程,官方文檔的翻譯並得不到保證。如下在 Python 文檔中,只有英語、法語、日語和韓語可選,我們並看不到中文選項。官方中文文檔地址:https://docs.python.org/zh-cn但是如果我們在地址欄中手動鍵入 zh-cn,即:https://docs.python.org/zh-cn,那麼我們就能看到官方的中文文檔了。如下,我們現在從下拉項也可以直接看到中文選項。