前回は、Python学習の題材として競艇を選び、「自分の予想をPythonで再現できないかな」と思ったところまで書きました。
今回は、その最初の予想ロジック「Ver.1.0」を作ったときの話です。
最初から完璧なものを作るつもりはありませんでした
今でこそ「競艇AI」なんて言葉を使っていますが、この頃はそんなことは全く考えていませんでした。
まずは、自分が普段の予想で一番見ている項目だけを使って、それっぽいものを作ってみよう。
そんなスタートです。
最初に選んだのは、
- コース別成績
- コース別スタート(ST)
この2つでした。
なぜスタートを重視したのか
競艇を始めた頃は、級別や勝率が高い選手を中心に予想していました。
もちろん、その通りに決まるレースもあります。
でも、そうならないレースも意外と多い。
レースを見続けるうちに、一つ気付いたことがありました。
スタートです。
踏み込める選手。
安定して早いスタートを切る選手。
スタートから一気に攻めていく選手。
そういう違いが、少しずつ見えるようになってきました。
だから、自分の中では「スタートはレースを大きく左右する要素」という感覚がありました。
Ver.1.0でも、ここは最初から外せない項目でした。
思ったより単純ではありませんでした
最初は、条件分岐だけでロジックを作ろうとしていました。
「この条件なら順位を上げる。」
「この条件なら下げる。」
そんなイメージです。
でも、実際に作ってみるとうまくいきません。
レースは、そんなに単純ではありませんでした。
そこで考え方を変えます。
各項目を点数化して、最後に合計点で順位を決める方式です。
さらに、一部は条件分岐も残しながら、
最終的には**「条件分岐+重み付け」**という形に落ち着きました。
重みについても感覚だけでは決めず、過去レースのデータを見ながら少しずつ調整していきました。
AIと話しているうちに、自分の予想が整理されていった
この頃のAIは、コードを書いてもらうだけの存在ではありませんでした。
「どういうロジックにしたいの?」
「何を重視しているの?」
そんなやり取りを何度も繰り返していました。
最初は感覚で答えていたことも、
説明しているうちに、
「自分って、こういう順番で予想していたんだ。」
と少しずつ整理されていく感覚がありました。
今振り返ると、Ver.1.0を作っていたというより、自分の予想を言葉にする作業をしていたのかもしれません。
最初から「全部任せる」つもりはありませんでした
もう一つ、最初から決めていたことがあります。
それは、最後の判断は人間がするということです。
自分の予想スタイルは、もともと的中率よりも期待値を重視しています。
堅い買い目なら、
「このオッズなら見送ろう。」
と判断することもあります。
逆に穴の買い目なら、
「本当にこの展開になりそうか。」
をもう一度考えます。
だから、プログラムには買い目候補を出してもらい、最後に買うかどうかは自分が決める。
最初からそんな使い方を考えていました。
リアルタイムの風や展示情報まで扱おうとすると、開発も複雑になります。
それなら、機械に向いているところだけ任せよう。
この頃から、そんな考え方でした。
意外と、それっぽいものができました
Pythonを始めて約3か月。
開発環境は、
- Pythonista
- Googleスプレッドシート
- AI
全部スマホです。
翌日の出走表をCSVにして、
Pythonistaで読み込み、
買い目候補まで表示される。
その一連の流れが動いたときは、
「意外とそれっぽいものができたな。」
そんな感覚でした。
正直、この時点では当たるかどうかなんて分かりません。
でも、自分で考えたロジックがちゃんと動いている。
それだけで十分嬉しかったのを覚えています。
明日試すのが楽しみでした
Ver.1.0が完成した日の夜。
考えていたことは、とてもシンプルです。
「明日試すの楽しみだな。」
それだけでした(笑)
この時はまだ、
このロジックを何百レースも検証することになるとも、
自分でも気付いていなかった予想のクセが見えてくるとも思っていません。
次回は、Ver.1.0を実際のレースで使い始めた頃の話を書こうと思います。
関連記事
- 競艇AI開発日記 第1話|自分の予想をPythonで再現してみようと思った話
このシリーズの第1話です。Python学習の題材として競艇を選んだ理由や、このシリーズが始まったきっかけを書いています。 - なぜ35歳・未経験でPython学習を始めたのか
Python学習を始めた理由や、学習を始めるまでの経緯を書いています。 - 改善は理解の先にあると気づいた話
ロジックを作るだけではなく、「なぜそうなるのか」を考えるようになったきっかけを書いた記事です。
