Guide
競馬予想AIの作り方
競馬予想AIを作る工程は5つに分かれます。そのうちAIらしいのは1つだけで、残りはデータの整備と検証です。ここでは全工程を通しで説明し、 Pythonで自作する場合にどこで詰まるのかを具体的に書きます。
全体の流れ
- 01
データを集める
過去のレース結果、出走馬の成績、騎手・調教師の成績、調教タイム。最低でも数年分、行数にして数十万行が要ります。netkeiba などをスクレイピングするか、JRA-VAN のような有料データサービスを契約するかの二択です。スクレイピングは各サイトの利用規約とアクセス間隔の遵守が前提で、ここだけで数十時間かかることも珍しくありません。
— 実作業の大半はここ。AIの部分ではない
- 02
前処理する
集めたデータは、そのままでは学習に使えません。馬名・騎手名の表記ゆれを名寄せし、欠損を埋め、レースと馬を突き合わせるキーを作ります。地方競馬が混ざっていれば分離が要ります。列が1つずれているといった破損も、実データでは普通に起こります。
— 静かに間違うので、気づかないまま先に進みやすい
- 03
特徴量を作る
「この馬の勝率」のような集計値は、必ずそのレースより前のデータだけで計算しなければなりません。全期間で集計した勝率を使うと、未来の結果が答えに混入します。同じレース内の他馬と比べた相対値も、精度に効く一方で作り方を誤りやすい部分です。
— リーク(答えの混入)が最も生まれやすい工程
- 04
学習させる
LightGBM のような勾配ブースティングが定番です。勝つか勝たないかの二値分類として解くか、レース内の順位付けとして解くかで出力の意味が変わります。前者は確率が出るので期待値の計算に使えます。学習そのものは、データさえ整っていれば数分で終わります。
— 一番短い。ここがAIの本体だと思われがちだが違う
- 05
検証する
学習に使った期間で成績を測っても意味がありません。時系列で分割し、その時点より後のレースだけで回収率と的中率を測ります。ここを間違えると、回収率200%のような数字が簡単に出ます。出たら、まず疑うべきです。
— ここの厳しさが、そのまま数字の信頼性になる
2つのルート
どちらが優れているという話ではありません。手を動かす範囲が違います。
Pythonで自作する
- Python・pandas・LightGBM の環境構築から始める
- データ収集と前処理を自分で書く(全工程の大半)
- 特徴量もモデルも検証方法も、完全に自由
- 解説記事は Zenn・Qiita・note に多数。完成済みプログラムの有料配布は2万円台から3万円台
- 詰まる場所: 環境構築、スクレイピング、リークの検出
ブラウザで組む(UmaBuild)
- インストール不要・環境構築不要・登録不要
- データ収集と前処理は済んだ状態から始まる
- 134の特徴量から選び、学習と時系列検証を実行
- 回収率・的中率と、重視した項目が返る
- できないこと: モデルの中身を自分で書き換えること
よくある3つの失敗
いずれも回収率が高く出る方向に間違えます。うまくいったように見えるので、気づきにくいのが厄介なところです。
答えが混ざっている(リーク)
レース後にしか決まらない値を特徴量に入れてしまう事故です。通過順や上がり3ハロン、着差などが代表例。入れると的中率が跳ね上がるので「うまくいった」と錯覚しますが、本番では絶対に再現しません。的中率50%・回収率300%のような数字が出たら、まずこれを疑ってください。
学習した期間で成績を測っている
答えを見ながら答え合わせをしている状態です。回収率は必ず100%を大きく超えます。学習期間と検証期間は時系列で完全に分ける必要があり、しかも検証期間を見ながら条件を選び直した時点で、その期間も学習期間の一部になります。
サンプルが少なすぎる
条件を絞り込むほど該当レースは減り、たまたま高配当が1本当たっただけで回収率は数十ポイント動きます。真の回収率が80%の買い方でも、50件しか賭けなければ約19%の確率で100%を超えます。「この条件で回収率150%」を見たら、次に見るべきは賭け数です。
よくある質問
- プログラミングができなくても競馬予想AIは作れますか?
- 作れます。Python を書いて自作する方法のほかに、ブラウザ上で特徴量を選んで学習させる方法があります。UmaBuild は後者で、インストールも環境構築も不要です。
- 競馬予想AIを作るのにいくらかかりますか?
- 自作する場合、データ取得の手間に加えて、JRA-VAN などの有料データサービスを使うなら月額数千円かかります。完成済みのプログラムを配布する有料note は2万円台から3万円台で販売されています。UmaBuild は無料で試せます。
- どの特徴量を選べば回収率が上がりますか?
- 条件によって変わるため、一律の正解はありません。距離・馬場・クラスが変われば効く要素も変わります。だからこそ、候補を選んで実際に回し、回収率を見て確かめる作業が必要になります。UmaBuild はその試行を短時間で繰り返すための道具です。
- 回収率100%を超えるAIは作れますか?
- 単勝の控除率は約20%で、全馬を等額で買うと回収率は約70%になります。長期・全レースで安定して100%を超えるのは容易ではありません。条件を限定した範囲で100%を超える組み合わせは存在しますが、賭け数が少ないほど偶然で説明できてしまう点に注意が必要です。