競馬AI:血統✖️ベイズ推定で予想確率を向上!

データサイエンス

競馬の過去データは、豊富でしかも簡単に入手することができます。このため、競馬と統計学は、実は非常に相性が良いのです。中でも注目したいのが「ベイズ統計」という考え方です。

これは、「最初に持っている予想(=事前確率)」を「新しい情報(=血統や馬場、調教など)」によってどんどん更新していくというアプローチ。人間の直感や思い込みに左右されず、データに基づいて“柔軟に考えを変える”ための武器と言えます。

この記事では、ベイズ統計の基本的な考え方をかんたんに紹介しながら、血統データを活用して競馬予想をアップデートする方法を具体例とともに解説していきます。

「運に頼る予想」から「情報を武器にした予想」へ。
あなたの競馬が、少しだけ論理的で、そしてもっと楽しくなるかもしれません。

1. はじめに:競馬と統計は相性がいい?

競馬と聞くと、「運」や「勘」がものを言う世界だと思っていませんか?
たしかに、競馬には予測不能なドラマがあります。でも、だからこそ“数字”で少しでも予測の精度を上げたくなる——それが競馬ファンの性(さが)ではないでしょうか。

実は、競馬と統計学は非常に相性が良いのです。なぜなら、競馬は過去のデータが豊富に蓄積されたスポーツであり、「確率」と「傾向」で動いている世界でもあるからです。騎手の成績、馬場状態、距離、枠順、そして血統。これらはすべて、数字で表すことができます。

とはいえ、「データが多すぎて、どう活用していいかわからない…」という方も多いはず。そこで登場するのが、ベイズ統計という考え方です。
ベイズ統計は、最初にある程度の予測(=仮説)を立てておき、そこに新しい情報を加えることで、予測をどんどん“アップデート”していく方法です。

このページでは、ベイズ統計の基礎から、実際に競馬予想に応用する方法までを、紹介していきます。とくに注目したいのが、「血統データ」。これが、意外にもベイズ統計との相性抜群なんです。

「競馬=確率のゲーム」と捉え直して、あなたの予想スタイルを一歩進化させてみませんか?

2. ベイズ統計の超かんたん解説

「ベイズ統計」と聞くと、なんだか小難しい数式や理論を思い浮かべるかもしれません。
でも本質はとてもシンプルで、実は私たちは日常のあらゆる場面で自然に使っている考え方なんです。

たとえば、次のような場面を想像してみてください。


例:傘を持っていくかどうかの判断

朝、天気予報が「降水確率30%」と伝えています。でも空はどんよりと曇り空。
あなたは「うーん…30%だけど、この空模様なら降りそう」と感じて、傘を持っていくことにします。

これは、「天気予報(事前の情報)」に、「空模様という追加情報(観察データ)」を加えて、自分の判断(予測)をアップデートした例です。
これこそが、ベイズの考え方なのです。


ベイズの定理とは?

ベイズの定理とは以下のように、表されます:

$$
\begin{align}
P(A|B) &= \frac{P(B|A) \cdot P(A)}{P(B)}​
\end{align}
$$

各項の意味は以下のとおりです:

  • P(A|B):Bという情報が得られたあとでの、Aが起こる確率(事後確率)
  • P(B|A):Aが起きているときにBが起こる確率(尤度)
  • P(A):Bを知る前の、Aが起こるもともとの確率(事前確率)
  • P(B):Bが起こる全体の確率(正規化定数)

事前分布に対して、データを取得したことを尤度という形で評価して、それを踏まえて予想を更新していきます。

3. 競馬にベイズ統計をどう使うのか?

たとえば、以下のようなシナリオを考えてみましょう:

  • 馬Aは、長距離での実績がない
  • その父馬は長距離でそこそこ活躍した馬である
  • 次の長距離のレース、父馬の「そこそこ」の活躍を、どう予想に反映する?

血統から考えて、実績がなくても好走を期待できるような情報があれば、「事前にはあまり注目されていなかった馬A」に注目する理由が出てきます。
ベイズ統計的には、このような「血統 × 距離」の組み合わせが“尤度”として機能し、事後確率を更新することができるわけです。

次項では、血統データをどう使って確率を更新するのか、具体的な例を挙げて説明します。

4. 血統データを使って確率を更新する

血統データがない場合

まず、血統のデータがまだ何もない状態を考えます。
単純に全レース数の勝ち、負けのデータのみがわかっている状態です(下の図の面積がデータの数を表していると考えてください)。

このデータから、ある馬の勝率を予測する場合、
$$
P = \frac{W}{W + L}
$$
がひとつの予測となります。

血統データがある場合

ベイズの定理を使わない場合

次に血統データを入手した場合を考えます。
血統別にデータを整理すると以下のような状況であったとします。

