競艇AI開発日記 第22話|「イン逃げ有利・不利」をどう定義する? スリットから考えてみる

前回の第21話では、これまで作ってきた予想ロジックとは別に、「スリットの状況からイン逃げが有利なのか、不利なのかを判断できないか」という新しい方向で、ボートレースAIの開発を考え始めました。

ただ、ここで一つ問題があります。

AIを作るためには、まずAIに何を学習させるのかを決めなければいけません。

今回の目的は、

「このレースは1号艇が1着になる」

と予測することではありません。

あくまで、

「このスリット隊形なら、1号艇がイン逃げを決めるうえで有利なのか、不利なのか」

を判断することです。

そこで今回は、AIを作る前に、

「そもそも、イン逃げ不利とはどんなスリットなのか?」

を自分なりに考えてみることにしました。


まず「イン逃げ有利」を定義するのが難しい

ボートレースでは、基本的に1号艇が有利です。

特にインコースからスタートする1号艇は、最初から大きな優位性を持っています。

そのため、普通に考えれば、

「1号艇が有利になるスリット」

はかなり多くなります。

しかし、ここでAIの教師データを作ろうとすると、少し困ったことがあります。

「1号艇が有利」となる条件を一つひとつ定義していくと、

  • 1号艇が少し速ければ有利
  • 内側に他艇がいなければ有利
  • 外艇が遅ければ有利
  • ST差が大きければ有利

……と、かなり多くのパターンが考えられます。

しかも、1号艇が基本的に優位だからこそ、

「どこまでをイン逃げ有利とするのか」

を明確に線引きするのが難しい。

そこで、今回は逆から考えてみることにしました。


「イン逃げ不利」な状態を探してみる

考え方を変えて、

「1号艇が有利になる条件」ではなく、「1号艇の優位性が崩れる条件」を探す。

ことにしました。

理由はシンプルです。

イン逃げ有利なケースは、そもそもボートレースの構造上かなり多い。

一方で、

「イン逃げが崩れるようなスリット」

は、そこまで多くないはずです。

つまり、

まず「イン逃げ不利となるパターン」を定義する。
それ以外を「イン逃げ有利」とする。

この方が、今回のAIの目的には合っているのではないかと考えました。

もちろん、この考え方が本当に正しいかは分かりません。

あくまで、

自分の競艇経験から作った最初の仮説

です。

ここから実際のデータに当てて、検証していきます。


では、どうなれば「イン逃げ不利」なのか?

ここからが今回の一番重要な部分です。

イン逃げが崩れる展開を考えると、まず思い浮かぶのが、

外側の艇が1号艇まで攻め込んでくるケース

です。

例えば4号艇がスタートで、

④ > ③
④ > ②

となっていたとします。

4号艇が3号艇より速く、さらに2号艇よりも速い。

この場合、4号艇は3号艇だけではなく、その内側にいる2号艇も先行しています。

つまり、

4号艇が内側の艇をまとめて突破できる状態

になっています。

ここが今回の考え方のポイントです。


「1号艇より速い」だけでは足りない

最初は、

「外艇が1号艇より速ければ、イン逃げ不利なのでは?」

とも考えられます。

しかし、それだけでは不十分です。

例えば、

① 0.20
② 0.18
③ 0.25
④ 0.15

だったとします。

4号艇は1号艇より速い。

しかし、2号艇も4号艇より速い。

この場合、

④ > ①

だからといって、4号艇がそのまま1号艇まで攻め込めるわけではありません。

途中にいる2号艇に引っかかる可能性があります。

そこで、

外艇が1号艇まで攻め込むには、その外艇より内側にいる1号艇以外の艇をすべて先行している必要がある

と考えました。


外側から内側を見る

この考え方で、外艇と内側の艇の関係を見ていきます。

例えば4号艇なら、

4号艇 → 3号艇
4号艇 → 2号艇

です。

さらに1号艇との関係も確認します。

つまり、

4号艇が3号艇、2号艇を突破し、さらに1号艇まで攻め込める状態

になっているかを見るわけです。

同じように、

5号艇なら、

5号艇 → 4号艇
5号艇 → 3号艇
5号艇 → 2号艇

そして、

6号艇なら、

6号艇 → 5号艇
6号艇 → 4号艇
6号艇 → 3号艇
6号艇 → 2号艇

という形になります。

ここで重要なのは、

「一つでも内側の艇に勝っているか」ではなく、「内側の艇をすべて突破できるか」

ということです。


まずは「2~6号艇」を外艇として考える

今回の仮説では、

2~6号艇をすべて外艇として扱う

ことにしました。

2号艇についても、

「2号艇は外からの攻めではないのでは?」

という考え方はあります。

ただ、今回の目的は「誰が攻めるのか」を予測することではありません。

あくまで、

1号艇のイン逃げ優位性が崩れる可能性があるスリットかどうか

を見ることが目的です。

そのため、2号艇も含めて、

1号艇以外のすべての艇を外艇として扱う

ことにしました。


「先行」の基準をどうするか?

ここも決めなければいけません。

単純に、

少しでも速ければ先行

としてしまうと、ほとんど差がなくても「攻められる」と判定されてしまいます。

そこで今回は、

0.05秒以上

という仮の基準を置きました。

例えば、

4号艇が0.15秒、3号艇が0.20秒なら、

4号艇の方が0.05秒速い

ので、4号艇は3号艇に対して先行しているとします。

同様に、内側にいる複数の艇に対して0.05秒以上速ければ、

その外艇は内側の艇を突破できる可能性がある

と考えます。

