okpy

Pythonエンジニア兼テックリーダーが、多くのプロジェクトとチーム運営から得た実践的な知識を共有するブログです。

lightgbm: 高速な勾配ブースティングライブラリの完全ガイド

Python lightgbm ライブラリ完全ガイド

lightgbm は、Microsoft によって開発された高速で効率的な勾配ブースティング(Gradient Boosting)ライブラリです。大規模データに対しても高い精度と処理速度を発揮し、機械学習の実務現場やコンペティションで広く使用されています。本記事では、Python による lightgbm の使い方を日本語で詳しく紹介します。

1. lightgbm の概要

  • 勾配ブースティング決定木(GBDT)に基づく高性能アルゴリズム
  • カテゴリ変数の自動処理や並列学習に対応。
  • sklearn API とネイティブ API の両方に対応。

インストール方法

pip install lightgbm

2. 主な機能と使用例

(1) データの準備

import lightgbm as lgb
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

iris = load_iris()
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.2, random_state=42)

(2) 学習(sklearn API 使用)

model = lgb.LGBMClassifier()
model.fit(X_train, y_train)

(3) 予測と評価

y_pred = model.predict(X_test)
print("Accuracy:", accuracy_score(y_test, y_pred))

(4) 重要特徴量の可視化

import matplotlib.pyplot as plt
lgb.plot_importance(model, max_num_features=10)
plt.show()

(5) ハイパーパラメータの調整

model = lgb.LGBMClassifier(num_leaves=31, learning_rate=0.1, n_estimators=100)
model.fit(X_train, y_train)

(6) クロスバリデーション(ネイティブ API

dtrain = lgb.Dataset(X_train, label=y_train)
params = {'objective': 'multiclass', 'num_class': 3, 'metric': 'multi_logloss'}
cv_results = lgb.cv(params, dtrain, num_boost_round=50, nfold=3, seed=42)
print(cv_results)

(7) モデル保存と読み込み

model.booster_.save_model("lightgbm_model.txt")
booster = lgb.Booster(model_file="lightgbm_model.txt")

(8) カテゴリ変数の処理

import pandas as pd
X_df = pd.DataFrame(X_train)
X_df[0] = X_df[0].astype('category')
model = lgb.LGBMClassifier()
model.fit(X_df, y_train)

(9) SHAP による特徴量の可視化

import shap
explainer = shap.TreeExplainer(model)
shap_values = explainer.shap_values(X_test)
shap.summary_plot(shap_values, X_test)

(10) 予測確率の出力

proba = model.predict_proba(X_test)
print(proba[:5])

3. lightgbm の主な機能まとめ

機能 説明
LGBMClassifier / LGBMRegressor sklearn API でのモデル構築
Dataset ネイティブ API 用のデータ構造
高速学習 Leaf-wise の木構築と並列学習
カテゴリ変数処理 自動で最適なエンコーディングを選択
SHAP対応 特徴量の寄与度を可視化可能

まとめ

lightgbm は、学習速度・精度・拡張性すべてに優れた Gradient Boosting フレームワークです。構造化データを扱うプロジェクトでの強力な武器として、初心者から上級者まで幅広く活用できるライブラリです。