読者です 読者をやめる 読者になる 読者になる

最近、流行のxgboost

 kaggle で

Description - Otto Group Product Classification Challenge | Kaggle 

に参加していますが、こちらのフォーラムで

Achieve 0.50776 on the leaderboard in a minute with XGBoost - Otto Group Product Classification Challenge | Kaggle 

というタイトルのものがありました。xgboost についてはこちらが参考になると思います。

ブースティング決定木の概念:

http://homes.cs.washington.edu/~tqchen/pdf/BoostedTree.pdf 

概念と使い方: Gradient Boosting Decision Treeでの特徴選択 in R | 分析のおはなし。

変数のこと: xgboostとgbmのパラメータ対応一覧をつくる - 盆栽日記 

実際の使い方は本家の

github.com

を見るのが良いかなと思います。

  xgboost は CRAN のサイトから消えてしまったため、 windowsでは (自分がwindows 環境なので)、Rtools よりRtools31をインストールしてから、R のコンソールから

devtools::install_github('dmlc/xgboost',subdir='R-package')

をすれば、xgboost のパッケージをインストールできました。

(2015/08/07 追記) 2015/08/02 の更新で、CRAN に復帰したため、

install.packages("xgboost")

で、インストールできます。

変数の説明は

Parameters · dmlc/xgboost Wiki · GitHub

が参考になります。gbm と xgboost の変数対応表を先ほどのサイトなどを参考にしてもう少し書き足してみます。[=default値] としています。

gbmxgboost備考(使用用途など)
n.trees[=100]nrounds 
interaction.depth[=1]max_depth[=6] 
bag.fraction[=0.5]subsample[=1]過学習の抑制
distributionobjectivermse など 
n.coresnthreadどちらも使用可能なスレッドの最大数がデフォルト
n.minobsinnode[=10]min_child_weight[=1]

gamma も関与?

shrinkage[=0.001]eta[=0.3] 

再現性を確保したい場合には、固定シード値推奨です。(set.seed(0) など)

変数の調整は、gbm と似たような感じになると思いながら奮闘しています。

追記:ハイパーパラメータの調整には、グリッドサーチや手動での探索よりも、ランダムサーチの方が良いらしいです。

http://www.jmlr.org/papers/volume13/bergstra12a/bergstra12a.pdf 

ちなみに、scikit-learn ではこれが実装されています。

sklearn.grid_search.RandomizedSearchCV — scikit-learn 0.16.0 documentation 

RandomForest でグリッドサーチとランダムサーチを比較したものがありました。

Comparing randomized search and grid search for hyperparameter estimation — scikit-learn 0.16.0 documentation 

自分は最近 python を勉強し始めたところなのでまだ試していませんが、どこかで1 度試してみたいと思います。

 追記(7/11):python でのインストール方法

自分はWindows user のため、python はWinPython (32bit)を使用しています。そのためWinPython 上での環境構築を紹介します。

(1) githubリポジトリをコピーする

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

とします。

(2) ビルド

windows でなければ、bash build.sh (もしくは make build.sh) で環境構築できるみたいです。WinPython では、

xgboost/windows/ にあるxgboost. sln をVisualStudio Express 2010 でRelease モードでリビルドします。このとき、openmp を有効化すると並列処理に対応します。

(WinPython (64bit) では、Visual Studio Community 2013 でRelease モード、x64 でビルドすればOK です。)

(3) インストール

xgboost/wrapper (追記2015/08/07:最新版(ver 0.4)では xgboost/python-package  )にディレクトリを移動して、

python setup.py install

とすれば、インストール完了です。

import xgboost

としてインポートの確認ができます。