ただし、この「0.05秒」という数字については、今回はまだ深く掘り下げません。

あくまで、

最初の仮説として設定した基準

です。

実際にデータに当ててみて、妥当なのか確認する必要があります。


そして、1号艇との関係も見る

内側艇をすべて先行していても、

1号艇そのものに対して遅ければ、1号艇まで攻め込めません。

そこで最後に、

その外艇が1号艇と同体以上なのか

も条件に加えます。

つまり、今回の仮ルールでは、

外艇が、

  1. 自分より内側にいる1号艇以外の全艇より0.05秒以上速い
  2. さらに1号艇と同体以上

この2つを満たした場合、

「その外艇は1号艇まで攻められる可能性がある」

と考えます。


「イン逃げ不利」の仮ルール

ここまでをまとめると、今回のVer.1では、

外艇

2~6号艇

攻められる外艇

その外艇より内側にいる、

1号艇以外のすべての艇

に対して、

0.05秒以上先行している

さらに、

1号艇と同体以上

であること。

そして、

この条件を満たす外艇が1艇でも存在したら「イン逃げ不利」

とします。

逆に、

条件を満たす外艇が1艇もいなければ「イン逃げ有利」

とします。


ここで、あえて「不利」から考えた理由

今回この順番で考えたのには、もう一つ理由があります。

今回のAIでは、

「イン逃げ有利」か「イン逃げ不利」か

の2択にしたいと考えています。

しかし、先ほども書いたように、ボートレースでは1号艇が基本的に有利です。

そのため、

「有利な条件」を細かく定義していくと、かなり複雑になってしまいます。

一方で、

「1号艇の優位性が崩れる条件」

なら、ある程度限定できるのではないか。

そう考えました。

そこで、

イン逃げ不利となる条件をまず定義し、そこに当てはまらないレースをイン逃げ有利とする。

という考え方にしています。

この方法なら、最終的にAIへ与える正解ラベルも、

イン逃げ有利 / イン逃げ不利

の2つに整理できます。


ただし、まだこれは「正解」ではない

ここはかなり重要です。

今回決めたルールは、

完成した正解ラベルではありません。

あくまで、

自分たちが現時点で考えたVer.1の仮説

です。

例えば、

  • 0.05秒という基準は本当に妥当なのか
  • 1号艇と「同体」をどう扱うのか
  • 複数の外艇が攻められる場合はどう考えるのか
  • 実際の1号艇の1着率とどの程度関係するのか

など、まだ検証しなければいけないことがあります。

そのため、

ルールを決めたからすぐAIを作る

ということはしません。

まずは過去のレースデータに、このルールを適用してみます。


次は「本当にこの考え方でいいのか」をデータで確認する

ここから先は、いよいよデータの出番です。

過去のレースについて、

実際のST

今回の仮ルールを適用

イン逃げ有利 / 不利

に分類します。

そのうえで、

実際の1号艇の結果と比べてみる。

もし、

「イン逃げ有利」と判定したレースでは1号艇が高い割合で1着になり、

「イン逃げ不利」と判定したレースでは1号艇の1着率が低くなる、

のであれば、

今回作ったルールには一定の意味がありそうです。

逆に、ほとんど差がなければ、

そもそもの定義から考え直す必要があります。

どちらの結果になっても構いません。

今回やりたいのは、

自分の競艇経験から作った仮説を、実際のデータにぶつけてみること

だからです。


今回のまとめ

今回は、AIのモデルを作るところまでは進んでいません。

むしろ、その前段階として、

「イン逃げ不利とは何なのか?」

を自分なりに定義してみました。

考え方としては、

外艇が内側の艇をすべて突破できる状態

に注目します。

そのうえで、

外艇が内側にいる1号艇以外の全艇より0.05秒以上速く、さらに1号艇と同体以上

であれば、

その外艇は1号艇まで攻められる可能性がある

と考えます。

そして、

そのような外艇が1艇でも存在すれば「イン逃げ不利」

とします。

まだ仮説段階ですが、ここまで決めることで、ようやく次のステップに進めそうです。

次回は、この仮ルールを実際の過去レースに当てはめて、

「本当にイン逃げ不利と判定したレースでは、1号艇の1着率が下がるのか?」

を確認してみたいと思います。

AIを作る前に、まずは自分たちが考えた「イン逃げ不利」という概念が、データ上でも意味を持つのかを確かめてみます。


合わせて読みたい

競艇AI開発日記 第21話|スタート予測を「当てる」から「予想に使う」へ

前回は、スタート順位そのものを正確に予測することを目的にするのではなく、スタート予測を既存の予想にどう活用するかという方向へ、AI開発の考え方を変えました。

その中で、

「どんなスリットなら1号艇が有利なのか?」

を考えていくことになり、今回の「イン逃げ有利・不利」の定義につながっています。

今回の記事では、その先の段階として、AIに何を正解として学習させるのかを考えていきます。

競艇AI開発日記 第21話|スタート予測を「当てる」から「予想に使う」へ

競艇AI開発日記 第20話|過去のスタート特性から、6艇のスタートを予測してみる

今回の検討につながる、これまでのスタート予測の検証についてはこちら。

選手ごとの過去のスタート特性を使って、6艇のスタートをどこまで予測できるのかを試した内容です。

競艇AI開発日記 第20話|過去のスタート特性から、6艇のスタートを予測してみる


競艇AI開発日記

競艇AI開発日記 第21話|スタート予測を「当てる」から「予想に使う」へ

競艇AI開発日記一覧

競艇AI開発日記 第23話|「イン逃げ不利」の仮説をデータで検証してみました

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