競馬AI開発について第9回です。
今回は構築したAIモデルの精度検証方法について記述します。
基本的な買目の成績で精度を測る
一般的なAIモデル構築手法において、性能評価指標として用いられるのはMSE(平方二乗誤差)などであり、
「データ全体に対して正解値と予測値との差を小さくする」
ことができればそれが良いモデルとなります。
ただし、特に競馬に関しては少し特殊であり、上位入線馬(特に馬券圏内)の予測の方が下位入線馬の予測より重要であることがほとんどです。
つまり、1,2,3着の着順は正確に予測する必要がありますが、16,17,18着についてその着順を正確に予測できていてもほとんど意味がないということになります。
馬券にとても絡みそうにない部分はおおざっぱに合っていれば良いですからね。
では、これをモデルの性能評価指標として考慮するため、着順ごとに誤差の重み等を調整する、といった対応が考えられますが、
AISSの場合、もっとシンプルに基本的な馬券の買目で成績を集計してそれをモデルの精度評価指標として活用しています。
では具体的にどんな買目かというと、
- 単勝:予測順位1位
- 三連複軸2頭流し:予測順位1位 - 予測順位2位 - 予測順位 3 ~ N 位
- 三連単軸2頭流し1:予測順位1位 → 予測順位2位 → 予測順位 3 ~ N 位
- 三連単軸2頭流し2:予測順位2位 → 予測順位1位 → 予測順位 3 ~ N 位
です(N:中央は8、地方は5)。
他の券種でも集計してますがこれらがベースになっています。
上記の買目にしている特別な理由はありませんが、予測精度を測るための最も基本的な券種である単勝と、
全体的な印の精度を測るための三連複・三連単(それぞれ軸2頭流し)を重視しています。
では、実際に採用モデル(2021年5月時点)の成績(シミュレーション)を載せます。
人気通りに買った時と比べ、的中率は約半分ほどになりますが、回収率は大幅に向上しています。
また、上記はあくまでもモデル選定のための買目(全レースベタ買い)なので実際は、採用モデルを決めた後に頭数や予測値区分・オッズなどでもう少し細かく精度を検証しています。
一般的な競馬AI開発との違い
この記事を見に来ていただいている方は、競馬AI開発者またはこれから開発をしてみたいという方がほとんどかもしれません。
その方々はもしかしたら、特に前回のモデル構築で少し違和感を覚えたのではないのでしょうか?
というのも、オーソドックスな競馬AIは私の知る限り下記の手順で買目を組み立てています。
- 各競走馬の予測勝率(または馬券圏内率など)から全馬券の的中確率を計算する
- 的中確率 × オッズ で期待値を算出する
- 期待値が一定の基準(最低1.0)を超えた馬券のみ購入する
この方式(「期待値利用方式」と呼んでいます)で構築するAIモデルは、
「馬券的に美味しい馬」ではなく「勝率や馬券圏内率」を予測する目的があるため、そこで用いる正解値などもAISSとはまったく異なるものとなるでしょう。
私も将来的には期待値利用方式にすべく、調査や実験を行っていますが、まだまだ安定した運用が難しい(正確な予測的中確率算出、事前オッズ取得、短時間での大量馬券自動購入など)といった実情があります。。。
よく「競馬AI同士の競合が今後心配」などといった話を聞きますが、AISSの場合少し特殊なのでこの競合には関われないのではないのでしょうか笑
ただし、今の方式でも当然ダメというわけでななく実際ある程度の結果を残せているため、当面は現状のまま運用しつつ、徐々に期待値利用方式に切り替えられればなと思っています。
まとめ
今回は、
- 競馬AI開発ならではの性能評価について
- 一般的な競馬AI開発で用いられる期待値利用方式について
について説明しました。
一般的なAI開発の定石手法にプラスして競馬予測で大事なことは何なのかを考えてAIモデルを構築することが、馬券成績を向上させるために重要です。
競馬AI開発者の中でも「現時点でのAIで完璧!」なんて誰も思っておらず、もっと精度を向上させようと日々色々とアイデアを考案し、実験していることでしょう。
それでは次回は運用システムの作成と実運用について解説したいと思います!
次回へ