競馬編
競馬データの構造と時間の扱い
レース前に確定している情報と、走った後にしか分からない情報を分ける。JRA-VANデータラボで得られるデータの俯瞰。
この記事の要点
- 1 行を何にするか(粒度)を最初に決めます。馬単位(1 行 = 1 頭)が基本で、レース単位(1 行 = 1 レース)やペア単位という立て方もあります。
- 同じ表の中に、レース前に分かる情報と、走った後にしか分からない情報が並んでいます。ここを分けるのが第一歩です。
- 欠損には意味があります。新馬・初コース・転入馬は「データが無いこと」自体が状況を表します。
どんなデータが手に入るのか
JRA-VANデータラボからは、レースの結果だけでなく、 出馬表・馬や騎手の情報・調教・血統・オッズ・払戻まで、幅広いデータが提供されます。 大まかには次のように分けて考えると整理しやすくなります。
| 種類 | 中身の例 | 使いどころ |
|---|---|---|
| レース条件 | 開催場・距離・芝/ダート・クラス・馬場状態・頭数 | 比較の土台をそろえる |
| 出走馬 | 年齢・性別・斤量・枠順・馬体重 | その日の条件を表す |
| 過去成績 | 前走の着順・着差・上がり・人気 | 実力と調子の推定 |
| 人・厩舎 | 騎手・調教師・馬主 | 継続的な傾向 |
| 血統 | 父・母・母父 | 適性(距離・馬場)の手掛かり |
| オッズ・払戻 | 単勝・複勝オッズ、確定配当 | 市場の評価。扱いに最大の注意が要る |
粒度 ── 1 行を何にするか
学習データを作るとき、最初に決めるのが粒度です。競馬では次の 2 つが基本になります。
| 粒度 | 1 行の中身 | 向いていること |
|---|---|---|
| 馬単位(1 行 = 1 頭) | そのレースに出走した 1 頭のデータ。16 頭立てなら 16 行になる | 各馬の強さを見積もる。もっとも基本的な形 |
| レース単位(1 行 = 1 レース) | 1 つのレースを 1 行にまとめ、出走各馬の情報を横に並べる(横持ち) | レース全体の性質を扱う。展開の予測や、レース単位で結果が決まる WIN5 など |
どちらの粒度でも、行はレース ID で束ねられます。 馬単位なら同じレース ID を持つ行どうしが 1 つのレースを構成し、 レース単位ならその 1 行がレースそのものです。1 レースで勝つのは 1 頭だけという制約も、レース内での相対化も、この結びつきがあるから計算できます。
もう 1 つの立て方:2 頭を組にする(ペア単位)
馬単位・レース単位のほかに、同じレースの 2 頭を 1 行にして「どちらが上か」を学ぶという立て方もあります(ペア単位、pairwise)。 「この馬は強いか」ではなく「A と B ならどちらが先着するか」を直接学習する形で、競馬が本質的に比較の問題であることに素直に対応します。
行数は組み合わせの数だけ増えます(16 頭立てなら 1 レースで 120 組)が、 比較の情報をそのまま教えられるのが利点です。 モデル側の扱いは競馬でのモデルの選び方で触れます。
レース前に分かることと、後で分かること
競馬データでいちばん事故が起きやすいのがここです。 過去のレースのデータには、結果が出たあとで初めて確定した列が同じ行に並んでいます。
| 発走前に手に入る | 買う時点では手に入らない |
|---|---|
| 距離・コース・クラス・枠順・斤量 | 着順・着差・走破タイム |
| 馬体重(発表後)・馬場状態(発表時点) | 上がり 3 ハロン(3F)・通過順位 |
| 発走前オッズ(その時点の値) | 確定オッズ・人気(最終)・払戻金 |
右側の列を特徴量に入れると、モデルは手に入らない情報を見ながら答えを当てることになります。 確定オッズと最終人気は発売締切の時点で確定しますが、買うかどうかを決める時点では分からないので、やはり使えません。 検証成績は劇的に良くなり、実戦ではまったく通用しません。これがデータリークで、競馬での具体的な現れ方は競馬でよく起きる失敗にまとめています。
欠損には意味がある
競馬データの欠損は、多くの場合「記録漏れ」ではなくそういう状況であることを示します。
- 新馬・未出走馬 … 前走が存在しない
- 初芝・初ダート・初距離 … その条件での実績が無い
- 地方・海外からの転入 … 手元のデータでは経歴が途切れている
- 取消・除外 … 出走していない
平均値で埋めて「平均的な実績のある馬」に見せかけるより、「前走なし」というフラグを立てるほうが正確です。 新馬戦かどうかは、それ自体が強い情報になります。
データ量と、時代による変化
JRA では年間およそ 3,400 レースが行われ、 1 レースあたり十数頭が出走します。単純計算で 1 年あたり数万行、 10 年分なら数十万行という規模になり、表形式データとしては十分に大きい部類です。
一方で、古いデータほど今とは条件が違います。 コースの改修、馬場管理の変化、レース体系の変更、 斤量規定の改定などがあれば、当時の傾向は現在に当てはまりません。 これは分布シフトの一例で、「古いデータを足すほど良くなる」とは限らない理由でもあります。学習に使う期間は、実際に検証して決めるのが確実です。