初めに
題名の通り、競馬予想プログラムソフト開発をすべてPythonでやったろ!というものです。
前提
基本はPython(ver 3.10.5)を使って開発していきます。実際の完成イメージはWebアプリ形式を想定しています。できることとしては、データの収集~モデル作成~モデルの分析~競馬予想モデルの運用~モデル成績の確認あたりかなと
個人開発であり、しがないSE職であることから、結構なローペースで開発が進んでいきます。特にセカンドモデル以降の開発がカオスになるかと、、、
使ってみたいよって方がいらっしゃることを願って地道に開発進めて行きます。
ロードマップ
以下の順序で開発を進めて行きます。
- 競馬データの収集
- データ確認&簡易分析
- ファーストモデル開発
- データ分析基盤の開発
- セカンドモデル以降の開発
- モデル運用基盤の開発
- 競馬実践(予想動画公開予定)
宣伝
Youtubeチャンネル
YouTubeしてます!YouTubeではゆっくり解説として、競馬予想ソフト開発の制作過程を投稿しています。
ゆっくりと作る競馬予想ソフト開発の再生リスト
競馬予想ソフトのソースコード
競馬予想ソフトのプログラムは誰でも使えるように公開しますが、一部は有料となっています。
以下のサービスでコードを販売していますので、自分も作ってみたい!という方がいらっしゃれば一緒に開発していきましょう!!
開発の背景・目的
背景
かねてより、競馬予想を機械学習を用いてやってみたいと思っていましたが、幾度も手を出しては上手なモデルが出来ずに挫折を繰り返してきました。
しかし、一度やったら最後までやってみたいという思いがぬぐい切れず、、、
やるなら挫折しない形でやろうと、サイトの立ち上げからYouTubeチャンネルで解説動画の投稿まで行い、進捗や何をやったかなどを備忘録的に残していきます。
最終的には予想動画の投稿を目指したいと思っています。
目的
本ソフトでは、主に2つの機能を有したものを作ります。
- モデル分析機能
- モデル運用機能
モデル分析機能では、作成したモデルの性能を既存のモデルと比較できる機能になります。
競馬予想プログラムの開発を行ってきた人であれば、「自分が作ったこのモデルはなにがしたかったのか?」や「いろいろ特徴量やハイパーパラメータを変更したけど、今なにをしているのかわからない…」などの状態に陥ったことが一度でもあるかと思います。
そして、最終的には、どう頑張っても回収率が100%を超えず、開発を断念…という残念な結末を迎えた人も少なくないと思います。
そのため、本ソフトのモデル分析機能では、このような状態に陥らないために、自分が作ったモデルは何を目的として作ったのかやどのような効果を期待して前回のモデルから改編したのかをしっかりと把握できることを目的としています。(みんなやってるのかもしれませんが…)
よって、モデル分析機能というのは、そのようなモデルの概要だったり、既存モデルとの比較ができるような機能を持つことを最低限目指します。
次に、モデル運用機能では、モデル分析を通して採用したものを使って競馬予想を行うものを想定しています。
良いモデルが出来れば、それを使って競馬予想してみたいのが普通の感覚だと思います。毎週推論するプログラムを手動で動かすのも面倒なので、WEBアプリとして作ってしまおうというのが目的です。
主に、Web画面上からボタンを押せば、対象レースの予想結果を表示してくれるものを作ります。
そもそも有用なモデルができないと、この機能を作るモチベが起きないため、ロードマップ1から5まで出来てから取り組もうと思います。
※ここで回収率100%を超える見込みがあると嬉しいですが、とりあえず運用機能までは作ります。
競馬予想ソフトの設計
取り入れたい機能一覧
モデル分析画面機能一覧
基礎分析
モデルリストで選択したモデルから以下の情報を馬券別に参照できる
- 回収率グラフ
- 人気別ベット回数の表
- 回収率、的中率の早見表
また、train, valid, testと3種類の結果で分かれていること
オッズグラフスコア
馬券別に以下を確認できること
- モデルリストから複数のモデルを選択して、OGSの確認・比較ができる
- モデルリストの選択では、ベースラインモデルと比較対象の複数モデルを選択できる
また、train, valid, testと3種類の結果で分かれていること
モデル管理画面機能一覧
モデルのインポート
モデル分析管理クラスからエクスポートしたモデル情報ファイルをインポートしてDBへ登録する。
以下の情報を入力してインポートする
- モデル情報ファイル
- モデル名
- モデルの説明
- メモ
モデルリスト
インポートしたモデルを一覧として参照でき、以下の機能を持つ
- モデル情報の参照:モーダルかなにかでモデルの内容を確認できる
- モデルの削除:削除ボタンからインポートしたモデルの削除ができる。DBからレコードを消す
- モデルの更新:モデル情報ファイルに変更があった場合、再度インポートして情報の更新ができる