概要
ツリーベースのアンサンブル手法は時系列順に
- Random Forest
- Gradient Boosting
- XGBoost
- FastBDT
などとありますがここに新しくLightGBMのいうのができたそうです。 XGBoostと同等以上の精度かつ高速ということで、以下からクローンして使用できます。
詳細な論文はまだ出ていませんが
に大まかな仕組みの説明が記載されています。損失関数には
- L1 Loss
- L2 Loss
- Log loss
- Classification Error rate
- AUC
- NDCG
- Multi class log loss
- Multi class error rate
が指定できるということでマルチクラス、バイナリクラス、回帰問題に対応してるので一般的な機械学習はすぐに行えそうです。 実はKDD2016のXGBoostの論文もしっかり読めていないので時間が空いたら詳細を調べつつ試しに使っていこうと思います。
インストール
Python(2.7, 3.4)
% pip install git+https://github.com/ArdalanM/pyLightGBM.git
C++
% brew install cmake % git clone --recursive https://github.com/Microsoft/LightGBM % mkdir build % cd build
ここまできたら
% which g++ (git)-[master] /usr/bin/g++
として出てきたパスを -DCMAKE_CXX_COMPILER
に指定。
$ cmake -DCMAKE_CXX_COMPILER=/usr/bin/g++ ..
インストール時のエラー
CMake Error at /Users/horiguchi_dev/.pyenv/versions/anaconda3-2.1.0/envs/data-science-py27/lib/python2.7/site-packages/cmake/data/CMake.app/Contents/share/cmake-3.7/Modules/FindPackageHandleStandardArgs.cmake:138 (message): Could NOT find OpenMP (missing: OpenMP_C_FLAGS OpenMP_CXX_FLAGS) Call Stack (most recent call first):
エラー解決法
% brew uninstall gcc % brew install gcc --without-multilib
関連手法の元文献
XGBoost
Chen, Tianqi, and Carlos Guestrin. "Xgboost: A scalable tree boosting system." arXiv preprint arXiv:1603.02754 (2016).
FastBDT
Keck, Thomas. "FastBDT: A speed-optimized and cache-friendly implementation of stochastic gradient-boosted decision trees for multivariate classification." arXiv preprint arXiv:1609.06119 (2016).