AI開発 競馬データ

オッズ予測AIを作ってみた ~AI開発日記 (2)~

AI開発

こんにちは、ちゃんわです。

この記事では、私が個人でAI開発についてのあれこれを書いています。

もし、ご興味があれば覗いてみてください。

今回はタイトルにもあるように「オッズ予測AIを開発した」という内容です。

みなさん、事前予想をする際にオッズはどのように調べていますか?

おそらく、大部分のかたはnetkeibaさんの予想オッズを参考にしていると思います。

また、前日夜や当日朝に予想をする場合には、その時間におけるオッズを確認しているのではないでしょうか。

しかし、どうでしょう。

実際に蓋を開けてみれば、確定オッズが週中の予想オッズとかけ離れたオッズになってしまったり、朝の段階で見ていたオッズと実際のオッズがかけ離れていたり、、、

多くの方が経験しているし、馬券検討においては頭を抱えてしまうことがよくあるのではないでしょうか。

そのようなことから、私が確定オッズを予測するAIを開発したのですが、その際に思ったことや考えたこと、予測オッズ開発に関することを書き連ねていこうと思います。

netkeibaの予想オッズは母集団が異なる!

まず、多くの方が参考にしているであろうnetkeibaさんの予想オッズについてです。

先日アンケートを実施したところ、以下のような結果になりました。

週中の予想や、馬券発売前段階での予想では、アンケート結果からもnetkeibaさんの予想オッズを参考にされている方が大部分を占めていることがわかります。

ただ、netkeibaさんの予想オッズはサイトにも記載があるように「俺プロ」と呼ばれるサービスを利用している方の予想印から予想オッズを算出しているのです。(参照:俺プロ)

何が問題かというと、俺プロのサービスを利用している集団は実際に馬券を購入する集団の一部分であるために、実際に馬券を買う集団オッズに偏りが出てしまう可能性があるということです。

netkeibaさんは「俺プロ」を利用している人の予想印から予想オッズを算出している

つまり、実際に馬券を買う集団と集団構成が異なっていると表現できるのです。

イメージは以下の図のような感じですね。

母集団の違い

おそらく俺プロを利用する集団に属するファンは馬券を購入する集団の平均よりも予想力や馬券力が高く、上手い人が購入する馬券に予想オッズが引っ張られてしまう可能性があると考えました。

こんな感じになってしまう可能性もあるということですね~

ですから、確定オッズとズレが生じてしまうために馬券の検討がしにくくなるのではないだろうかと考えたわけです。

馬券の売り上げの約半分は締め切り10分前に購入される!

こちらもアンケートを実施したのですが、以下のような結果になりました。

約60%は発走直前に馬券を購入しているとの結果でした。

そして、実際のレースでも平場レースの馬券の売り上げの約半分は締切の5分前に購入されています

G1や重賞のような締切で混雑が想定されるレースはもう少し早めに購入されていますが、それでも10分前で70%程度です。

つまり、前日夜のオッズや当日朝のオッズはそのレースの売上の数%で構成されたオッズであるということなのです。

とある日の単勝の時系列売上データ

上の表をご覧いただくとわかるように、未勝利戦だと締切5分前でも全体の50%程度しか購入されていませんし、G1でも締切30分前にしてようやく全体売上の50%が購入される程度なのです。

ですから、前日夜の段階のオッズや当日朝9時の段階でのオッズは、全体の集団の中のほんの僅かな集団で構成されたオッズであるというわけです。

さらに、このように全体に占める売上が少ない時間帯では、数十万円単位で購入された馬券に引っ張られて一気にオッズが変動します変動が激しいオッズを見て予想を組み立てることは難しい。ということはみなさんも理解しやすいのではないでしょうか。

レース締め切り直前まで、売上馬券の半分程度しか購入されていない。

事前に確定オッズが分かれば、予想しやすいよね?

予想オッズを参考に予想したり、前日夜~当日朝の段階のオッズを参考にしたりして予想を組み立てていくと、馬券を買うときやレース確定後の払い戻し額を確認するときに「思ってたよりも大分安い…」「こんなにオッズがつくなら拾っておけばよかった…」などと後悔してしまうことも多くなるでしょう。

そこで、私が考えたのはこういうことです。

職業柄データサイエンスに関わっているので「オッズを予測するAIを開発してみよう!」と思いつき、開発をスタートしました。

私の開発する「確定オッズ予測AI」では、前日の枠が出た段階で確定オッズをある程度の精度で予測してしまおう!

その予測オッズを見ながら馬券を組み立てることができれば、今の状況よりも確定オッズを見てびっくりすることはないだろうと考えたわけです。

