R.python常見問題③(xgboost介紹和安裝)

如何安裝 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已經給業界帶來了很大的影響。

參考文獻:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章