競艇AI開発日記

Python初心者が、自分の予想をAIにしていくまで

「自分の競艇予想を、Pythonで再現できないかな?」

そんなところから始まったのが、この競艇AI開発日記です。

Pythonを学び始めた初心者が、自分で考えていた競艇予想のロジックをPythonで形にし、そこからデータ分析や機械学習を使ったAI開発へ進んでいく過程を記録しています。

最初からAIを作る知識があったわけではありません。

実際に開発を進めてみると、

「思ったよりうまくいかない」

「この考え方で合っているのかな?」

「数字を増やせば良くなると思っていたけど、そうでもない」

ということが何度も出てきました。

このシリーズでは、そうした「仮説→検証→違和感→次の試行錯誤」を、その時点で考えていたことと一緒に残しています。

完成したAIを紹介するシリーズではありません。

現在も開発途中です。

「Python初心者が、AI開発を進めていくとどうなるのか」

その過程そのものを楽しんでもらえればと思っています。

現在地

現在、第15話まで公開中です。

第1話では、自分の予想ロジックをPythonで再現するところからスタートしました。

そこから一度は「意外とそれっぽいものができた」と感じながらも、実際に使っていく中で違和感が出てきます。

その違和感をきっかけに、ロジックを修正するだけではなく、そもそもの前提を見直すことに。

そして最終的には、スリット判定AIを作るための教師データ作成、データ分析、機械学習へと進んでいきました。

現在は、AIにどんな情報を渡せばスリットを予測できるのかを探している段階です。

最新話

競艇AI開発日記 第17話|ST中央値を試してみても、やっぱり大きな変化はありませんでした

※シリーズは現在も継続中です。今後の開発結果によって、内容や方向性も変わっていく予定です。

競艇AI開発日記の流れ

このシリーズは、現在までの開発過程を大きく4つのPhaseに分けています。

※Phaseは、このページでシリーズ全体の流れを分かりやすくするために設定した編集上の区分です。

Phase 1|予想ロジックをPythonで形にする

第1話〜第4話

まずは、自分がこれまで競艇予想で使っていた考え方をPythonで再現するところから始めました。

「Pythonで予想ロジックを作る」と言っても、最初からきれいなプログラムが書けたわけではありません。

実際に形にしてみると、「意外とそれっぽいもの」ができました。

ところが、実戦で使ってみると少しずつ違和感が出てきます。

ここから、「作る」だけではなく「本当にこれでいいのかを確認する」という段階に入っていきました。

Phase 1の記事

競艇AI開発日記 第1話|自分の予想をPythonで再現してみようと思った話

競艇AI開発日記 第2話|Ver.1.0が完成。「意外とそれっぽいもの」ができた日

競艇AI開発日記 第3話|Ver.1.0を実戦投入。「これ、意外といけるかも」と思った日

競艇AI開発日記 第4話|「何かおかしい。」Ver.1.0に初めて違和感を覚えた日

Phase 2|ロジックを直す前に、前提を見直す

第5話〜第6話

第4話で感じた違和感をきっかけに、すぐにロジックを修正するのではなく、

「そもそも自分は何を予測しようとしているのか?」

という前提を見直していきました。

作ったものが思ったように動かないとき、すぐにコードを直すのではなく、一度立ち止まって考えてみる。

この段階が、その後のAI開発へ進むきっかけになっていきます。

Phase 2の記事

競艇AI開発日記 第5話|ロジックを直す前に、理解することが必要だった

競艇AI開発日記 第6話|ロジックを直す前に、前提を見直す必要があった

Phase 3|競艇AI開発へ進む

第7話〜第10話

ここから、いよいよスリット判定AIの開発へ進みます。

まずはAIに学習させるための教師データ作りからスタート。

そのデータを分析し、実際にAIへ学習させてみるところまで進みました。

ただ、ここでもすぐに精度が上がったわけではありません。

AIを作ることそのものだけではなく、

「AIをどう評価するのか」

や、

「特徴量を増やせば本当に良くなるのか」

といったことも、一つずつ試しながら学んでいきました。

Phase 3の記事

競艇AI開発日記 第7話|スリット判定AIへの第一歩。まずは教師データ作りから始めました

競艇AI開発日記 第8話|データを分析してみると、思ったより単純ではなかった

競艇AI開発日記 第9話|初めてのAI開発。最初に学んだのは「評価の仕方」でした

競艇AI開発日記 第10話|特徴量を増やせば精度は上がると思っていました

Phase 4|AIに何を渡すかを探す

第11話〜第15話

AIを実際に動かしてみると、次に考える必要が出てきたのが、

「そもそもAIに何を渡せばいいのか?」

という問題でした。

そこで、データを分析しながら、スリットを予測するために使えそうな特徴量を探していきます。

平均スタートを見たり、標準偏差を見たり。

そこからAIへ実際に特徴量を渡して、結果を確認します。

うまくいくものもあれば、思ったほど変化しないものもあります。

Accuracyが上がっても、手応えがなかったこともありました。

まだ「これを使えばいい」という答えが見つかったわけではありません。

現在も、試して、結果を見て、また考える。

そんな段階が続いています。

Phase 4の記事

競艇AI開発日記 第11話|AIに渡す情報をデータから探すことにしました

競艇AI開発日記 第12話|特徴量探しは、平均スタートから始めることにしました

競艇AI開発日記 第13話|平均スタートを分析してみると、それだけでは足りない気がしました

競艇AI開発日記 第14話|標準偏差を調べてみても、まだ答えは見つかりませんでした

競艇AI開発日記 第15話|Accuracyは上がったのに、手応えはありませんでした

競艇AI開発日記 第16話|STの速さを別の角度から見ても、あまり変わりませんでした

競艇AI開発日記 第17話|ST中央値を試してみても、やっぱり大きな変化はありませんでした

この先も続きます

ここまで読んでいただくと、

「じゃあ、結局どんなAIができたの?」

と思うかもしれません。

でも、まだ完成していません。

むしろ現在は、

「どうすればスリットをうまく表現できるのか」

を探している途中です。

これからも新しい特徴量を試したり、データの見方を変えたりしながら、開発を進めていきます。

もちろん、試した結果がうまくいくとは限りません。

それでも、

「仮説を立てる → データを見る → AIで試す → 結果を見る → また考える」

という過程そのものを、このブログに残していくつもりです。

最初から読むなら

このシリーズを初めて読む方は、第1話から順番に読むのがおすすめです。

最初は「自分の予想をPythonで再現してみる」というところから始まり、少しずつデータ分析やAI開発へ進んでいきます。

途中から読んでも内容は分かりますが、最初の「自分の予想をPythonで形にしてみたい」というところから追っていくと、現在の開発状況までの変化がより分かりやすいと思います。

第1話から読む

競艇AI開発日記 第1話|自分の予想をPythonで再現してみようと思った話

タイトルとURLをコピーしました