LightGBM らいとじーびーえむ
LightGBM勾配ブースティング高速学習Microsoft大規模データ
LightGBMについて教えて
LightGBMとは
LightGBM(Light Gradient Boosting Machine)は、2017年にMicrosoftが公開した勾配ブースティング実装です。XGBoostの問題点(大規模データでの遅さ)を解決するために開発されました。
XGBoostとの主な違い
| 比較項目 | XGBoost | LightGBM |
|---|---|---|
| ツリー成長方式 | 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を超えることも多い、現役の最強クラスツール
関連用語
- 勾配ブースティング — LightGBMの理論的基盤
- XGBoost — LightGBMの比較対象
- CatBoost — カテゴリ変数に特化した別実装
- カテゴリ変数エンコーディング — LightGBMでは不要なケースも
- ハイパーパラメータチューニング — LightGBMのパラメータ最適化