LightGBMのインストール方法と使い方

LightGBMのインストール方法と使い方
えびかずき
えびかずき

こんにちは、えびかずきです。

今回は勾配ブースティングのフレームワークである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

パラメータ調整

公式ドキュメントにまとめられていますので、こちらを参考にしてください。

パラメータの調整/LightGBM公式ドキュメント

基本的には、n_estimators,learning_rate=0.1,max_depthの3要素を調整します。

まとめ

今回は勾配ブースティングのフレームワークであるLightGBMのインストール方法と簡単な使い方について説明しました。

scikit-learnだと大量のデータ処理に向かないので、そういった場合は高速に処理できるLightGBMがおすすめです。

勾配ブースティングが使えるフレームワークは他にもXGBoostなどがありますので、また気が向いたら記事にします。

Pythonカテゴリの最新記事