競艇で試したこと
競艇で実装した戦略を紹介します。 1着率を正規化 まず試したのはそれぞれの選手の1着率を全試合から計算してそれをその試合ごとに正規化する方法です。 期待値はオッズと確率の積で表せるので、確率を計算することで相対的にどの券 […]
Filter by Category
競艇で実装した戦略を紹介します。 1着率を正規化 まず試したのはそれぞれの選手の1着率を全試合から計算してそれをその試合ごとに正規化する方法です。 期待値はオッズと確率の積で表せるので、確率を計算することで相対的にどの券 […]
Apple silicon Macでmxnetを使えるようになるまで エラーが発生したのでpip install mxnet-mkl/mxnet-cu90mkl --preしたところ以下のエラーが発生 エラーの中に上の内 […]
Gitで別のブランチから特定のファイルorディレクトリをチェックアウト 複数人での開発や細かくブランチを作って開発していると、別ブランチの一部分だけを今のブランチに取り込みたいということがあります。マージだと取り込みたく […]
GitHubのイシューとPyCharmのタスクを連携 GitHubのイシューとPyCharmのタスクを連携させて、GitHubのイシューをPyCharmに表示させる設定方法です。画面を切り替えなくても追加されたGitHu […]
リモートのファイルをローカルのデスクトップにコピー リモートサーバーにSSH鍵でログインして、ファイルをローカルのマシンにコピーする方法です。今回はリモートサーバーにダンプしたsqlファイルをデスクトップにコピーします。 […]
サイトのカラーリングを青と黄色のウクライナカラーにしました ロシアによるウクライナ侵攻の早期停戦を願ってサイトのカラーリングをウクライナ国旗をイメージした青と黄色のウクライナカラーにしました
2021年に最も読まれた記事ランキング 早いもので今年も残すところあとわずかとなりました。今年のまとめとして2021年に最も読まれたブログをランキング形式で発表します。 第5位 第4位 第3位 第2位 第1位 1位、2位 […]
dockerignoreで転送に時間がかかるファイルを除外 数GBを超えるSQLiteやメディアデータを含むプロジェクトをDocker Composeで起動する際に、ファイルの転送に時間がかかってしまいビルドがなかなか終 […]
Docker Composeで起動したコンテナ内に入る Docker Composeで起動したコンテナ内に入って処理やコマンドを実行する方法です。 コンテナ内に入るコマンド docker-compose up -dでコン […]
M1 ProチップのMacBook Proを新調したので開発環境・設定をメモ(git) 14インチのMacBook Proを新調したので開発環境の設定をします。以前はPythonのバージョンやパッケージを管理するためにp […]
GitHub ActionsでAmazon Lightsailに自動でデプロイする方法 本記事ではGitHub上のリポジトリのmainブランチに変更(コミットやマージなど)があった際に、サーバー側からgit pullを実 […]
生産効率を上げる方法について筆者が利用している環境を紹介する。前提として、生産効率を高める最も単純な方法はマウスを使わないことだ。したがって、マウスを使わない環境を整備することがまず求められる。次に導入する4つそれぞれの […]
競艇で実装した戦略を紹介します。
まず試したのはそれぞれの選手の1着率を全試合から計算してそれをその試合ごとに正規化する方法です。 期待値はオッズと確率の積で表せるので、確率を計算することで相対的にどの券が得なのかわかります。
この結果、確定オッズではそこそこの成績になりましたが、最終表示オッズでは全く上手く行きませんでした。
上の段階では確率自体それほど優れたものではありませんが、オッズの予測もまた改善の余地があるので最終表示オッズから確定オッズの予測に着手しました。
どのような分布になっているのか調べるために、散布図をプロットしたところある程度相関性がありそうだったので単回帰を選択しました。 これにより、最終表示オッズでのバックテストは少し改善されました。
確率予測が単純なモデルで精度がそれほど良くないので、NNによるランク学習を実装しました。 ランク学習は順位を予測する手法なので、まさに競艇に合っていると思いました。
この結果、訓練データでは右肩上がりの優れたモデルが出来ましたが、テストデータでは右肩下がりのモデルが出来ました。 訓練データでは上手く行っているので、ロバスト性を高めようと頑張りましたが結局うまく行くことはありませんでした。
ランク学習での出力はそのモデルの自信度であって確率ではないので、キャリブレーションの一手法であるtemperature Scalingを試しました。 結果はむしろ劣化しました。確定オッズでも右肩下がりになりました。
temperature scalingの記事はいくつか読みましたが、Tが固定値なのか、入力値ごとにTを変えるのかよくわかりませんでした。 後者で実装したが上手く行かないことがわかりました。
レーティングをすることで選手の強さを可視化できると考えてtrue skillを実装しました。これ自体は非常にすぐれた指標になったものの、未来の勝率を予測するものではないことが分かりました。 過去の勝率はレートから高精度で説明可能ですが、そのレートだからといって未来の勝率がそうなるわけではないということです。
以上のそれぞれの手法に対して利益が最大化されるようにパラメータ最適化しました。
群馬県でPythonを使ったAIやソフトウェアを開発している株式会社ファントムが運営しています。