AI競馬で回収率100%越えを目指して

はなむけ競馬場

競馬

【テスト開始】回収率170%超えのAI開発に成功【解説】

更新日:

機械学習(巷で言われるAI)で競馬予想をして一発当てたいと思い、2020年の9月から開発を開始しました。

記事のタイトル通り、回収率が170%となる想定のモデルに開発成功したので、実際に運用を開始したいと思います。

このブログでは結果報告や技術的な話をしていければと思います。

開発過程で得られた知見も共有していければと思います。

 

対象となるレースについて

今回開発したモデルは、2歳未勝利のレースのみを対象としています(別記事で理由を説明します)。

さらに、ダートと芝でデータを分けて、2つのモデルを作りました。

想定する馬券は3連複もしくは3連単となり、予測結果の上位4頭の馬券を購入するという前提で計算します。

つまり、3連複に関しては4通り(400円)、3連単は24通り(2400円)が最低掛け金となります。

肝心の回収率は?

ダートと芝それぞれでの、3連複と3連単の回収率は以下の通りとなりました。

馬券 ダート
3連複 155.4% 171.7%
3連単 179.9% 178.8%

 

回収率の解説

通常、馬券の回収率が80%前後だといわれているので、回収率150-170%は驚異的な回収率です。

利回り50%の株なんて聞いたこともないので、ぶっとんでいます。

芝とダートで予測したレース数は異なりますが、どんな買い方をしても回収率が100%を超えていました。

特に、3連複と3連単については優れた数字を出していたため、構築したモデルの買い目をこの二つとしました。

 

どうやってつくったのか?

プログラミング言語の一つであるPython3を使用しました。

モデル作成にはLightgbm(勾配ブースティング回帰木の一つ)を使っています。

データは2014~2020年のレースデータを利用しています。

データはnetkeiba.comから収集しています。

データスクレイピングではnetkeiba-scraperがこの界隈では有名ですが、Scalaを使って書いているようで、まったく使い方が分からなかったので、独自でスクレイピングコードを作成しています。

データベース構築のためにXAMPPでローカルホストを立てて、データベースを作っています。

レースでは全体で40万件、競走馬の血統情報が3万件を利用する形としています。

 

 

 

 

モデル作成の詳細について

長くなるので別の記事で解説。

 

競馬はこの要素が重要!

AIを構築するのに利用したLightgbmは、副産物としてどの要素が予想に聞いたのか数字にしてくれるという嬉しい機能があります。

モデルを構築するのに利用した要素(特徴量)は血統情報も含めて、143個になります。

このうち、どういう順番で競馬予想に使えるのかというのを解説したいと思います。

2歳未勝利のダートで重要な要素

AIが解析した2歳未勝利のダートで重要な要素は以下の通りです。

数字が大きいほど、重要な働きをします!!

2歳未勝利のダートで重要な要素

上位何個かの特徴量の説明をしたいと思います。

  • 走破距離_J:過去20戦で騎手が走行した距離
  • 平均速度:過去5戦の競走馬の平均走行速度
  • 平均順位_J:過去20戦の騎手の平均順位
  • 走破距離:過去5戦の競走馬の走行距離
  • 平均順位:過去5戦の競走馬の平均順位
  • レース間隔:前走と当日で何日間間隔があったか
  • 騎手:騎手の名前
  • 馬番:馬番

競馬初心者であるため、いろいろ特徴量を作って解析に利用しましたが、騎手の走破距離が最も効いてくるとは意外でした。

本当になぜこれが重要なのか意味が分からない。

というより、競馬における騎手の役割って思ったより大きんだなというのがわかりました。競馬は血のスポーツだとかいわれているようだが、そんなことはないなという印象を抱きました。

次に平均速度ですが、これは分かりやすいです。馬の速さに直結するので、これが大きいほど勝ちやすいのでしょう。

平均順位_Jは騎手の平均順位を示しており、競馬における騎手の重要性を示しています。誰が騎乗するかで、結果が大きく左右されるということでしょう。

平均順位は競走馬の平均順位です。過去に高い成績を収めていれば、より勝ちやすいというのは容易に想像がつきます。

残りは騎手の名前や馬番が来ています。内外でレース結果が変わるというのは、納得の結果です。

上位の特徴量は以上ですが、血統情報が無意味というわけではありません。

当初血統情報を入れずに計算していた時は、まったく回収率がよくなく、実用に耐えるものではありませんでした。

しかし、血統情報をいれたあとは、劇的に数値が改善したため、競馬予測にはあったほうがいいということでしょう。

問題は、どの馬に注目すればいいのか素人には全く分からないという点です。

お父さんが重要だー、とか、お祖父ちゃんが重要なのだ!とか、いやいや最近はお母さんが重要らしいぞ!?などなど、血統について確たる情報が出ていません。

今回血統についても重要度が出てきたので、それについても解説していきます(この情報が正しいと断言するものではありません)。

上にある表に馬32、馬60みたいなのがありますが、これが血統情報を表しています。

netkeiba.comにある各競走馬の5代血統表をデータに落とし込んでいします。

各数字の対応は以下の画像の通りです(マサカウザンマイの例)。

5代血統表と特徴量の対応図

血統情報で比較的上位にある情報は3つあります。

  • 馬32(お母さん)
  • 馬48(母方のおばあちゃん)
  • 馬59(お母さんのお母さんのお母さんのお父さんのお母さん)←わけわからん

この三つです。

おいおいおい。全員メスじゃん。

お父さんが重要だって言ったやつ出て来い。お父さん関係ないじゃん。

図にある馬の数字を見ても、31を超えているものばかりで、母方の血筋が重要であることが強烈に示唆されています。

すくなくとも私の解析では、お母さんのほうが重要であるという結果のようだ。

とはいえ、オスが重要じゃないと断言していいのかと言えば、そういったことはないだろう。

メスもオスがいなければ生まれてこない訳で、結局間接的に効いているのではないだろうか。

だいたい、長年かけて蓄積されてきた経験則がそう間違っているとも思えない。

今回の解析で表だって出てこなかっただけで、必要な情報であることに変わりはないと思われます。

お母さんが重要だといわれても、どう重要なのか分からない時点で使いようもないですが……。

2歳未勝利の芝で重要な要素

次は芝での重要な要素です。

芝とダートでは結果が異なりますので、注意が必要ですよ。

ダートと違うのは1戦前のスピード指数がかなり効いてくくるという点です。

回収率が芝がダートより低い時点で、おそらく芝のレースはダート程荒れないということでしょう(常識なのか?)。

よって、競走馬が実力通りのレース展開となりやすく、前走のスピード指数を反映した形で次のレースも走り切るのだと思います。

他には1戦前の馬の体重が効きます。初心者なので重いと強いのか、軽いと強いのかわかりませんが、とにかく効くみたいです。

騎手の個人的強さも大きく関与しています。やはり騎手の存在は大きいのですね。

血統についてはダートと同様に、母方の血縁が重要なようです。

お父さんの肩身が狭いですね。

 

まとめ

  • 回収率は170%あるぞ!!
  • 騎手の強さは結果に強く影響するぞ!!
  • お母さんの血のほうが重要だぞ!!
  • まじで稼げるのか検証するぞ!!

-競馬

Copyright© はなむけ競馬場 , 2021 All Rights Reserved Powered by AFFINGER5.