【競馬AI-3】データ構造を理解する

競馬AI

前回の記事では mykeibadb を使って、JV DataをMySQLに取り込みました。
ここまでくると「どのテーブルをどう使えば競馬AIを作れるのか?」が次のテーマになります。

今回は、JV Dataの構造や学習に役立つテーブル・カラムを、実際に使っている視点から整理してみます。
これを押さえておくと、データ分析やモデルづくりの効率がぐっと上がります。

まずはJV Dataって何者?

JV Data(JRA-VAN Data Lab.)は、中央競馬のレースや馬の情報をぎっしり詰めこんだデータセットです。
レース日や出走馬、オッズ、払戻金…ありとあらゆる情報が詰まっていて、まさにAI開発の宝庫。

ただしそのままでは扱えません。
JV-Link という仕組みでデータを取得し、テーブルに落とし込んでから初めて使える形になります。

ここがちょっとしたハードルですが、一度MySQLに入れてしまえば自由自在。
過去レースの傾向分析や、機械学習用データづくりのベースとして活用できます。

JV-Data仕様書をダウンロードし、仕様書とデータベースを比較して見ていくと理解が深まっていきます。

mykeibadbで作られるテーブルの全体像

mykeibadbを動かすと、70以上のテーブルが自動で作成されます。
初めて見たときは圧倒されますが、AIで主役になるのは一部。

大きく分けると次の3グループです。

  • レース関連:開催日やコース、天候、馬場状態など
  • 出走馬関連:馬体重、騎手、着順、オッズなど
  • マスタ系:競馬場コードや着差コードなど、意味づけに必要な辞書データ

学習用に頻繁に触るのは、出走馬とレース情報が中心。
マスタ系は、コードを分かりやすい形に直すときに欠かせません。

学習に使える主要テーブルとカラム

ここでは、実際にAIの学習データをつくるときによく使うテーブルをまとめます。

1. RACE_SHOSAI(レース詳細)

レースの基本情報が詰まっています。

  • 開催日 KAISAI_GAPPI
  • 競馬場コード KEIBAJO_CODE
  • 距離 KYORI
  • 芝/ダートや馬場状態 TENKO_CODE, BAJO_CODE

モデルにコースや天候の影響を学ばせるなら、まずこのテーブル。


2. UMAGOTO_RACE_JOHO(馬ごとの出走情報)

一頭ごとの成績や状態をまとめた中心テーブル。

  • 馬番 UMABAN
  • 騎手コード KISHU_CODE
  • 馬体重 BATAIJU
  • 着順 CHAKU
  • 人気 NINKI
  • 単勝オッズ ODDS

レース結果を予測するならここを外す理由はありません。


3. ODDS系・PAYOFF系

オッズや払戻金を扱うテーブル群。
単勝、複勝、馬連などが細かく分かれています。

  • 単勝オッズ
  • 複勝オッズ
  • 払戻金

「レース直前のオッズで学習」「確定オッズだけを使う」など目的に応じて選びます。


4. マスタ系(コード辞書)

競馬場や着差などのコードを日本語に変換するためのテーブルです。
モデル入力ではワンホット化やカテゴリ変数にするのがおすすめ。

どう組み合わせて学習データを作るか

実際にAI用の学習データを作る流れをシンプルにまとめるとこんな感じです。

  1. 対象レースを絞る
    例:芝の中距離レースだけ、など
    RACE_SHOSAI でフィルタリング
  2. 出走馬情報を結合
    UMAGOTO_RACE_JOHO をJOINして着順・人気・馬体重などを追加
  3. オッズ情報を加える
    → 直前オッズか確定オッズかは目的次第
  4. 特徴量を作る
    • 過去5走の成績を集計
    • 天候や馬場をワンホット化
    • 騎手の勝率や血統情報など
  5. 学習用と検証用に分割
    → 年度や日付で分けて未来予測に近づける

この一連の加工が、的中率や回収率を上げる肝になります。

JV Dataならではの注意点

  • 速報データと確定データ
    オッズや払戻は「速報系」と「蓄積系」に分かれているので、取得タイミングを決めておく必要があります。
  • コードの扱い
    KEIBAJO_CODE などはそのまま数値扱いせず、マスタ参照やカテゴリ変換を行いましょう。
  • データ量の多さ
    馬ごとの出走データは数百万件規模。
    必要期間を決めて段階的に取り込むのが現実的です。

まとめ

今回は JV Dataの仕様と主要テーブルのポイント をざっと整理しました。

  • 競馬AIの肝は「どのテーブルをどう組み合わせるか」
  • RACE_SHOSAI と UMAGOTO_RACE_JOHO が中心
  • オッズ系・マスタ系は必要に応じて活用

次回は、これらのテーブルを実際にSQLで結合して、学習用のデータセットをつくる具体的な手順を紹介します。
競馬AIに挑戦したい方は、今回の記事を参考にデータの中身をのぞいてみてください。

コメント