競馬AI開発メモ:馬場適性を特徴量化すると予測精度は上がるのか?

競馬AI開発

はじめに

今回は馬の「馬場適性」を過去走情報から数値化し、LightGBMの1着予測精度への貢献を検証しました。

「重馬場が得意な馬」「良馬場でしか走らない馬」といった直感的な情報が、実際にモデルの予測精度改善に効くのかをデータで確認します。

今回確認すること

  • 過去走の馬場状態情報から馬場適性を数値化できるか
  • 馬場適性特徴量を追加するとLightGBMの1着予測AUCが改善するか
  • どの馬場適性特徴量が最も効果的か
  • 馬場変化の有無で予測精度に差があるか
  • 人気ありモデルでも馬場適性特徴量の効果が残るか(人気に既に織り込まれていないか)

馬場適性とは何か

競馬では「馬場適性」という概念があります。良馬場が得意な馬は重馬場では成績が落ちやすく、道悪を得意とする馬は良馬場では力を発揮しきれないと言われます。

今回は「過去走の馬場状態と成績から、今走の馬場適性スコアを作れないか」を検証しました。使用するのは今走の着順・タイム・上がり・着差などの結果情報ではなく、今走前までの過去走履歴のみです。

使用データ

  • テーブルresult_table
  • 学習期間: 2017-01-01 ~ 2022-12-31 (787,381 件、1着率 0.1000)
  • 検証期間: 2023-01-01 ~ 2023-12-31 (136,354 件、1着率 0.0999)
  • 評価期間: 2024-01-01 ~ 2024-12-31 (138,372 件、1着率 0.0989)
  • 目的変数: 1着予測(1着)、3着内予測(3着内
  • 除外: 帯広(ばんえい)を除外(124,418 件)

馬場状態の定義

DB上の馬場状態とその順序値(going_code)の定義は以下の通りです。

馬場状態going_code分類レース数割合
0dry(良馬場)502,92247.4%
稍重1wet(道悪)214,79720.2%
2wet(道悪)189,26417.8%
不良3wet(道悪)155,12414.6%

この順序値は簡易的な定義です。競馬場や時期によって馬場の実際の状態は異なるため、数値が大きい=確実に悪い、とは限りません。

作成した馬場適性特徴量

馬場適性を以下の9種類に分けて特徴量化し、それぞれ単独でbaselineに追加して比較しました。

A: baseline

馬場適性なしのベース特徴量のみ(比較の基準)

B: 同馬場成績

今回と同じ馬場状態の過去走における成績(出走数・1着率・3着内率・平均着順・最良着順)

C: 道悪適性

道悪(稍重・重・不良)での過去成績と初道悪フラグ

D: 良vs道悪差

良馬場と道悪の成績差(3着内率差・平均着順差)

E: 馬場変化

前走から今回への馬場状態変化(悪化・回復・同一フラグ)

F: 競馬場×馬場

競馬場×馬場状態の組み合わせでの過去成績

G: 距離帯×馬場

距離帯×馬場状態の組み合わせでの過去成績

H: 直近馬場経験

直近3走・5走における同馬場・道悪経験数

I: 好走馬場差

過去好走時の馬場コード平均と今回馬場コードとの差

ALL: 全馬場適性特徴量

B〜Iのすべての特徴量を同時に追加した組み合わせです。

各特徴量の詳しい定義・入力列・リーク対策は feature_definitions.md に整理しています。

比較方法

  • モデル: LightGBM(二値分類、objective=binary
  • 分割: 時系列分割(ランダム分割は使用しない)
  • 評価指標: AUC / logloss / Brier score
  • 過去走特徴量は必ず shift(1) 後に集計して今走情報のリークを防止
  • 人気なしモデルと人気ありモデルの2系統で比較(人気情報に織り込まれた効果と分離するため)
  • 各特徴量セットを A_baseline に単独追加し、AUC差分で効果を測定

結果

人気なしモデル:1着予測

人気情報を除外したモデルで、馬場適性特徴量そのものの効果を確認します。

特徴量セットAUCbaseline差分loglossBrier
A: baseline0.73410.28960.0823
B: 同馬場成績0.7437+0.00960.28670.0817
C: 道悪適性0.7455+0.01140.28590.0815
D: 良vs道悪差0.7445+0.01040.28620.0816
E: 馬場変化0.7354+0.00130.28930.0823
F: 競馬場×馬場0.7466+0.01250.28600.0816
G: 距離帯×馬場0.7430+0.00890.28690.0817
H: 直近馬場経験0.7364+0.00230.28890.0821
I: 好走馬場差0.7356+0.00150.28920.0822
ALL: 全馬場適性特徴量0.7529+0.01880.28370.0811

最良は ALL: 全馬場適性特徴量(AUC 0.7529、baseline比 +0.0188)でした。

人気ありモデル:1着予測

人気情報を含めたモデルで、市場人気に既に織り込まれた効果を差し引いた後の追加改善を確認します。

特徴量セットAUCbaseline差分loglossBrier
A: baseline0.84600.24380.0714
B: 同馬場成績0.8463+0.00030.24360.0714
C: 道悪適性0.8465+0.00050.24340.0713
D: 良vs道悪差0.8463+0.00030.24360.0714
E: 馬場変化0.8457-0.00030.24390.0715
F: 競馬場×馬場0.8462+0.00020.24360.0714
G: 距離帯×馬場0.8463+0.00030.24370.0714
H: 直近馬場経験0.8458-0.00020.24390.0714
I: 好走馬場差0.8460+0.00000.24380.0714
ALL: 全馬場適性特徴量0.8466+0.00060.24330.0713

最良は ALL: 全馬場適性特徴量(AUC 0.8466、baseline比 +0.0006)でした。

補助検証:3着内予測

1着予測だけでなく、3着内予測でも同じ傾向が出るかを確認します(人気なしモデル)。

特徴量セットAUCbaseline差分loglossBrier
A: baseline0.71990.54200.1819
B: 同馬場成績0.7256+0.00570.53830.1804
C: 道悪適性0.7270+0.00710.53730.1800
D: 良vs道悪差0.7276+0.00770.53690.1799
E: 馬場変化0.7201+0.00020.54190.1818
F: 競馬場×馬場0.7271+0.00720.53740.1802
G: 距離帯×馬場0.7255+0.00560.53830.1805
H: 直近馬場経験0.7212+0.00130.54120.1815
I: 好走馬場差0.7209+0.00100.54130.1816
ALL: 全馬場適性特徴量0.7332+0.01330.53330.1786

3着内予測での最良は ALL: 全馬場適性特徴量(AUC 0.7332、baseline比 +0.0133)でした。

特徴量重要度

ALL_going_features(人気なし・1着予測)モデルの LightGBM feature importance(gain)上位10件です。

順位特徴量importance (gain)全体比
1past3_avg_rank218,09236.1%
2past3_top3_rate109,62618.2%
3馬体重30,3945.0%
4同走馬の数27,9544.6%
5same_place_same_going_avg_rank25,3774.2%
6wet_runs22,1673.7%
7wet_win_rate19,0373.2%
8wet_avg_rank16,8772.8%
9距離15,8072.6%
10dry_avg_rank15,6122.6%

条件別分析

ALL_going_features(人気なし・1着予測)モデルの評価期間予測を、条件別にAUCで比較しました。

条件サンプル数AUClogloss
馬場状態_良68,3800.75370.2847
馬場状態_稍重28,9030.75700.2808
馬場状態_重22,6450.74350.2860
馬場状態_不良18,4440.75500.2819
良馬場68,3800.75370.2847
道悪69,9920.75210.2828
同馬場経験あり120,0490.75180.2662
同馬場経験なし18,3230.70940.3983
道悪経験あり127,3770.75250.2716
道悪経験なし10,9950.68770.4246
馬場悪化41,1830.75140.2766
馬場回復42,6600.75420.2788
前走と同じ馬場49,2270.75830.2755
競馬場×馬場経験あり104,3630.75640.2572
競馬場×馬場経験なし34,0090.71580.3650

条件別AUCは、条件ごとの難易度差が含まれるため、数値の大小だけで馬場適性特徴量の効果を断定することはできません。サンプル数が少ない条件(重・不良)では特に注意が必要です。

考察

馬場適性特徴量は効いたか

人気なしモデルでは最良で AUC +0.0188 の改善が見られました。馬場適性特徴量には一定の予測貢献があると考えられます。

人気ありモデルとの差

人気ありモデルでの追加改善は AUC +0.0006 と小さく、馬場適性の多くは既に市場人気に織り込まれている可能性があります。

人気なしモデルの改善幅(+0.0188)と比較すると、人気情報の追加によって馬場適性の追加効果は縮小したと言えます。

どの馬場適性特徴量が効いたか

人気なしモデルで最も効いたのは ALL: 全馬場適性特徴量 でした。

条件別に見て効きやすかったところ

評価期間の条件別AUCでは 前走と同じ馬場(AUC 0.7583)が最も高く、道悪経験なし(AUC 0.6877)が最も低い結果でした。

条件によってモデルの予測しやすさに差があり、馬場変化や未経験馬場では予測が難しくなる可能性があります。

まとめ

馬場適性特徴量を9種類作成し、LightGBMベースラインへの追加効果を検証しました。人気なしモデルでは最良で AUC 0.7341 → 0.7529(+0.0188)の改善が得られました。

馬場適性の効果は特徴量の種類・条件によって差がありました。今回のデータの範囲では、D: 良vs道悪差が最も有望な追加特徴量でした。

タイトルとURLをコピーしました