Chapter 08無料公開

【新】最新版競馬予想AIが完成

競馬予想で始めるデータ分析・機械学習
競馬予想で始めるデータ分析・機械学習
2022.09.04に更新

最新版競馬予想AIの概要

この度、新しいバージョンの競馬予想AIのソースコードが完成しました。
書籍では、完全版および最先端verに【新】マークがついたチャプターで、コードの解説をしています。

Chapter02~07にある旧バージョンとの主な違いは、継続的な開発・運用をしやすいソースコードにしていることです。
以下の記事で、開発に至った経緯や「継続的な開発・運用」をするためのポイントを詳しく解説しているので、併せてご覧ください。(ぜひいいねをお願いします!)

https://qiita.com/dijzpeb/items/db74aa9726aaf55201eb

それでは、最初に使うデータや処理の流れについて、基本的な部分は旧版と変わらないですが、改めて概要を記載しておきます。

全体像

データの処理の流れ

記号 意味
外部のデータソースを表します。
データの処理を表します。
データの流れを表します。
データストア(保存されるデータ)を表します。

使用するデータ

netkeiba.comからスクレイピングした次の5つ(+1つ)のテーブルを使用します。

  1. レース結果テーブル:スクレイピングした各レースの結果テーブルをまとめて結合したもの。このテーブルの「着順」列を使って、「3着以内に入ったかどうか」を目的変数にして二値分類予測します。

  2. レース情報テーブル:レースの距離や、当日の天気などの情報を持った、マスタテーブル。

  3. 馬の過去成績テーブル:スクレイピングした各馬の過去成績テーブルをまとめて結合したもの。

  4. 血統テーブル(加工方法は次章以降で解説)

  5. 払い戻しテーブル:回収率シミュレーションの際に使用します。(加工方法は次章以降で解説)

  6. (レース当日の出馬表):上の「レース結果テーブル」は過去レースの結果を保存したページなので、当日実際に賭ける時には出馬表ページのデータを使用し、レース結果テーブルと同じ形のテーブルに加工します。

処理の流れ

詳しくは後のチャプターで解説するので、ここでは大まかな流れのみ追っていきます。

学習時の流れ


スクレイピング後それぞれのテーブルに関して前処理を行なった後、2~4のテーブルを1のレース結果テーブルに結合します。その際、馬の過去成績テーブルは馬ごとに「直近5レースの結果」などを集計して結合します。

その後、カテゴリ変数の処理を行い、訓練データとテストデータに分けてモデルを学習させます。テストデータと5の払い戻しテーブルを使って回収率のシミュレーションなどを行います。

実際に賭ける時の流れ


出走する馬が確定したら、前日などに馬の過去成績テーブルや血統テーブルを最新のものに更新しておきます。

その後、馬体重などが発表されたら出馬表をスクレイピングし、訓練に使ったデータと同様の処理を行って訓練させたモデルに入れることで、予測スコア(3着以内に入る確率)が出力されます。