【AI競馬】LightGBMに組み込んでいる全予測ファクター(特徴量)を一挙公開!

当ブログ『競馬投資工学ラボ 〜PythonとLightGBMによる期待値戦略〜』では、機械学習を用いて競馬を「ギャンブル」から「期待値投資」へと昇華させるためのアプローチを日々研究しています。

AIの予測精度、とりわけLightGBMのような勾配ブースティングツリーの性能を左右するのは、アルゴリズムそのものよりも「どんなデータを喰わせるか」、つまり**特徴量エンジニアリング(Feature Engineering)**にあります。

30年以上競馬を見てきた経験則と、システムエンジニアとしての視点を融合させ、現在のモデルには多種多様なファクターを組み込んでいます。今回は、実際にAIが予測時に参照している「全予想ファクター」をカテゴリ別にご紹介します。

. 今回レース情報(舞台設定)

まずは「今日、どの舞台で走るのか」というレース自体の環境データです。単純な距離や芝・ダートだけでなく、コースの物理的な形状や馬場状態のグラデーションまで細かく定義しています。

基本情報

  • 場コード(中山・東京など) / 馬番 / 距離 / 頭数
  • 芝ダ障害コード(芝・ダート・障害) / 右左(右回り・左回り)

コース形状

  • 坂(平坦・普通・急坂) / コーナー(急・普通・緩い) / 直線(短い・普通・長い)

レース条件

  • 種別(1勝クラス、2勝クラスなど) / 条件(牝馬限定など) / グレード(G3/G2/G1)
  • 重量(別定・ハンデなど)

馬場状態・バイアス(超重要)

  • 予想馬場状態コード(良・重など)
  • 予想馬場差(平均的な馬場に足してどれくらい時計が早いor遅いか)
  • トラックバイアス詳細(予想馬場状態 内・中・外)
  • 直線バイアス(予想直線馬場差 最内・内)

レース展開予想

  • 逃げ・先行馬頭数(ペース予測のキー)

💡開発メモ 特にただ中山・東京という競馬場単位の区別でなく、競馬場・コース単位に坂・コーナー・直線を区分けしています。坂に強いかどうかを判断するためには阪神と中山は同じに扱いたいといった理由です。

2. 出走馬情報(固有データと適性プロファイル)

次に、出走する各馬のプロフィールと、今回の舞台に対する適性データです。実績だけでなく、前走からの「変化」や「指数トレンド」に注目しています。

基本プロファイル

  • 性別コード(牡・牝・騸) / 負担重量
  • 血統(父・母父)
  • 脚質(逃げ・先行など) / ブリンカー(初B・継続Bなど)

状態・陣営の勝負気配

  • 上昇度(調教評価) / ローテーション / 輸送区分
  • 休養理由分類コード(休養明けの場合の休養理由)
  • 乗り替わりフラグ

過去実績からの適性マッチング(出走数&3着内数)

  • 過去キャリア全般
  • 過去芝・ダ・障害コード別(今回と同じ条件)
  • 過去右左別 / 過去坂別 / 過去コーナー別 / 過去直線別 / 過去同距離圏別 (今回と同じ条件)

前走からの変化(ショック療法)

  • 昇級フラグ / 降級フラグ
  • 初ダート・初芝フラグ / 初距離フラグ
  • 距離短縮フラグ / 距離延長フラグ / 斤量変化

指数トレンド(IDM)

  • IDM 1〜5走平均 / IDM 1〜2走平均
  • IDM 直近2走平均 − 直近5走平均(近走の上昇・下降トレンドをキャッチ)

3. 過去成績情報(ディープなレース内容:1走前~5走前)

最も情報量が多く、AIの「眼」となるのがこのセクションです。各馬の過去5走分のデータを横持ちで展開し、単なる着順ではなく「どういう中身のレースをしてきたか」を丸裸にします。

  • 過去走の基本環境
    • 過去成績_場コード / 馬番 / 頭数 / 距離 / 芝ダ障害コード / 右左 / 坂 / コーナー / 直線
    • 馬場状態 / 馬場差
    • 種別 / 条件 / グレード / 重量
  • パフォーマンス指標
    • 走破時計 / IDM(指数) / 素点(指数)
    • 前半600mタイム/1000mタイム
    • 上がり偏差値(そのレース内で上がり3Fがどれだけ傑出していたかの偏差値)
  • レース展開とポジション
    • コース取り / 4角コース取り(内・中・外など)
    • レースペース(H/M/Sなど) / レースペース流れ
    • 前3Fタイム / 後3Fタイム / レース後3F
    • 前3F先頭差(3F通過時点の先頭との差) / 後3F先頭差(残り3F時点の先頭との差)
  • 特殊フラグ
    • 加速ラップ(馬自身がそのレースで加速ラップを踏んだか)
  • 【独自指標】レースレベル(隠れた実力馬の炙り出し)
    • レースレベル_次走頭数(同レース出走馬の次走出走頭数)
    • レースレベル_平均スコア / 合計スコア / 補正スコア(同レース出走馬の次走成績をスコア化)
    • 過去成績_ハイレベルフラグ1(そのレース自体がハイレベルだったか)

💡開発メモ 特に強力なのが、一番下の**「レースレベル」**関連の特徴量です。負けたレースであっても、「一緒に走った馬たちが次走で軒並み好走している=実はハイレベルな一戦だった」という事実を数値化してAIに教え込んでいます。これが、オッズの歪み(過小評価されている穴馬)を見抜く最大の武器になっています。

まとめ:データが「期待値の隙間」を見つける

これら膨大なファクターをLightGBMに投入し、単なる勝率(二値分類)ではなく、レース内での相対的な強さを学習させることで、人間の競馬ファンが見落としがちな「期待値の高い馬」をスナイプしています。

どの特徴量が実際にモデルの精度(Gain)に貢献しているのか、重要度の分析(Feature Importance)についても、今後の記事で詳しく解説していく予定です。

そして日々気が付いた点を特徴に追加・削除しては試すを繰り返しているので現時点ではこの内容 っということです。

クリックしていただけると記事を書くモチベーションになります!