このデータから、血統H1のときの勝率を予測してみます。
H1のところだけをみれば、すぐさま、下のような式が導けます。

$$
P(W | H_1) = \frac{W_1}{W_1 + L_1}
$$

ベイズの定理を使う場合

しかし、ベイズの定理を使って考え方を整理すると、別の見方ができるようになります。今回の場合、ベイズの定理は以下のように表せます。

$$
\begin{align}
P(W | H_1) & =\frac{P(H_1|W)}{P(H_1)}\times P(W)
\end{align}
$$

念のため、この式に則って、血統がH1のときの勝率を計算してみます。結果は当然同じになります。

$$
\begin{align}
P(W | H_1) & =\frac{P(H_1|W)}{P(H_1)}\times P(W)
\\\\
&= \frac{\frac{W_1}{W_1+W_2}}{\frac{W_1+L_1}{W_1+L_1+W_2+L_2}} \times \frac{W_1+W_2}{W_1+W_2+L_1+L_2}
\\\\
&=\frac{W_1}{W_1+L_1}
\end{align}
$$

ただし、ベイズの定理に基づいて考えると、血統H1のときの予測確率について、以下のように解釈することができます。

もともと想定していた確率は \( P(W) \)だったが、それが、血統についての情報を得ることで、\( P(W|H_1) \)に更新された(\( \frac{P(H_1|W)}{P(H_1)} \) 倍された)

これがベイズ更新の考え方です。

ここでのポイントは、事前分布は必ずしも、\( P(W)=\frac{W}{W+L}=\frac{W_1+W_2}{W1+W_2+L_1+L_2} \) である必要はないということです。

事前分布を\( P(W)=\frac{W}{W+L}=\frac{W_1+W_2}{W_1+W_2+L_1+L_2} \) とした場合に、単純に考えた場合と同じ結果になりますが、この事前分布を採用するかどうかは、あなた次第です。別の予測を事前分布に使用することも可能です(ただし、その事前分布に血統が既に考慮されていると、血統のデータがダブルカウントされてしまうので、この点は注意が必要です)。

ベイズ更新をさらに掘り下げる

ベイズ更新の肝は \(\frac{P(H1|W)}{P(H1)} \)の部分なので、この部分をもう少し掘り下げていきます。

$$
\begin{align}
\frac{P(H_1|W)}{P(H_1)} &= \frac{P(H_1|W)}{P(H_1|W)P(W) + P(H_1|L)P(L)}
\\\\
&= \frac{\frac{P(H_1|W)}{P(H_1|L)}}{\frac{P(H_1|W)}{P(H_1|L)}P(W) + P(L)}
\\\\
&= \frac{\frac{P(H_1|W)}{P(H_1|L)}}{\frac{P(H_1|W)}{P(H_1|L)}P(W) + 1 – P(W)}
\\\\
&= \frac{\frac{P(H_1|W)}{P(H_1|L)}}{1 +\{\frac{P(H_1|W)}{P(H_1|L)} -1\}P(W)}
\end{align}
$$

これを改めて整理すると、以下のように書けます。

$$
\begin{align}
\frac{P(H_1|W)}{P(H_1)}
&= \frac{\lambda(H_1)}{1 +(\lambda(H_1) -1)P(W)}
\\\\
\lambda(H_1) &= \frac{P(H_1|W)}{P(H_1|L)}
\end{align}
$$

上記1行目左辺はベイズ更新によって事前予測がアップデートされる比率(予測更新率)を表します。その比率が、上の式のλと事前予測のP(W)によって決まるということです。このλは一般にベイズ因子と呼ばれています。

λとPを変えて予測更新率を計算した結果を図に示します。

以下のような特徴があります。

λ = 1であれば、この項は1になる(事後予測は事前予測のまま)。
λ > 1であれば、この項は1以上になる(事後予測は事前予測よりも高くなる)。
λ < 1であれば、この項は1以下になる(事後予測は事前予測よりも低くなる)。

$$
\begin{align}
\lambda(H_1) &= \frac{P(H_1|W)}{P(H_1|L)}
\end{align}
$$

λは「勝った馬の中での当該血統の馬の割合」と「負けた馬の中での当該血統の馬の割合」の比なので、上のような結果になるのは、感覚的にも納得できるのではないでしょうか。

ちなみに、以下のページ内の各レースの予測表の「父馬」「母父馬」の値は、ベイズ因子λを示しています。

(参考)ベイズの定理(オッズの形で表現)

このλはベイズ因子と呼ばれるもので、ベイズの定理を「オッズの形」で書いた場合、

事後オッズ = ベイズ因子✖️事前オッズ

と書き表せます。

