近日,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