[STATUS: ONLINE] 当サイトは要約付きのエンジニア向けFeedです。

TechDistill.dev

[DISCLAIMER] 当サイトの要約は正確性を保証しません。気になる記事は必ず原文を確認してください。
cd ..

【要約】競馬AI開発記録 #17 LightGBM rank_xendcg との死闘:勾配爆発を防ぐためのターゲット設計 [Zenn_Python] | Summary by TechDistill

> Source: Zenn_Python
Execute Primary Source

// Problem

開発者が、レース内の相対的な序列を予測するために、LightGBMの目的関数をランキング学習(rank_xendcg)へ変更した際、深刻な数値的不安定性に直面した。ターゲットラベルの設計が不適切であったため、学習が破綻した。
  • RMSEが1.85965e+13という異常な数値を記録。
  • feature_importanceが浮動小数点の限界値に達する。
  • スピアマン相関係数が0.00となり、学習が完全に失敗。
  • 原因は、内部の利得計算式 Gain = 2^{rel} - 1 における指数関数的な爆発である。

// Approach

開発者は、モデルに渡すターゲットラベル(関連度)のスケールを、数学的に安定した範囲に収めるアプローチを採用した。目的関数の特性を考慮したスケーリング設計を行っている。
  • ターゲットの正規化:頭数で除算し、値を 0 < target ≤ 1 の範囲に限定。
  • スケーリング係数の最適化:Optunaを用い、target_alpha を 1.1 〜 1.9 の範囲で探索。
  • モニタリング指標の変更:型エラーを回避するため、metric='ndcg' から metric='rmse' へ切り替え。

// Result

ターゲット設計の刷新により、数値的不安定性が完全に解消され、予測モデルとしての実用性を確保した。これにより、競馬における序列予測の精度が劇的に向上した。
  • RMSEが10兆超から0.3 〜 0.5の正常値へ改善。
  • スピアマン相関係数が0.00から0.4021へと大幅に向上。
  • レース内の全出走馬の序列を高い精度で予測可能となった。

Senior Engineer Insight

> ライブラリのブラックボックス化を避けるべきだ。単に「精度が上がる」という理由で目的関数を選ぶのは危険である。特に指数関数を含む計算式が内部にある場合、ターゲットのスケーリングはチューニングではなく、モデルを動作させるための「前提条件」となる。警告ログ(ConstantInputWarning)を無視せず、数学的背景から原因を特定する姿勢が、大規模な学習パイプラインの安定稼働には不可欠である。

[ RELATED_KERNELS_DETECTED ]

cd ..

> System.About()

TechDistillは、膨大な技術記事から情報の真髄(Kernel)のみを抽出・提示します。