天天看點

mac OS 安裝XGBoost(完美解決方案)

XGBoost是一種基于決策樹(CART)的分布式的高效的梯度提升算法,它可被應用到分類、回歸、排序等任務中,與一般的GBDT算法相比,XGBoost主要有以下幾個優點:

  • 對葉節點的權重進行了懲罰,相當于添加了正則項,防止過拟合
  • XGBoost的目标函數優化利用了損失函數關于待求函數的二階導數,而GBDT隻利用了一階資訊
  • XGBoost支援列采樣,類似于随機森林,建構每棵樹時對屬性進行采樣,訓練速度快,效果好
  • 類似于學習率,學習到一棵樹後,對其權重進行縮減,進而降低該棵樹的作用,提升可學習空間
  • 建構樹的算法包括精确的算法和近似的算法,近似的算法對每維特征權重分位進行分桶,具體的算法利用到了損失函數關于待求樹的二階導數。
  • 添加了對于稀疏資料的支援,當資料的某個特征缺失時,将該資料劃分到預設的子節點,本文提出了一個算法來求解這個預設方向。
  • 可并行的近似直方圖算法,分裂節點時,資料在block中按列存放,而且已經經過了預排序,是以可以并行計算,即同時對各個屬性周遊最優分裂點

那麼如何在mac下安裝xgboost呢

系統版本
macOS Sierra 版本 10.12.3

有兩種方法:

1. pip安裝

  • 第一步:安裝HomeBrew

HomeBrew是mac系統的包管理軟體,類似于ubuntu的

apt-get

或者centos的

yum

,安裝方法如下,在終端中輸入:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
           
  • 第二步:安裝livm
brew install llvm
           

llvm是Mac下的一個編譯器,可以用來編譯C和C++程式.最新的llvm已經包含了OpenMP.

注意, Mac下的XCode帶有clang編譯器, 但是是不支援OpenMP的,是以不能用來編譯XGBoost.

  • 第三步:安裝clang-omp
brew install clang-omp
           
有人提到clang-omp已經從HomeBrew移除了, 如果找不到clang-omp可以嘗試

brew install --with-clang llvm

  • 第四步, 用pip安裝XGBoost
pip install xgboost
           

大功告成!

2. 從Github庫下載下傳最新版XGBoost安裝

  • 第一步:克隆最新的XGBoost到本地
git clone --recursive https://github.com/dmlc/xgboost
           
  • 第二步:安裝gcc
brew install gcc5 --without-multilib
           
  • 第三步:修改XGBoost的config檔案
cd xgboost
cp make/config.mk ./config.mk
           

很多攻略都是直接将以下這兩行

# export CC = gcc
# export CXX = g++
           

改為:

export CC = gcc-5
export CXX = g++-5
           

但是我直接這樣做卻一直報錯,無法編譯通過。搞了半天才發現系統找不到gcc,原來是macOS已經不自帶gcc環境了,通過Homebrew安裝系統也識别不到。

正常情況下是可以通過port來檢視系統裡安裝的gcc的:

安裝gcc_select
/opt/local/bin/port install gcc_select
檢視gcc清單
port select --list gcc
還可以選擇gcc的版本
sudo port select --set gcc mp-gcc5
           

但是很不幸,我執行

port select --list gcc

得到的結果是

Available versions for gcc:

none (active)

但是明明Homebrew安裝成功了啊,于是到Homebrew的安裝目錄下瞧一瞧:

cd /usr/local/bin

,發現裡面靜靜躺着

gcc5

,

gcc7

,系統就是無法識别這裡的gcc。。。搜了半天沒找到解決方案,最後,機智的我直接把

config.mk

修改成:

export CC = /usr/local/bin/gcc-5
export CXX = /usr/local/bin/g++-5
export MPICXX = /usr/local/bin/mpicxx
           

就是帶上具體的路徑,然後儲存

  • 第四步:開始編譯
make clean_all && make -j4
           
  • 第五步:安裝python包
cd python-package
python setup.py install
           

至些XGBoost終于安裝成功!

在python環境中測試一下:

import xgboost
xgboost.__version__
           
輸出'0.6'

參考

Mac OSX 下安裝XGBoost