競馬AI / 分析コラム

Pythonで競馬AIを作ってみた|過去5年データから勝率予測モデル構築

はじめに 競馬予想の精度向上を目指し、機械学習を活用した予測モデルを開発しました。今回は過去5年分のJRAデータ(約15,000レース)を使用し、勝率予測AIの構築過程をレポートします。

使用データ・ツール

  • データソース:JRA公式データ + netkeiba.com
  • 期間:2019年〜2023年(5年間)
  • 使用言語:Python
  • ライブラリ:pandas, scikit-learn, matplotlib

特徴量設計 勝率に影響する要素として、以下の特徴量を設計:

  1. 基本情報:馬齢、性別、斤量、騎手、調教師
  2. 実績データ:過去走成績、賞金、レーティング
  3. レース条件:距離、コース、馬場状態、天候
  4. 相対評価:人気、オッズ、上がり3Fタイム順位

モデル比較結果

アルゴリズム精度適合率再現率ランダムフォレスト0.7420.6810.623XGBoost0.7580.6950.641ロジスティック回帰0.7210.6520.598

結果分析 XGBoostが最も高い精度(75.8%)を記録。重要特徴量は以下の通り:

  1. 前走着順(重要度:0.23)
  2. 騎手勝率(重要度:0.19)
  3. 過去同条件成績(重要度:0.16)
  4. 上がり3Fタイム(重要度:0.14)
  5. オッズ(重要度:0.12)

実運用での課題と改善点

  • オッズ変動への対応
  • 新馬・転厩馬データの不足
  • 騎手・調教師の最新動向反映

次回は複勝率予測モデルの開発レポートをお届けします。

コードサンプル(一部)

python

# 特徴量重要度の可視化
import matplotlib.pyplot as plt
plt.figure(figsize=(10, 6))
plt.barh(feature_names, model.feature_importances_)
plt.title('競馬AI 特徴量重要度')
plt.xlabel('重要度')
plt.show()

-競馬AI / 分析コラム