用語比較
XGBoostとLightGBMの違い|木の育て方・カテゴリ変数・既定値(DS検定)
XGBoostとLightGBMの違いは、木を育てる既定の順番と、カテゴリ変数の渡し方です。どちらも決定木を順に足していく勾配ブースティングのライブラリです。
DS検定の公式スキルチェックリストは、この2つを勾配ブースティングの派生形として挙げています。現行の公式文書の記述で並べて整理します。
この記事の目次
この記事の根拠と出典
各セクションの見出しの下に、公式資料で確認した内容か編集部の整理かをラベルで示しています。 試験日・料金・申込条件・試験方式は変わることがあるため、申込前に公式サイトで確認してください。
XGBoostとLightGBMの要点
XGBoost
木の分割の既定はdepthwise(根に近いノードから分割)。lossguide(損失の変化が最大のノードを分割)も選べる。複雑さの上限は主にmax_depth(既定6)。カテゴリ列はenable_categoricalで扱う。
LightGBM
木はleaf-wise(best-first)で育て、損失の減りが最大の葉を選んで分割する。複雑さの上限は主にnum_leaves(既定31)。カテゴリ列はcategorical_featureで指定する。
違いを表で確認
| 比較軸 | XGBoost | LightGBM |
|---|---|---|
| 木を育てる既定の順番 | grow_policyの既定はdepthwise。根に近いノードから分割する。lossguideを選ぶと、損失の変化が最大のノードを分割する(hist・approxのみ) | leaf-wise(best-first)。損失の減りが最大の葉を選んで育てる。葉の数を同じにすると、level-wiseより損失が小さくなりやすいと公式文書は述べている |
| 複雑さを抑える主な上限 | max_depth(既定6)。大きくするほど複雑になり、過学習しやすい | num_leaves(既定31)。max_depthの既定は-1(制限なし)。max_depthを指定しても、木は葉ごとに育つ |
| 連続値の扱い | tree_methodの既定autoはhistと同じ。連続値をビン(区間)にまとめる。全候補を調べるexactも選べる。max_binの既定は256 | ヒストグラム方式で、連続値をビンにまとめる。公式文書は、事前ソート方式より学習が速く、メモリが少ないと説明している |
| カテゴリ変数 | enable_categoricalを有効にして扱う。対応するのはhistとapproxで、exactは非対応 | categorical_featureで列を指定する。公式文書は、one-hotより、カテゴリを2つの部分集合に分ける分割のほうが最適だと説明している |
| 正則化の既定値 | lambda(L2)の既定は1、alpha(L1)の既定は0 | lambda_l2(L2)とlambda_l1(L1)の既定はどちらも0.0 |
| 学習率の既定値 | eta(別名learning_rate)の既定は0.3 | learning_rateの既定は0.1 |
DS検定の学習に使う書籍(Amazon)
PRどこで迷っているかを切り分ける
どちらも勾配ブースティングで区別が付かない人
どちらも勾配ブースティングを実装したライブラリで、公式スキルチェックリストでは「その派生形」と書かれています。違いは手法の種類ではなく、木の育て方や既定値などの実装の選び方です。
木の複雑さを調整するパラメータで迷う人
XGBoostは木の深さ(max_depth)、LightGBMは葉の数(num_leaves)が主な上限です。LightGBMはmax_depthを指定しても葉ごとに育つので、まずnum_leavesを見ます。
カテゴリ変数をone-hotにするか迷う人
どちらもカテゴリ列を直接扱う機能があります。XGBoostはenable_categoricalを有効にし、LightGBMはcategorical_featureで列を指定します。one-hot変換との違いは、別ページで確認できます。
具体例で使い分ける
例 1
データが少なくて過学習が心配なとき
行数が少ない表データで勾配ブースティングを使い、訓練データでは精度が高いのに検証データで落ちています。
- LightGBMの公式文書は、leaf-wiseはデータが少ないと過学習を起こすことがあると述べ、木の深さを制限するmax_depthを用意しています。あわせてnum_leavesを小さくします。
- XGBoostでは、公式文書がmax_depthを大きくするとモデルが複雑になり過学習しやすくなると述べています。max_depthを小さくします。
結論: 上限を下げる先は、XGBoostがmax_depth、LightGBMがnum_leavesとmax_depthです。
例 2
カテゴリ列を含む表を使うとき
地域や商品の種類のようなカテゴリ列を含む表を、そのまま勾配ブースティングに渡したいと考えています。
- XGBoostは、列のデータ型をカテゴリ型にして、enable_categoricalを有効にします。対応するtree_methodはhistとapproxです。
- LightGBMは、categorical_featureでカテゴリ列を指定します。公式文書は、カテゴリの値を整数コードに変換して扱うと説明しています。
結論: どちらも、設定を有効にすればカテゴリ列を直接扱えます。渡し方のパラメータ名が違います。
問題文から答えを選ぶ手順
- 1
手法の種類を見る
どちらも、決定木をベースにした勾配ブースティングの派生形です。「GBDTの実装」と言われたら、両方が当てはまります。
- 2
パラメータの名前を見る
max_depthが主な上限ならXGBoost、num_leavesならLightGBMの設計を指しています。
- 3
木の育て方の用語を見る
leaf-wise(best-first)はLightGBMの既定の育て方です。XGBoostはdepthwiseが既定で、lossguideも選べます。
試験での見分け方
- 1XGBoostもLightGBMも、決定木をベースにした勾配ブースティングの派生形。
- 2XGBoostの木の既定はdepthwise、LightGBMはleaf-wise(best-first)。
- 3XGBoostの主な上限はmax_depth(既定6)、LightGBMはnum_leaves(既定31)。
- 4LightGBMのleaf-wiseは、データが少ないと過学習することがある。
- 5現行のXGBoostはtree_methodの既定がhistで、連続値をビンにまとめる点はLightGBMと近い。
- 6ここで挙げる既定値は、現行の公式文書の値。バージョンによって変わることがある。
誤答しやすい選択肢
leaf-wiseはLightGBMにしかできないと考える
修正: XGBoostもgrow_policyにlossguideを選ぶと、損失の変化が最大のノードを分割します。違いは既定の育て方です。
XGBoostは必ず全候補を調べると考える
修正: 現行の公式文書では、tree_methodの既定autoはhistと同じです。全候補を調べるのはexactを選んだときです。
既定値の違いを、手法の性能の違いと考える
修正: 学習率や正則化の既定値は、ライブラリごとに決まっているだけです。既定値の違いと手法の優劣は別の話です。
確認問題
Q1損失の減りが最大の葉を選んで木を育てる(leaf-wise)のを既定とするのはどちらか?
答え: LightGBM
LightGBMの公式文書は、木をleaf-wise(best-first)で育て、損失の変化が最大の葉を選ぶと説明しています。XGBoostの既定はdepthwiseです。
Q2木の深さの上限であるmax_depthの既定が6なのはどちらか?
答え: XGBoost
XGBoostの公式文書は、max_depthの既定を6と記しています。LightGBMのmax_depthの既定は-1で、制限なしです。
Q3DS検定の公式スキルチェックリストで、XGBoostとLightGBMは何の派生形と書かれているか?
答え: 勾配ブースティング(GBDT)
チェックリストは、決定木をベースとしたアンサンブル学習として、Random Forest、勾配ブースティング、その派生形であるXGBoost・LightGBMを挙げています。
到達チェック
- XGBoostとLightGBMが、どちらも勾配ブースティングの派生形だと説明できる
- 木を育てる既定の順番(depthwiseとleaf-wise)の違いを説明できる
- 複雑さを抑える主なパラメータ(max_depthとnum_leaves)を言い分けられる
関連ページで確認する
同じ資格で次に知りたいこと
- データドリフトとコンセプトドリフトの違い|入力の分布が変わるか、入力と答えの関係が変わるか(DS検定)
データドリフトとコンセプトドリフトの違いを、変わるもの(入力の分布 P(X) と、入力から答えへの関係 P(y|X))・見分け方・対処で整理。架空の数値例と確認問題つき。DS検定のモデル劣化の設問に使える。
- 共通鍵暗号方式と公開鍵暗号方式の違い|鍵の数・復号の鍵・電子署名(DS検定)
共通鍵暗号方式と公開鍵暗号方式の違いを、鍵の数・暗号化と復号に使う鍵・電子署名での鍵の使い方で整理します。NIST公式文書とDS検定の公式チェックリストにもとづく解説と確認問題つき。
- 平均値補完と中央値補完の違い(DS検定)
平均値補完と中央値補完の違いを、外れ値があるときの補完値の差、分布が左右対称なときの一致、使えるデータの種類で整理。scikit-learnのSimpleImputerの記述とNISTの解説、架空の数値例と確認問題で確認。DS検定の欠損値対応の補足。
よくある質問
QXGBoostとLightGBMの違いは何ですか?
木を育てる既定の順番、複雑さの主な上限、カテゴリ変数の渡し方、各種パラメータの既定値です。XGBoostの木はdepthwiseが既定で上限はmax_depth、LightGBMの木はleaf-wiseで上限はnum_leavesです。両ライブラリの公式文書にもとづきます。
QLightGBMのleaf-wiseとは何ですか?
損失の減りが最大の葉を選んで分割していく木の育て方(best-first)です。公式文書は、葉の数を同じにするとlevel-wiseより損失が小さくなりやすい一方、データが少ないと過学習することがあるため、max_depthで制限できると説明しています。
QXGBoostでカテゴリ変数は扱えますか?
enable_categoricalを有効にして扱えます。公式文書では、対応するtree_methodはhistとapproxで、exactは非対応です。
QDS検定でXGBoostとLightGBMは問われますか?
公式スキルチェックリストは、勾配ブースティングの派生形としてXGBoostとLightGBMを挙げ、ライブラリで実行して変数の寄与度を解釈できることを求めています。設問の形式は受験前に公式の案内で確認してください。
次に見る比較
- G検定・DS検定・統計検定2級で重なる用語10語の比較
同じ名前の用語の定義と収録章を、資格ごとに並べます。
- ベイズの定理と条件付き確率の違い(統計検定2級の式と計算例)
求める確率の向きの違いと、陽性になる確率の計算例を確かめます。
- 紛らわしい用語ペア早見表
混同しやすい用語の違いと判定の手掛かりを、資格別の一覧で確かめます。
執筆: AI資格ドリル編集部(運営者情報を見る)
