【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