統計学では、ある事象が起こる確率と起こらない確率の比を「オッズ(odds)」と呼びます(競馬のオッズとは別物です)。いまの例で言うと、勝ちが発生する確率と負けが発生する確率(勝ちが発生しない確率)の比のことです。

「事後オッズ =ベイズ因子✖️事前オッズ」の確認

$$
\begin{align}
P(L|H_1) &= \frac{P(H_1|L)}{P(H_1)}P(L)
\\\\
&= \frac{\frac{P(H_1|L)}{P(H_1|W)}}{1 +{\frac{P(H_1|L)}{P(H_1|W)} -1}P(L)}\times P(L)
\\\\
&= \frac{\frac{P(H_1|L)}{P(H_1|W)}}{1-P(L) + \frac{P(H_1|L)}{P(H_1|W)}P(L)}
\\\\
&=\frac{\frac{P(H_1|L)}{P(H_1|W)}}{P(W) + \frac{P(H_1|L)}{P(H_1|W)}(1-P(W))}
\\\\
&= \frac{1}{\frac{P(H_1|W)}{P(H_1|L)}P(W) + 1- P(W)}
\\\\
&= \frac{1} {1 + \{ \frac{P(H_1|W)}{P(H_1|L)} – 1\} P(W)}
\\\\
\frac{P(W|H_1)}{P(L|H_1)} &= \lambda(H_1) \times\frac{P(W)}{P(L)}
\end{align}
$$

5. 実際にやってみた!

4項までに説明した方法で血統データを用いた予想確率のベイズ更新を実践してみました。使用したデータは以下のとおりです。

  • ベイズ因子の推定・計算に使用したデータ(A):
    2012年1月5日〜2024年6月2日までのデータ(41378レース)
  • 予想したデータ(B):
    2024年6月8日〜2025年6月8日までのデータ(3329レース)

まず、(A)のデータから馬場(芝 or ダート)ごと、距離ごとに分けたデータ(表)を作成します。各表から、種牡馬(父馬)ごとに勝ち数、負け数を整理し、以下の式に基づいて、ベイズ因子を計算しています。

$$
\begin{align}
\lambda(H_1) &= \frac{P(H_1|W)}{P(H_1|L)}
\end{align}
$$

このベイズ因子を用いて、勝ち馬の予想を行いました。なお、このベイズ因子を予想に適用するにあたり、若干の補正を行っています(ラプラススムージング)。これについては、改めて、別途詳細な説明ページを設けようと思っていますが、単純にいうと、データが少ない場合に生じる不確定性について、対応するための処置です(たとえば、当該馬場、距離、種牡馬に対応する馬が1回だけ出走して、勝った場合、ベイズ因子の分母が0になってしまうので、計算ができなくなってしまう、等々の問題への対応です)。

実際に自分の手で試してみたい方は、こちらにデータを無料で取得する方法を載せていますので、ご活用ください。

ケース1 : 事前の予想確率 = どの馬も同じとする場合

ベイズ更新の効果を確認するために、以下の2とおりの方法で解析を行なって結果を比較しました

  • ベイズ更新をする場合
  • ベイズ更新をしない場合

ベイズ更新をしない場合

(B)の各レースについて、ランダムに1頭を選び的中率、回収率を計算します。この操作を1000回実施しました。結果は以下のとおりです。

     的中率            回収率      
 Min.   :0.06128   Min.   :0.4593  
 1st Qu.:0.07330   1st Qu.:0.6476  
 Median :0.07630   Median :0.7174  
 Mean   :0.07651   Mean   :0.7237  
 3rd Qu.:0.07990   3rd Qu.:0.7930  
 Max.   :0.09072   Max.   :1.0834 

的中率、回収率は平均的には、以下のようになりました。
的中率: 7.651%
回収率: 72.37%

ベイズ更新をする場合

事前の予測確率は、全馬とも1÷各レースの出走頭数で与え、当該馬場、距離、血統(種牡馬)から計算されたベイズ因子を用いて、ベイズ更新を実施して予想勝ち確率が最も高い馬を選択します。その馬にに賭けたものとして、的中/非的中をカウントしています(なお、同率一位の馬が存在する場合は、芝の場合は内枠の馬、ダートの場合は外枠の馬を選択しています。一般にその方が勝つ傾向が高いと言われているため)。

結果は以下のようになりました。

的中率: 10.00 %
回収率: 79.65 %

単純にランダムに選択した場合は、平均的な的中率で7.651%、1000回の試行のうちの最大値でも9.072%ですので、ベイズ更新を適用することで、明らかに的中率が上がるといって良いかと思います。

上の試行は、種牡馬のみで行なっていますが、ブルードメアサイアー(母父馬)についても、同じようにベイズ因子を計算し、種牡馬、ブルードメアサイアーの両方のベイズ因子を使用して、ベイズ更新を行うと、的中率、回収率は、以下のようになります。