前日の枠順発表の時点で確定オッズを予測させるAIを開発する!!

いったんベンチマークはnetkeibaの予想オッズで

まず最初に開発を始めるにあたって、どこまで精度を出せるか、どこまでの精度を目標とするかを検討しました。

多くの方が利用しているであろうnetkeibaさんの予想オッズ(前日の正午時点)と実際の確定オッズとの差をベンチマークに設定し、それよりも精度の高いモデルを作る改良を繰り返していくと決めました。

つまり、実際の確定オッズと前日正午時点での予想オッズの差が小さい方が勝ち!で、それを目標に作り込みます。

前日正午の段階で予測させるオッズですので、完璧に確定オッズと一致させることはできません

なぜなら、ここには当日の馬場状態や当日の馬体重、当日の天気など、未来の情報を入れることができないからです。

後ほどまた詳しく書きますが、予想する馬券ファンは新聞を始めとする媒体を利用して予想するため、基本的に新聞に載っていない当日の情報は新聞に載っている情報ほどオッズに大きく影響はしないだろうと考えていますし、前日正午時点の予測オッズですので、未来の情報を入れることは不可能です。

それでも、なるべく確定オッズに近づける改善を行っていくということです。

オッズはどのように作られる?

オッズを予測させるに当たって、まずは「オッズってどのように作られるのだろう」という根本を考える必要があります。

オッズは馬券ファンの購入馬券によって決まる。

当然と言えば当然ですよね。笑

オッズは馬券購入者の購入金額の合計と購入比率によって上下します

ですから、多くの馬券購入者が買いそうな馬を予測させることが大切になります。

多くの馬券購入者が買いそうな馬を予測できることが大切

人気の馬とは?

次は、多くの馬券購入者が買いそうな馬=人気の馬とはどのような馬なのか。ということを考えます。

人気の馬になる条件は色々あると思いますが、自分が競馬初心者だったときのことを思い出してみると、「こういう馬を強いと考えていたなぁ」「こういう馬は飛びつきたくなるなぁ」という要素がありました。

例えば以下です。

人気の馬の条件(代表的なもの)
  • 近走の着順が良い馬
  • 1着馬との着差が小さい馬
  • 上り順位が上位の馬
  • リーディング上位騎手が乗る馬
  • 大きいレースの勝ち数が多い馬

挙げだしたらきりがありませんが、ぱっと見人気になりそうだな~と思う要素は多々ありそうです。

では、馬券購入者が予想するファクターを取り入れよう。何がある?

人気は大衆心理と同じですので、馬券購入者の多くが馬券検討の際に使用するファクターを取り入れてあげれば、大衆心理の反映である確定オッズを予測できるだろうということで、考えました。

多くの馬券購入者と同じ予想ファクターを取り入れれば、オッズを予測できるだろう!

一般に馬券ファンが何を見て馬券を購入するか、つまり馬券検討の情報源がなにかと考えると、基本的には以下3点でしょう。

馬券検討に使う情報源
  • 競馬新聞(専門紙・スポーツ紙)
  • 競馬予想ソフト
  • 当日JRAから発表される情報

3点目は、今回のオッズ予測では使用できないため、競馬新聞or競馬予想ソフトを利用して予想をする人が大半を占めるだろうと考えました。

基本的に競馬予想ソフトもそうですが、競馬新聞に記載されている馬柱の内容が主な情報源になることは間違いなさそうだと思いました。

つまり、競馬新聞に載っているようなファクターをAIに学習させれば確定オッズをある程度予測できるだろうと言う結論に至ったのです。

競馬新聞に載っている基本的な情報(ex:出走情報、近5走成績、累計成績など)を学習させればオッズを予測できるのでは?

※ここで言う競馬新聞に載っている情報とは、競馬新聞の情報をそのままコピーして使用するという意味ではなく、競馬新聞に載っているデータと同じ種類のデータを使うという意味です。

例えば、騎手や調教師、性齢、枠、斤量のようなレース情報、前走の着順、前走の着差、前走の人気、といったような過去の成績情報といったような情報のことを指しています。

学習用データセットを作成、開発した予測モデルにデータを流し込む

その馬の該当レース情報や過去の成績データ、レース過程データとその時の確定オッズをセットにした情報を学習データとして、予測モデルに学習させます。

ここで注意が必要なのは、学習させるデータに「予測させる時点以降に得られる情報を与えてはいけない」ということです。

具体的には、「レース前日の12:00にオッズを予測させるのに、当日のレース1時間前に発表される馬体重のデータを入れてはいけない」といったことです。

オッズを予測させる時点で分かっているデータだけでオッズを予測させるため、実際の確定オッズとは少々差が出ることは仕方有りませんので、その差をできるだけ小さくしていくというのがポイントですね。

