如何安裝 xgboost?
- R語言安裝 可以直接使用install.packages()安裝
- python安裝 首先在Python Extension Packages for Windows - Christoph Gohlke上下載對應的python版本,然後pip install D:\xgboost-0.6-cp35-cp35m-win_amd64.whl就可以安裝xgboost了
什麼是 xgboost?
XGBoost :eXtreme Gradient Boosting 項目地址:https://github.com/dmlc/xgboost
是由 Tianqi Chen http://homes.cs.washington.edu/~tqchen/ 最初開發的實現可擴展,便攜,分佈式 gradient boosting (GBDT, GBRT or GBM) 算法的一個庫,可以下載安裝並應用於 C++,Python,R,Julia,Java,Scala,Hadoop,現在有很多協作者共同開發維護。
XGBoost 所應用的算法就是 gradient boosting decision tree,既可以用於分類也可以用於迴歸問題中。
那什麼是 Gradient Boosting?
Gradient boosting 是 boosting 的其中一種方法
所謂 Boosting ,就是將弱分離器 f_i(x) 組合起來形成強分類器 F(x) 的一種方法。
所以 Boosting 有三個要素:
- A loss function to be optimized: 例如分類問題中用 cross entropy,迴歸問題用 mean squared error。
- A weak learner to make predictions: 例如決策樹。
- An additive model: 將多個弱學習器累加起來組成強學習器,進而使目標損失函數達到極小。
Gradient boosting 就是通過加入新的弱學習器,來努力糾正前面所有弱學習器的殘差,最終這樣多個學習器相加在一起用來進行最終預測,準確率就會比單獨的一個要高。之所以稱爲 Gradient,是因爲在添加新模型時使用了梯度下降算法來最小化的損失。
爲什麼要用 xgboost?
前面已經知道,XGBoost 就是對 gradient boosting decision tree 的實現,但是一般來說,gradient boosting 的實現是比較慢的,因爲每次都要先構造出一個樹並添加到整個模型序列中。
而 XGBoost 的特點就是計算速度快,模型表現好,這兩點也正是這個項目的目標。
表現快是因爲它具有這樣的設計:
- Parallelization: 訓練時可以用所有的 CPU 內核來並行化建樹。
- Distributed Computing : 用分佈式計算來訓練非常大的模型。
- Out-of-Core Computing: 對於非常大的數據集還可以進行 Out-of-Core Computing。
- Cache Optimization of data structures and algorithms: 更好地利用硬件。
Xgboost第一感覺就是防止過擬合+各種支持分佈式/並行,所以一般傳言這種大殺器效果好(集成學習的高配)+訓練效率高(分佈式),與深度學習相比,對樣本量和特徵數據類型要求沒那麼苛刻,適用範圍廣。
Xgboost和深度學習的關係,陳天奇在Quora上的解答如下: 不同的機器學習模型適用於不同類型的任務。深度神經網絡通過對時空位置建模,能夠很好地捕獲圖像、語音、文本等高維數據。而基於樹模型的XGBoost則能很好地處理表格數據,同時還擁有一些深度神經網絡所沒有的特性(如:模型的可解釋性、輸入數據的不變性、更易於調參等)。 這兩類模型都很重要,並廣泛用於數據科學競賽和工業界。舉例來說,幾乎所有采用機器學習技術的公司都在使用tree boosting,同時XGBoost已經給業界帶來了很大的影響。
參考文獻: