データサイエンティストのための競馬入門(自分のノート)
Summary
近年、競馬は単なるギャンブルではなく、データ分析を生かし、収益を狙うものとしてでも注目されています。 中央競馬(JRA)はレースや馬、騎手、血統などあらゆる情報がデジタル化されており、 データサイエンティストにとっては機械学習や統計モデルの実践フィールドとして非常に魅力的です。
本記事では、競馬の基本的な仕組みと、データ分析に必要な視点からの基礎知識を纏めて見ました。
初歩的な競馬用語
券の種類
賭け方の形式。代表的なものは:
投票法(馬券の種類) | 説明 |
---|---|
単勝 | 1着になる馬を当てる |
複勝 | 3着以内に入る馬を当てる |
馬連/馬単 | 1着と2着の組み合わせを当てる(馬連は順不同、馬単は順番指定) |
ワイド | 選んだ2頭がどちらも3着以内に入ることを当てる |
3連複/3連単 | 1着から3着までの全ての馬を当てる(3連複は順不同、3連単は順番指定) |
分析ポイント
的中率とリターンのバランスを考え、モデルに応じた賭け方を戦略的に選ぶ。 発売開始時の出走予定馬の頭数によって、発売しない種類もあるので注意が必要。
参考:
* 馬券の種類: https://www.jra.go.jp/kouza/beginner/baken/
* 馬券のルール: https://www.jra.go.jp/kouza/baken/
レースクラス(条件)
競走馬の年齢と収得賞金の額に応じて分類されたレースの「レベル」。
クラス名 | 説明 |
---|---|
新馬戦 | 初出走の馬限定 |
未勝利戦 | まだ1勝もしていない馬向け |
1勝クラス〜3勝クラス | 収得賞金で昇格していく |
オープンクラス(OP) | 勝ち抜いた馬が出走する最上位 |
分析ポイント
クラスが上がるとレベルも上がるので、単純な着順ではなく「クラス変動」も考慮しよう。
馬場(ばば)状態
レース当日のコースのコンディション。
芝(しば)とダートの2種類がある
状態は「良」「稍重(ややおも)」「重」「不良」の4段階
分析ポイント
馬場状態が変わると得意不得意が出る。過去の成績を馬場別に分けて扱うと精度UP。
脚質(きゃくしつ)
馬の走り方のスタイル。
脚質 | 説明 |
---|---|
逃げ | スタート直後に先頭に立つ |
先行 | 前方の好位置をキープ |
差し | 中団から最後に伸びる |
追込 | 後方から一気に追い込む |
分析ポイント
脚質はペースや頭数、枠順と相性がある。騎手との組み合わせも重要。
枠順(わくじゅん)
レースでの馬のスタート位置(外枠・内枠など)。
通常は1枠〜8枠、最大18頭まで出走
内枠有利/外枠有利はコースによって異なる
分析ポイント
コース別の枠順成績を集計し、バイアス補正に使えるかも。
斤量(きんりょう)
馬が背負う重さ(騎手+鞍+ハンデ重量など)。
通常は牡馬56kg、牝馬54kg
ハンデ戦では強い馬に重い斤量が課される
分析ポイント
斤量が増えるとパフォーマンスに影響する傾向あり。過去との比較が重要。
血統(けっとう)
馬の父・母・祖父などの系譜。スピード型、スタミナ型、芝・ダート適性などの傾向が見られる。
分析のヒント
未勝利や過去データの少ないレースに役立つでしょう。
競走除外、出走取消、競走中止の違い
区分 | いつ起こる? | 馬券の扱い |
---|---|---|
出走取消 | 出馬投票後~装鞍所に入る前 | 該当馬券は全額返還(枠連は同枠例外あり) |
競走除外 | 装鞍所に入った後~発走前 | 同上 |
競走中止 | 発走後 | 返還なし(不的中) |
分析のヒント
出走取消、競走除外、競走中止を考慮したデータクリーニングが必要でしょう。
オッズ
オッズは馬券的中時の概算払戻率。発売締切後に最終オッズが公表されるが、 その後に競走除外や同着の発生などによって、最終オッズと異なる率による払戻金となる場合がある。
分析のヒント
最終オッズは、購入時点では確定していない情報であるため、分析の際に注意が必要。 また、収益計算に最終オッズを用いると、実際の払戻金と差異が生じる可能性がある。
データソースと取得方法
JRA公式サイト
- 特徴:JRAが提供する公式レース情報。
- 取得可能データ:
- 出馬表(前日〜当日)
- レース結果(着順・タイム・騎手など)
- 払戻金(オッズ)
- レース映像(参考用)
- 取得方法:スクレイピング可能だが、アクセス規約に注意が必要
注意
大量スクレイピングは利用規約に抵触する可能性あり。公式APIはなし。
JRA-VAN DataLab
https://jra-van.jp
有料ですが、質がいいのでこれがおすすめ。
- 提供形式:専用SDK(Windows用)またはSQLダウンロードサービス
- 主な内容:
- レース・馬・騎手・調教師・血統の詳細情報
- 蓄積された過去データ(1990年代以降も可)
- 馬毎の過去成績(着順、タイム、馬場、騎手、脚質など)
- 速報データ
使用方法(データサイエンティスト向け)
- DataLab SDKをインストール(Windows)
- CSVをダウンロードし読み込む(Targetなど)
- PostgreSQLなどにデータをインポートしてSQL分析が可能(PC-Keibaなど)
利点:正確かつ網羅的。過去データを時系列で扱えるため、機械学習にも最適。
netkeiba.com
- 特徴:国内最大級の競馬情報ポータル
- 取得できる情報:
- 馬・騎手・レースの情報(プロフィール、成績)
- ニュース・調教・掲示板・予想コメントなど
- 有志による「指数」や「印」など主観的な評価も
注意点
- スクレイピングは自己責任: PythonではBeautifulSoup + requestsで取得する人もいるが、利用規約を守ること。
- 情報の整合性は基本的に高いが、構造化データではないため加工が必要
- 有料コンテンツもある
競馬におけるデータ分析の着眼点
競馬は「不確実性 × 多変量 × 時系列」が複雑に絡み合うデータ構造を持つため、 データサイエンティストにとって非常に豊かな分析対象です。
馬のパフォーマンスを定量化する
着順やタイムの正規化
- 着順はあくまで「相対順位」のため、出走頭数やクラスによって解釈が変わる。
- タイムや上がり3F(最後の600m)のラップは馬場補正・展開補正を加えることで実力を推定可能。
指数や能力スコア
- 自作で「スピード指数」や「パフォーマンススコア」を構築することで、汎用的なモデルが組める。
- 例:過去5走の平均タイム(馬場補正済)+クラス補正など
人気・オッズと成績の乖離を探る
オッズは「市場の予測」
- 単勝・複勝オッズは投資者集合の予測。
- 実際の着順との乖離を検証することで、過小評価・過大評価の馬を発見できる。
期待値(Expected Value)計算
期待値 = モデル予測確率 × オッズ
- 高期待値馬を抽出してベッティング戦略に応用可能
環境要因との相性を探る
馬場状態・距離・天候
- 馬場:良・稍重・重・不良の影響を受ける馬が明確に分かれる
- 距離適性:短距離型、マイラー、中距離型、長距離型の分類
- 天候:湿った馬場と気温はパフォーマンスに影響
コース・競馬場ごとの特性
- 例:「逃げ馬有利」などコース別バイアス
- 枠順との組み合わせも重要(内枠有利 or 外枠有利)
騎手・調教師の影響
騎手の傾向分析
- 得意な脚質(逃げ・差し)や競馬場を定量化
- 「騎手×馬」のコンビ成績で相性評価
調教師の影響
- 調教スタイルによる仕上がり方の差
脚質・展開の分析
脚質分類
- レース中のポジション取り(逃げ・先行・差し・追込)
- 展開(ペース)との相性を見る:スローペース vs ハイペース
ペース予測と展開シミュレーション
- 出走馬の脚質構成からペースを予測
- どのタイプが展開に乗りやすいかを数値化
時系列・直近傾向の把握
ローテーション分析
- 直近レースからの間隔(日数)、距離変化、場所変化
- クラス変化で勝敗が変わる。
調子の波・近走傾向
- 近5走の順位・タイム・上がりをトレンド化
- 成績の浮き沈みやバイアス
血統と適性の分析
芝・ダート、距離など適性の傾向
- 父系・母系から適性距離・馬場がある程度見える
- 特に2歳・3歳戦では血統から仮説を立てやすい
ベッティング戦略との統合
モデル予測との組み合わせ
- 単に的中させるだけでなく、「どう買えば儲かるか」という観点で予測を活かす
- 予測確率 × 実際の配当から期待値戦略を設計
ポートフォリオ構築
- 単勝/複勝/3連複などのバランス
- 死票買わない戦法?
- 分散投資的なアプローチで安定性を向上?
モデル
回帰モデル:タイム・着順の予測
-
モデル例:
- 線形回帰(Linear Regression)
- ランダムフォレスト回帰(Random Forest Regressor)
- LightGBM Regressor
- ニューラルネット
-
着順をスコア化し、順位を数値で評価する
要注意
タイム予想の精度は高いものの、着差がわずかであるため、着順の予測には繋がりが薄いかな。
分類モデル:複勝圏内の確率予測
-
モデル:
- ロジスティック回帰
- LightGBM / XGBoost(分類設定)
- ニューラルネット
-
この馬は3着以内に入る確率は高いか?を予測する
- オッズとの乖離を活かしたベッティング戦略構築
要注意
同レースの他の馬との実力差を考慮するようにモデル構築しないと
ランキングモデル:順位予測・ベスト3の抽出
-
モデル
- LambdaRank
-
各レース内で「相対的な強さ」を予測して、順位を決定
- ベスト3(馬券対象)を効率よく選出
Tip
四位以上の馬の予測精度は気にする必要ない
回収率最大化を目的とした最適化モデル
-
モデル:
- 確率予測 + オッズによる期待値計算 → ベット額最適化
- ポートフォリオ理論を応用したリスク調整ベッティング
- reinforcement learning
-
「的中率」ではなく「投資効率(回収率)」を重視するモデル
- 低人気の高期待値馬を選定し、高配当を狙う
Warning
的中率が低い場合運がどうかをHypothesis testで検証すべき また、収益だけでなく、drawdownも同時に考えるべき。
アンサンブル戦略:複数モデルの組み合わせ
- モデル:
- 回帰+分類+ランキングのハイブリッド
- 競走条件によるmetaモデルでのサブモデル選出
競馬にありがちな落とし穴(データ分析視点)
競馬はデータが豊富な分、正しく扱わないと誤解や誤学習に陥るリスクが高い領域です。ここでは、データ分析の観点からよくある「落とし穴」や注意点を紹介します。
Look Ahead bias
問題
学習データに、予測時には使えない未来情報(例:レース結果、払戻金、オッズなど)を含めてしまう。 - 「単勝オッズ」「着順」「払戻金」などを特徴量に使ってしまう - モデルが未来を知っている状態になり、異常に高い精度になる
結果バイアス
問題
「勝った馬は強かった」「人気馬が飛んだのは不可解」など、結果を基に理由を後付けしてしまう。 - 着順だけをモデルに学習させる → 不安定な学習になる - 展開や馬場、枠順などの文脈を無視した特徴量設計
サンプルの偏り
問題
重賞レースやGⅠだけを対象にするなど、偏ったサンプルだけで学習・評価してしまう。 - 強い馬ばかりのレース → 分類モデルが「全部当てる」のが簡単 - ダートより芝の方がデータ量が多い → 適性の差が歪む
高人気馬ばかりを的中とする評価
問題
的中率だけでモデルを評価すると、人気馬ばかり選ぶだけのモデルが高スコアになる。 - 1番人気の複勝率は60〜70%近く → 「全部1番人気で当てた」モデルが高精度 - 実際にはオッズの割に期待値がマイナスであることも多い
データの非独立性の無視
問題
競馬では同じレース内の馬同士が依存関係にある(順位は相対的)にも関わらず、独立データとして扱ってしまう。 - レース全体で1着〜18着を順位回帰で学習 → 相対順位を無視したラベル - 各馬をバラバラに処理 → 同じレースに出走した他馬の影響が加味されない
テストデータが未来に偏っている
問題
ランダムにトレイン/テストを分けると、未来のレースが学習に含まれ、本番での精度と乖離が生じる。 - 同年の後半レースを先に学習 → 初期レースで評価すると過学習になる