モデルに学習をさせることで、「こういう実績の馬はこのくらいの最終オッズになる」とか「近走の着順が良くてもクラスが上がるとそこまで人気にならないな」とか、細かいことを自動で判断してくれるようになります。

つまり、「実績的に過剰人気し易いタイプ」はそのまま過剰人気気味のオッズを予測してくれるし、「馬柱がきれいで、他のメディアでは人気が偏っているけど、最終的にはこのくらいのオッズに落ち着く」といったことが前日の12:00時点でわかるようになります。

逆に「予測オッズよりもオッズが低いな、過剰に売れているのでは?」と考えることもできるし、「予測オッズ人気の割に人気がないな。。穴か?」などと、大衆心理を読む手助けにもなるかもしれません。

これがわかるのは、めちゃくちゃ嬉しくないですか?

オッズ予測AIによって、過剰人気もその馬の最終的に落ち着くオッズも、前日にわかる!はず

実際はどうなの?

ここまで、理論的な話や理想についてつらつらと書いてみましたが、「実際はどうやねん!」ということで、一部具体的な例をお見せします。

以下の画像は、AIが算出した予測オッズを競馬ソフト(TARGET)で取り込める形で出力して、実際の確定オッズと比較するために並べた者です。

ここでは、前日正午の時点で「オッズ予測AI」が算出したオッズと、実際の確定オッズの比較を見ていただきたいです。

※単勝100倍を超えてくる馬に関しては、精度は出にくいです。これはそもそものデータが少ないことが原因と思われます。

2022年12月10日 中京6R

上位人気10頭くらいまではほぼ順位もあっており、オッズが小さい(=人気の馬)ほど精度が良いというところがわかっていただけるかと思います。

2022年12月11日 中山8R

こちらも多少のズレはあるものの、精度自体はかなり満足行くものとなっており、レース前日夜や当日朝に見る途中オッズと比較すると間違いなく精度は上だと自負しています。

予測オッズはどこで見れるの?

予測オッズは、とうけいば氏のサロン内のコンテンツとして公開しています。

競馬予想ソフトTARGETに外部指数として取り込めるようになっており、予想の際に実際のオッズと比較しながら確認することが可能です。

現在はその他外部公開の予定はありません。

オッズ予測AIのこれから

私の開発したオッズ予測AIは、プロトタイプ版の完成から、馬具の修正や精度の改善を繰り返しており、現在(2022/12/10現在)はver.2.1.0を運用しています。

初期のプロトタイプ版に比べるとだいぶ精度も向上してきましたが、まだまだ精度改善の余地を残しています

今後も、コツコツと精度向上を目指して素晴らしいオッズ予測AIを作りたいと考えています。

並行して開発をしている競馬予想AI(@chance_keiba)にもこのオッズAIの予測を取り込んで、期待値の高い馬券を購入できるようなAIを作りたいと考えていて、可能性は無限大です(^^)

これからも頑張っていきたいと思います!

※競馬予想AIの開発については、また別の記事にて書かせていただきます。

競馬AIについて少し勉強してみたい方必見

競馬予想AIについて、難しいと思う方も多いかもしれません。

しかし、少しでも競馬AIについて知っておくと今後AIと戦っていくことになることは避けられませんし、そういった意味で敵を知っておくことは非常に重要です。

このあたりの本は競馬AIについてわかりやすく書いてありますし、新しいものを取り入れるいいチャンスかもしれません。

ぜひ、興味があれば読んでみてください(^^)

created by Rinker
¥1,881 (2023/02/07 20:18:36時点 Amazon調べ-詳細)
created by Rinker
¥2,035 (2023/02/07 05:18:34時点 Amazon調べ-詳細)

まとめ

以上、「オッズ予測AIを作ってみた」という記事でした。

まとめるとこんな内容でした。

まとめ
  • netkeibaの予想オッズはオッズを構成する母集団が異なる
  • 馬券売上の約半分は締め切り10分前に購入される
  • オッズは馬券購入者が新聞等のメディアを使って予想した大衆心理である
  • 前日正午の段階でもっと正確なオッズが知りたい
  • だからオッズ予測AIを開発してみた
  • 学習データを学習させて予測モデルを作る
  • 実際の精度は上記の画像の通り
  • これからも精度改善していきます!

以上でした!

これからもAI開発関連の記事もアップしていきますので、興味のある方はぜひ見ていただけると嬉しいです(^^)

お問い合わせ等あれば、ブログのお問い合わせ、またはTwitterのDMでいただけますようお願いいたします!

コメント

タイトルとURLをコピーしました