的中率: 11.08 %
回収率: 84.99 %

的中率、回収率ともさらに向上しています。JRAが設定している単勝馬券の払い戻し率は80%です。種牡馬、ブルードメアサイアーの両方のデータを用いるだけで、この払い戻し率を超える値が得られています。

ケース2:事前の予想確率 = オッズから推定する場合

JRAの単勝馬券の払い戻し率は80%ですので、以下の式で各馬のオッズから投票割合を推定することができます。

$$
\begin{align}
odds &= 0.8 \times \frac{N}{n}
\\\\
p &= \frac{n}{N}
\\\\
&= \frac{0.8}{odds}
\end{align}
$$

odds:オッズ
n:当該馬への投票数
N:投票総数
p:当該馬への投票割合

事前予想確率として上記のp(投票割合)を使用して、ベイズ更新を実施しました。

ベイズ更新をしない場合

(B)の各レースについて、事前予想確率が最大の馬を選び、的中率、回収率を計算します。これは、結果的には、1番人気の馬を選んでいることになります。結果は以下のとおりです。

的中率: 34.635%
回収率:81.718 %

ベイズ更新をする場合

種牡馬のデータのみを適用した場合

的中率:34.06 %
回収率: 82.36 %

種牡馬、ブルードメアサイアーのデータを適用した場合

的中率 : 34.21%
回収率 : 82.49 %

1番人気の馬を書い続けた場合と比べると、どちらの場合も、回収率こそ若干高くなっているものの、的中率が下がってしまっています。的中率をあげるようにベイズ更新を使用しているのに、事前予測にオッズから推定した予測確率を使用すると、思ったような効果が得られていません。

オッズは多数の人の予測を反映したものと考えられます。その中には血統に関する検討も含まれていることでしょう。このため、オッズをもとにした事前確率の中には血統の影響がすでに含まれており、これにベイズ更新を適用しても、血統の影響はダブルカウントされてしまうことになるので、思ったような効果をあげないのではないかと思います。このあたりは、この方法を適用する場合には注意する必要があります。

以下のページでは、今回紹介した方法で血統の効果を予想に反映しています。

まとめ

ここまで、ベイズ統計を用いて競馬予想をどのようにアップデートできるのか、血統データを例に見てきました。そして実際に、ベイズ更新を適用した実験の結果は次のようなものでした。

実験結果からわかること

ケース1:事前にどの馬も「同じくらい勝ちそう」と仮定した場合

  • ベイズ更新なし → 的中率:7.651%、回収率:72.37%
  • ベイズ更新あり → 的中率:11.08%、回収率:84.99%

→ 情報(血統など)を加えてベイズ更新しただけで、的中率も回収率も大きく向上しました。
これは「情報を活かせば、“人気薄”の中に隠れた好走馬を見つけられる」という、まさにベイズ的発想の勝利です。

ケース2:事前に「人気(オッズ)=勝ちやすさ」として予測した場合

  • ベイズ更新なし → 的中率:34.64%、回収率:81.72%
  • ベイズ更新あり → 的中率:34.21%、回収率:82.49%

→ 的中率はわずかに下がったものの、回収率は微増
事前予測の値に何を選ぶかは慎重に考える必要があります。本ページの方法で、血統データを予測に組み込む場合、なるべく血統の影響が入っていないデータを事前予測に選ぶと良い結果が得られる可能性があります。

単勝払い戻し率「80%」を超えた意味

JRAの単勝馬券の払い戻し率は80%
これは「長期的には、全体として20%は胴元の取り分になりますよ」という仕組みです。

しかし今回のケース1では、ベイズ更新ありで回収率84.99%
つまり、統計的に有利な情報を加えるだけで、期待値を向上させる可能性があることを示しています。

競馬は「運ゲー」ではない。情報をどう使うかの“戦略”だ

「競馬は運まかせ」と言われがちですが、ベイズ統計が教えてくれるのはその逆です。
“限られたデータの中でも、新しい情報を使って、予測を柔軟に更新していくことができる”という事実です。

これはまさに、「情報戦」の世界。

あなたが持っている血統データ、調教タイム、馬場傾向……
それらは単なる数字ではなく、”勝率を動かす“材料”になるのです。

最後に

もし、あなたが「いつも人気馬を買って外す…」と悩んでいるなら、
あるいは「大穴狙いで夢を見るのもいいけど、もう少し理屈が欲しい」と思っているなら、
ベイズ統計は、その“中間”にある現実的な武器になるかもしれません。

次のレースでは、ほんの少し、情報を見直してみませんか?
「思い込み」ではなく、「確率」で競馬を見ると、予想の世界はきっと面白くなります。