こんにちは、えびかずきです。
今回は勾配ブースティングのフレームワークであるLightGBMのインストール方法と簡単な使い方について説明していきます。
こんな人におすすめ:
・LightGBMのインストール方法が分からないので教えて欲しい
・scikit-learnより高速な勾配ブースティングを実装したい
開発環境
Python 3.7.3
LightGBM 3.2.1
scikit-learn 0.24.2
Pandas 1.2.4
IDE:jupyter Notebook
LightGBMのインストール
インストールはGithubリポジトリに記載の公式手順で進めます。
https://github.com/microsoft/LightGBM/tree/master/python-package
1.pipでlightgbmをインストールする
pip install lightgbm
Githubリポジトリの説明ではwheelという標準パッケージもインストールする必要があると書かれていますが、私の場合は上のlightgbmのインストール時に自動でインストールされていました。
ちなみにAnacondaを使っている人は、condaでもインストールできます。
2.brewでlibompをインストールする(Macの場合)
LightGBMを使う時にXcodeコンパイラによってwheelパッケージの一部をビルドする必要があるようです。
そのためにlibompというOpenMP(並列プログラミングAPI)が必要。
brew install libomp
LightGBMの実行時に以下のようなエラーが出た場合は、libompのインストールがうまくいっていません。上の通りbrewでインストールしましょう。
dlopen(/Users/username/python/ml/lib/python3.7/site-packages/lightgbm/lib_lightgbm.so, 6): Library not loaded: /usr/local/opt/libomp/lib/libomp.dylib Referenced from: /Users/username/python/ml/lib/python3.7/site-packages/lightgbm/lib_lightgbm.so Reason: image not found
LightGBMの使い方
LightGBMによる勾配ブースティングの実装は、LGBMClassifierクラスを使います。
以下はscikit-learnのIrisデータセットをLightGBMの勾配ブースティングで学習させた例です。
scikit-learnによるモデルの実装方法とかなり似ています。
from sklearn.datasets import load_iris
import pandas as pd
# irisのデータをロード
iris = load_iris()
# 使いやすいようにpandasでデータフレーム化
df = pd.DataFrame(iris.data, columns=iris.feature_names)
# 今回は2クラス分類をしたいので、3つのクラスの内一つを消去
df['target'] = iris.target
df = df[df['target'] != 0]
df.head()
X = df.drop(['target'], axis=1).values
y = df["target"].values
import lightgbm as lgb
# max_depth=-1は無制限を意味する
model = lgb.LGBMClassifier(n_estimators=100,learning_rate=0.1,max_depth=-1)
model.fit(X, y)
model.score(X,y)
# OUTPUT:
# 1.0
パラメータ調整
公式ドキュメントにまとめられていますので、こちらを参考にしてください。
基本的には、n_estimators,learning_rate=0.1,max_depthの3要素を調整します。
まとめ
今回は勾配ブースティングのフレームワークであるLightGBMのインストール方法と簡単な使い方について説明しました。
scikit-learnだと大量のデータ処理に向かないので、そういった場合は高速に処理できるLightGBMがおすすめです。
勾配ブースティングが使えるフレームワークは他にもXGBoostなどがありますので、また気が向いたら記事にします。
コメントを書く