前回の記事では 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用の学習データを作る流れをシンプルにまとめるとこんな感じです。
- 対象レースを絞る
例:芝の中距離レースだけ、など
→RACE_SHOSAI
でフィルタリング - 出走馬情報を結合
→UMAGOTO_RACE_JOHO
をJOINして着順・人気・馬体重などを追加 - オッズ情報を加える
→ 直前オッズか確定オッズかは目的次第 - 特徴量を作る
- 過去5走の成績を集計
- 天候や馬場をワンホット化
- 騎手の勝率や血統情報など
- 学習用と検証用に分割
→ 年度や日付で分けて未来予測に近づける
この一連の加工が、的中率や回収率を上げる肝になります。
JV Dataならではの注意点
- 速報データと確定データ
オッズや払戻は「速報系」と「蓄積系」に分かれているので、取得タイミングを決めておく必要があります。 - コードの扱い
KEIBAJO_CODE
などはそのまま数値扱いせず、マスタ参照やカテゴリ変換を行いましょう。 - データ量の多さ
馬ごとの出走データは数百万件規模。
必要期間を決めて段階的に取り込むのが現実的です。
まとめ
今回は JV Dataの仕様と主要テーブルのポイント をざっと整理しました。
- 競馬AIの肝は「どのテーブルをどう組み合わせるか」
- RACE_SHOSAI と UMAGOTO_RACE_JOHO が中心
- オッズ系・マスタ系は必要に応じて活用
次回は、これらのテーブルを実際にSQLで結合して、学習用のデータセットをつくる具体的な手順を紹介します。
競馬AIに挑戦したい方は、今回の記事を参考にデータの中身をのぞいてみてください。
コメント