ゆるふわめも

東京か京都にいます。

新しいGradient Boostingベースの予測モデルLightGBM

概要

ツリーベースのアンサンブル手法は時系列順に

  • 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).

Arxiv: https://arxiv.org/pdf/1609.06119.pdf