0Pricing
Learn AI with Python · レッスン

LightGBM と CatBoost

LightGBM が高速な理由、ヒストグラムベースの分割、カテゴリ特徴量向けの CatBoost を扱います。

「LightGBM と CatBoost」はCoddyKit上の無料Learn AI with Pythonレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはLearn AI with Python学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Learn AI with Pythonコースには全4レッスンが含まれています。

XGBoost の先に

XGBoost は強力ですが、非常に大規模なデータセットでは遅くなることがあります。LightGBM と CatBoost は、速度を向上させ、カテゴリデータをより適切に扱える新しい勾配ブースティングライブラリです。

ヒストグラムベースの分割

LightGBM は分割を探す前に、連続値の特徴量を離散的なビン(ヒストグラム)に分けます。これにより、厳密な手法よりも分割の探索が大幅に高速になり、メモリ使用量も少なくなります。

リーフワイズな木の成長

レベルワイズな成長とは異なり、LightGBM はリーフワイズに木を成長させます。つまり、損失の減少量が最も大きいリーフから先に分割します。収束は速くなりますが過適合しやすいため、num_leaves で制御します。

LGBMClassifier と num_leaves

num_leaves は LightGBM で最も重要な複雑度の調整項目です。値を大きくすると精度が向上しますが、過適合のリスクも高まります。経験則として、num_leaves < 2^max_depth を維持します。

from lightgbm import LGBMClassifier

model = LGBMClassifier(
    n_estimators=300,
    num_leaves=31,
    learning_rate=0.05,
    random_state=0,
)
model.fit(Xtr, ytr)
print(model.score(Xte, yte))

LightGBM の速度面での利点

ヒストグラムによるビニング、リーフワイズな成長、特徴量およびデータのサブサンプリングにより、LightGBM は大規模なデータセットで XGBoost より明らかに高速に学習し、多くの場合、同程度の精度を実現します。

from lightgbm import LGBMClassifier

model = LGBMClassifier(
    n_estimators=1000,
    num_leaves=63,
    learning_rate=0.03,
    feature_fraction=0.8,
    bagging_fraction=0.8,
)

LightGBM の早期停止

LightGBM はコールバックによる早期停止に対応しています。評価用データセットと early_stopping コールバックを渡すと、指標が頭打ちになった時点で停止できます。

import lightgbm as lgb
from lightgbm import LGBMClassifier

model = LGBMClassifier(n_estimators=2000, learning_rate=0.03)
model.fit(
    Xtr, ytr,
    eval_set=[(Xte, yte)],
    callbacks=[lgb.early_stopping(50)],
)

CatBoost とカテゴリ特徴量

CatBoost はカテゴリデータで特に力を発揮します。cat_features を使ってカテゴリ列をそのまま渡せるため、手動でのエンコーディングは不要です。

内部では順序付きターゲット統計量を使い、ターゲットリーケージを防ぎます。

from catboost import CatBoostClassifier

model = CatBoostClassifier(
    iterations=500,
    learning_rate=0.05,
    depth=6,
    verbose=False,
)
model.fit(Xtr, ytr, cat_features=[0, 3, 5])

エンコーディング不要が強力な理由

他のライブラリでは、カテゴリをワンホットエンコードまたはラベルエンコードする必要があり、次元数が膨大になったり、ターゲットが漏洩したりする可能性があります。CatBoost はこれを順序付きブースティングによって内部で処理し、カテゴリ特徴量の過適合を抑えます。

CatBoost の主要パラメータ

CatBoost では、iterations(n_estimators に相当)、learning_rate、depth(対称な木を構築)を使用します。最小限のチューニングでも良好に動作することがよくあります。

from catboost import CatBoostClassifier

model = CatBoostClassifier(
    iterations=1000,
    learning_rate=0.03,
    depth=8,
    l2_leaf_reg=3.0,
    verbose=100,
)

速度の比較

一般的な指針は次のとおりです。

  • LightGBM は大規模な数値データセットで通常最も高速です
  • CatBoost はカテゴリ特徴量が多い場合に最適で、必要なチューニングも少なくて済みます
  • XGBoost は成熟して堅牢で、デフォルト設定にも優れています

結果は問題によって異なるため、手元のデータですべてをベンチマークしてください。

ライブラリの選び方

カテゴリデータが多い場合は、CatBoost から始めてください。非常に大規模な数値テーブルで速度を重視するなら、LightGBM を選びます。実績のあるベースラインが必要なら XGBoost です。3 つとも内部では勾配ブースティングを使っているため、概念は応用できます。

クイックチェック

勾配ブースティングライブラリに関する知識を確認しましょう。

まとめ

まとめ: LightGBM は num_leaves で制御するヒストグラムベース・リーフワイズ成長を使い、大規模な数値データを高速に処理します。CatBoost は cat_features によってカテゴリ特徴量をネイティブに扱えるため、エンコーディングは不要です。どちらも XGBoost と同様に勾配ブースティングの派生手法です。ライブラリはベンチマークして選び、カテゴリデータには CatBoost、速度重視なら LightGBM を使いましょう。

よくある質問

「LightGBM と CatBoost」レッスンは無料ですか?

はい。「LightGBM と CatBoost」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Learn AI with Pythonコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Learn AI with Pythonコースには全4レッスンが含まれています。

「LightGBM と CatBoost」で何を学びますか?

LightGBM が高速な理由、ヒストグラムベースの分割、カテゴリ特徴量向けの CatBoost を扱います。 ブラウザで直接実行するハンズオンコードでLearn AI with Pythonを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Learn AI with Pythonを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのLearn AI with Pythonは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「LightGBM と CatBoost」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このLearn AI with Pythonレッスンでコードを書いて実行できますか?

はい。すべてのLearn AI with Pythonレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 決定木:理論と実装
  2. ランダムフォレストとバギング
  3. 勾配ブースティング:GBM と XGBoost
  4. LightGBM と CatBoost
← Learn AI with Pythonに戻る