![見出し画像](https://assets.st-note.com/production/uploads/images/147256936/rectangle_large_type_2_0bc122cf7f9e7dbc4fff8e537a85c7dc.png?width=1200)
【競馬AI開発#11】的中率・回収率のシミュレーションを作成する
この【競馬AI開発】シリーズでは、競馬予想AIを作ることを通して、機械学習・データサイエンスの勉強になるコンテンツの発信や、筆者が行った実験の共有などを行っていきます。
■今回やること
今回は、機械学習を使って実際に馬券を買った際の的中率・回収率のシミュレーションを行います。
【シミュレーション設定】
2023年1月〜9月のレースを学習させた機械学習モデルを使って、2023年10月〜12月のレース(=検証データ)を予測した時に、各馬券の的中率・回収率はどうなるか?
今回のコードを実行することで、以下のように各馬券の的中率(hitrate)・回収率(returnrate)を、人気順に買った場合と比較して出力することができます。
evaluator = Evaluator()
evaluator.summarize_box_top_n(n=1, save_filename="box_summary_top1.csv")
![](https://assets.st-note.com/img/1719796407835-eV0TRxXjBJ.png)
_modelが機械学習による予測で、_popが1番人気で賭けたもの。
# 上位2頭をBOXで全通り買った場合
evaluator.summarize_box_top_n(n=2, save_filename="box_summary_top2.csv")
![](https://assets.st-note.com/img/1719796493299-i1Pio32Ex8.png)
# 上位3頭をBOXで全通り買った場合
evaluator.summarize_box_top_n(n=3, save_filename="box_summary_top3.csv")
![](https://assets.st-note.com/img/1719796515179-aJsFVjPmBs.png)
今後、機械学習モデルの精度を上げる実験をしていきますが、その際の成功/失敗の目安として、この指標を使うことができます。
このように、本シリーズでは、一度きりの「機械学習で競馬予測してみた」で終わるものではなく、本格的に運用できる競馬予想AIの作成を目指し、ソースコードを解説付きで公開しています。
ソースコードは下に進むとダウンロードできますので、解凍してお使いください。
■動画
■ソースコードの実行環境
・OS: Mac OS 14.2.1
・言語: Python 3.11.4
・エディタ: VSCode 1.87.0
VSCodeやPythonのインストール方法については様々な記事で紹介されているので、適宜参照して設定してください。
また、以下のライブラリを使用しています。(詳細はソースコード中のrequirements.txt参照)
beautifulsoup4==4.12.3
lightgbm==4.3.0
matplotlib==3.8.2
pandas==2.2.2
PyYAML==6.0.1
selenium==4.21.0
tqdm==4.66.1
webdriver_manager==4.0.1
■ディレクトリ構成
今回のコードに関わる部分のディレクトリ構成です。(詳細はソースコード中のREADME.md参照)
.
├── common
│ ├── data
│ └── src
└── v3_0_0
├── data
│ ├── 01_preprocessed ・・・前処理済みのデータを保存するディレクトリ
│ │ └── return_tables.pickle
│ ├── 02_features
│ ├── 03_train ・・・学習結果を保存するディレクトリ
│ │ ├── model.pkl ・・・学習済みモデル
│ │ ├── evaluation.csv ・・・検証データに対する予測結果
│ │ └── importance.png ・・・特徴量重要度
│ └── 04_evaluation ・・・検証データに対する精度評価結果を保存するディレクトリ
│ ├── box_summary_top1.pkl ・・・各レース予測スコア上位1頭賭けた場合の的中率・回収率
│ ├── box_summary_top2.pkl ・・・各レース予測スコア上位2頭賭けた場合の的中率・回収率
│ └── box_summary_top3.pkl ・・・各レース予測スコア上位3頭賭けた場合の的中率・回収率
└── src
├── dev.ipynb ・・・開発用notebook
├── main.ipynb ・・・コードを実行するnotebook
├── train.py ・・・学習処理を行うクラスを定義
└── evaluation.py ・・・モデルの精度評価を行うクラスを定義
■筆者のプロフィール
東京大学大学院卒業後、データサイエンティストとしてWEBマーケティング調査会社でWEB上の消費者行動ログ分析などを経験。
現在は、大手IT系事業会社で、転職サイトのレコメンドシステムの開発を行っています。
定期購読をすると、今月更新される記事に加えて#1〜#4の記事が980円で全て読めるので大変お得です。
ソースコード
この記事が気に入ったらチップで応援してみませんか?