プロジェクトマネジメント

LightGBMとは?仕組み・特徴・パラメータを分かりやすく解説

はじめに

LightGBM(Light Gradient Boosting Machine)は、Microsoftが開発した高速GBDTアルゴリズムで、大規模データでも圧倒的な速度と高精度を実現します。
特に「カテゴリ変数が多いデータ」「10万〜1000万行クラスの大規模データ」「モデル更新頻度が高い案件」で強みを発揮し、実務で採用されることが急増しています。

この記事では、初心者でも理解できるように LightGBMの仕組み・特徴・パラメータ設定の要点 をまとめています。
比較記事(XGBoost vs LightGBM)の内部リンクとしても最適化済みです。


LightGBMとは?(一言でいうと「高速版GBDT」)

LightGBMは、勾配ブースティング決定木(GBDT)を大幅に高速化した手法です。

▼LightGBMの特徴(要点)

  • Leaf-wise(葉優先) の木構造で高速かつ深い分岐が可能
  • ヒストグラム学習 により計算コスト削減
  • カテゴリ変数をそのまま扱える(one-hot不要)
  • 大規模データでも爆速
  • GPU学習に強い
  • メモリ効率が高い

XGBoostと比較して「速度」「スケール」「カテゴリ変数」において優位性があります。


LightGBMの仕組み:高速な理由は?

LightGBMが高速な理由は次の2点に集約されます。


Leaf-wise(葉優先)で木が伸びる

一般的なGBDT(XGBoost含む)は depth-wise(深さ優先) で木を作るが、LightGBMは Leaf-wise を採用。

  • Lossが最も改善される葉を優先して深く掘る
  • 少ない木の数でも精度が出やすい
  • 必要な計算だけに集中するため高速

Leaf-wiseのデメリット

  • 深すぎる木ができて 過学習しやすい
    max_depthnum_leaves を必ず制御する

ヒストグラムベース学習

連続値を ビン分割(ヒストグラム化) し、そのビンごとに最適な分岐を探索する手法。

メリット:

  • 計算量が大幅に削減
  • メモリ使用量が少ない
  • 大規模データでも破綻しにくい

LightGBMの強み(XGBoostと比較して優位な点)

とにかく学習が速い

  • XGBoostより数倍速いケースが多い
  • 大規模データ(10万〜1000万行)で特に差が出る

カテゴリ変数をそのまま扱える

  • one-hotエンコーディング不要
  • カテゴリが1000以上あっても高速
    ECデータ / 広告データ / IDベースデータと相性抜群

メモリ効率が良い

  • XGBoostより消費メモリが少ない
  • クラスタ環境でのバッチ学習にも向く

LightGBMの弱点(実務で注意すべき点)

過学習しやすい

Leaf-wiseは深く分岐しやすいため、以下の制御が必須。

  • max_depth
  • num_leaves
  • min_data_in_leaf

小規模データだとXGBoostの方が安定することがある

  • データが少ないとLeaf-wiseが悪い方向に働く
  • XGBoostの正則化の強さが有利になりやすい

LightGBMの主要パラメータ

必ず触るパラメータ

パラメータ内容注意点
num_leaves葉の数過学習に直結。多すぎ注意
max_depth木の深さ過学習制御の最重要
learning_rate学習率小さくするほど高精度だが遅い
n_estimators木の本数多すぎると遅い&過学習
min_data_in_leaf葉の最小データ数多いと過学習抑制

性能を上げるパラメータ

パラメータ効果
feature_fraction特徴量のサブサンプリング
bagging_fraction / bagging_freq行方向サブサンプリングで過学習防止
lambda_l1, lambda_l2正則化

LightGBMの得意・不得意まとめ

◎ 得意

  • 大規模データ(10万〜1000万行)
  • カテゴリ変数が多い
  • GPU学習環境
  • 大量特徴量のTabularデータ
  • 推論速度も必要(リアルタイム処理)

△ 不得意

  • 小規模データ
  • カテゴリがほぼ無い&特徴量が少ない
  • 過学習が問題になりやすいデータ

LightGBMのコード例

import lightgbm as lgb

model = lgb.LGBMClassifier(
    n_estimators=200,
    learning_rate=0.1,
    num_leaves=31,
    max_depth=-1,
    feature_fraction=0.8,
    bagging_fraction=0.8,
    bagging_freq=1
)

model.fit(X_train, y_train)

XGBoostと比較してどんな時に使うべきか?

LightGBMを選ぶべきケース

  • データが大規模
  • カテゴリ変数が多い
  • モデル更新を高速で回したい
  • メモリ制約が強い
  • ビジネス指標に対して「学習速度」が重要

XGBoostを選ぶべきケース

  • 小規模〜中規模データ
  • 精度をギリギリまで追う
  • 過学習が発生しやすいタスク

まとめ

観点LightGBMXGBoost
速度圧倒的に速い速いがLightGBMに劣る
精度大規模データで強い小〜中規模データで安定
カテゴリ変数直接扱える前処理が必要
過学習耐性弱め強い
メモリ少なくて済む多め
実務利用急増中依然として多い

関連記事

-プロジェクトマネジメント
-