忍者ブログ
統計、機械学習、AIを学んでいきたいと思います。 お役に立てば幸いです。

【Kaggle挑戦記】Spaceship Titanic 攻略 #9:最強の刺客 XGBoost 投入。しかし、LightGBM の牙城は崩せず

1. 今回の挑戦:勾配ブースティングの「二大巨頭」対決

LightGBMで 0.79611 という自己ベストを更新した前回。次なる一手として、Kaggleで不動の人気を誇るもう一つの最強エンジン、XGBoost を投入しました。 同じ「勾配ブースティング」という系譜に属しながら、計算の進め方(木の育て方)が異なるこの2つのアルゴリズム。どちらが今回の宇宙船タイタニックのデータと相性が良いのか、真剣勝負です。

2. 【実装】XGBoost 換装モデル

Macのターミナルで pip install xgboost を実行し、環境を構築。最高スコア時の前処理ロジックはそのままに、学習器だけを差し替えました。

import xgboost as xgb

# 特徴量と前処理は最高スコア時を継承
model = xgb.XGBClassifier(
    n_estimators=100,
    learning_rate=0.05,
    max_depth=6,
    random_state=1,
    use_label_encoder=False,
    eval_metric='logloss'
)

model.fit(X, y)
# 予測結果を sub_xgboost_v1.csv として出力

3. 実行結果:LightGBM の底力

期待を込めて提出した結果、リーダーボードに刻まれた数字は意外なものでした。

 LightGBM (Current Best) : 0.79611
 XGBoost (New Trial)    : 0.79448 (▼ 0.00163)

わずかな差ではありますが、XGBoostは前回の記録に届かず。今回のデータセットにおいては、LightGBMの方が「急所(重要な分岐)」をより的確に捉えていたようです。

4. 考察:なぜ「同じ手法」で差が出たのか?

どちらも「勾配ブースティング」ですが、その違いが結果に現れました。

  • 木の育て方の違い: LightGBMは「誤差が大きい部分をピンポイントで掘り下げる(Leaf-wise)」のに対し、XGBoostは「層ごとにバランスよく育てる(Level-wise)」。今回のデータでは、LightGBMの尖った学習スタイルが有利に働いたと考えられます。
  • アルゴリズムの相性: 特定の数値(支出額など)が重要な意味を持つこのコンペでは、LightGBMの高速で柔軟な分岐がフィットしたのでしょう。

5. 次なる一手:最強の「合体(アンサンブル)」へ

XGBoostが負けたからといって、無駄だったわけではありません。エンジニアには「アンサンブル(平均化)」という必殺技が残されています。 LightGBMの予測とXGBoostの予測。性格の違う2つの知性を組み合わせることで、単体では届かなかった 0.8 の壁を突破できるかもしれません。


失敗はデータの蓄積。次は「二人の知才」を一つに合わせて、大台を狙います。


PR