古典的機械学習

LightGBM らいとじーびーえむ

LightGBM勾配ブースティング高速学習Microsoft大規模データ
LightGBMについて教えて

簡単に言うとこんな感じ!

Microsoftが開発した「超高速の勾配ブースティング」だよ。XGBoostに比べて数倍〜10倍速く、メモリ効率も良い。大規模データや高速な学習が求められる本番環境でよく選ばれるんだ!


LightGBMとは

LightGBM(Light Gradient Boosting Machine)は、2017年にMicrosoftが公開した勾配ブースティング実装です。XGBoostの問題点(大規模データでの遅さ)を解決するために開発されました。


XGBoostとの主な違い

比較項目XGBoostLightGBM
ツリー成長方式Level-wise(レベルごとに全ノード分割)Leaf-wise(最も損失を減らす葉を優先分割)
速度速いより速い(数倍〜10倍)
メモリ効率良いより良い
小データ有利過学習リスク
大規模データ苦手得意

Leaf-wise vs Level-wise

Level-wise(XGBoost):
  深さ1: [ノード1分割] → [ノード2分割]
  深さ2: [全4ノードを分割]
  → 均一に成長するが非効率

Leaf-wise(LightGBM):
  一番「損失を減らせる」葉だけを選んで分割し続ける
  → 不均一だが効率的。深くなりすぎる過学習リスクあり
  → max_leavesで制御

GOSS と EFB(高速化の仕組み)

GOSS(Gradient-based One-Side Sampling):勾配の大きいサンプルを保持し、小さいものをサンプリング。精度を保ちながらデータ量を削減。

EFB(Exclusive Feature Bundling):互いに排他的な(同時に非ゼロにならない)特徴量をまとめる。高次元スパースデータを効率化。


カテゴリ変数のネイティブサポート

LightGBMはカテゴリ変数をOneHotエンコーディングなしで直接扱えます。

import lightgbm as lgb

train_data = lgb.Dataset(X_train, y_train,
    categorical_feature=['city', 'product_type'])

歴史と背景

  • 2016年:Microsoft Research がNIPS 2016でLightGBM論文発表
  • 2017年:オープンソースとして公開
  • 現在:KaggleコンペでXGBoostを超えることも多い、現役の最強クラスツール

関連用語