競艇AI開発日記 第25話|平均STに「ばらつき」を加えれば、予測は良くなる?

前回は、「イン逃げ有利・不利」を予測するために、レース前に使える材料を探しました。

その中で注目したのが、選手ごとの平均STです。

選手が普段どれくらいのスタートをするのかを数字にできれば、1号艇と外艇のスタートを比較する材料になるかもしれません。

ただ、平均STを見ているうちに、一つ気になることがありました。

平均値だけでは、その選手のスタートが安定しているのか分からない。

例えば、平均STが0.15秒の選手がいたとしても、

毎回0.15秒前後でスタートする選手なのか、

0.10秒のときもあれば0.20秒のときもある選手なのか、

平均値だけでは区別できません。

そこで今回は、平均STに加えて、STの「ばらつき」も考えてみることにしました。

「速い」だけではなく「安定している」も見たい

今回、ばらつきを表す数字として考えたのが標準偏差です。

平均STが速い選手でも、スタートのばらつきが大きければ、毎回同じようなスタートをするとは限りません。

逆に、平均STが速く、ばらつきも小さければ、

「速いスタートを比較的安定して出す選手」

と考えられるかもしれません。

もちろん、実際のスタートがそんなに単純に説明できるとは思っていません。

それでも、

「平均ST+ばらつき」

まで数字にできれば、平均STだけを見るより選手のスタート特性を表現できるのではないかと考えました。

もう一つ理由があります。

将来的には、

「この選手は、このくらいのSTをこのくらいの確率で出しそう」

というところまで表現できれば、その情報を使って、

「外艇が1号艇より速くスタートする確率」

さらに進めば、

「どんなスリット隊形になる確率が高いのか」

まで計算できるのではないかと考えていました。

そのためにも、まずはSTのばらつきを調べてみることにしました。

そもそもSTはどんな分布をしている?

ここで一度、少し立ち止まりました。

標準偏差を使うことを考えているなら、

そもそもSTのデータはどんな分布になっているんだろう?

という疑問が出てきたからです。

そこで、過去のSTデータを使って全体の分布を確認しました。

約5,760件のデータを調べると、

  • 平均:約0.178秒
  • 中央値:約0.170秒
  • 平均の方が中央値より大きい
  • 右側に長い分布になっている

という特徴がありました。

正規分布なら計算しやすそうだな、くらいのイメージでした。

実際に調べてみると、STは正規分布とは言いにくく、右側に長い分布になっていました。

ただ、ここで「ではSTは何分布なのか?」を突き詰めることが今回の目的ではありません。

選手のSTを確率として扱う方法を考えるために、まずデータの特徴を確認した、という位置づけです。

コースによってもSTは違う

さらにコース別にも確認してみました。

例えば平均STは、

  • 1コース:約0.169秒
  • 2コース:約0.175秒
  • 3コース:約0.171秒
  • 4コース:約0.176秒
  • 5コース:約0.182秒
  • 6コース:約0.196秒

となっていました。

外側のコースほど平均STが遅くなる傾向があり、ばらつきも大きくなっています。

このあたりを見ると、

「選手の平均ST」だけではなく、「どのコースでのSTなのか」も重要

ということが改めて分かります。

実際、今回の分析でも「選手×コース」という単位で見ています。

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

選手×コースごとのデータ数は、それほど多くありません。

今回のデータでは、1つの選手×コースの組み合わせあたり、平均すると約4回程度でした。

4回程度のデータから、その選手のSTの分布を細かく推定するのは難しそうです。

平均STを計算することと、個人のST分布を推定することでは、必要なデータ量がかなり違う。

この点も今回の分析で意識するようになりました。

「何秒でスタートするか」より「1号艇より速いか」

STの分布を調べていく中で、もう一つ考え方が変わってきました。

今回予測したいのは、

「外艇が何秒でスタートするか」

ではありません。

最終的に重要なのは、

外艇が1号艇より先行できるかどうか

です。

そう考えると、選手それぞれのSTそのものより、

1号艇と外艇のSTの差

を見る方が重要なのではないかと思いました。

そこで、

外艇のST − 1号艇のST

という形でST差を調べました。

すると、外艇が1号艇より速かったケースは約41.5%。

さらに、

外艇が1号艇より0.05秒以上速かったケースは約21.1%

でした。

「外艇の方が速い」というケース自体は、思っていたより多いかもしれません。

ただ、数字を見て、

「0.05秒ならこれで決まりだ」

と考えたわけではありません。

実際のデータでは、

こんな感じなんだな

というくらいの受け止めでした。

この0.05秒という数字については、以前検証した「イン逃げ不利」の判定でも使っていたため、今回はその条件を使って確率を考えてみることにしました。

平均STだけと、平均ST+SDを比較してみる

ここまで来たところで、実際に検証してみました。

知りたかったのは、

平均STだけで考えるより、標準偏差も加えた方が「外艇が1号艇より0.05秒以上速くなる確率」をうまく予測できるのか?

ということです。

そこで、同じ3,804組のデータを使って、

A:平均STだけ

と、

B:平均ST+標準偏差

を比較しました。

結果はこうなりました。

平均STのみ

予測確率:31.0%

AUC:0.584

Brier Score:0.183

平均ST+SD

予測確率:28.4%

AUC:0.582

Brier Score:0.187

AUC:予測した確率を使って、実際に「外艇が1号艇より0.05秒以上速くなったケース」と「そうでないケース」をどれくらい区別できているかを見る指標です。一般的には1.0に近いほど区別する力が高く、0.5前後ならランダムに近い状態です。

Brier Score:予測した確率と実際の結果のズレを測る指標です。0に近いほど、予測確率と実際の結果のズレが小さいことを意味します。

結果を見ると、標準偏差を追加しても予測性能は改善しませんでした。

むしろ、

  • AUCは平均STのみがわずかに高い
  • Brier Scoreも平均STのみの方が良い

という結果です。

つまり今回の検証では、

「平均STに標準偏差を追加すれば、予測が良くなる」とは確認できませんでした。

「SDがダメ」だけでは終わらない

この結果を見たとき、

「標準偏差を入れても意味がなかったな」

というだけではありませんでした。

むしろ、

ここまで差が出ないということは、そもそもこの方法で確率を出そうとしていること自体が間違っている可能性があるのでは?

と考えました。

もちろん、今回の方法だけでそう結論づけることはできません。

標準偏差の問題かもしれません。

選手×コースのデータ数が少ないことが原因かもしれません。

確率の計算方法そのものに問題があるのかもしれません。

まだ分かりません。

ただ、

「平均STに何かを足せば、スリットの確率を出せる」

と簡単に考えるのは、少し違うのかもしれない。

そんな感覚になってきました。

そもそも、艇は独立してスタートしているのか?

ここで、もう一度競艇のスタートについて考えてみました。

今回やりたいことは、

「選手Aは何秒くらい」

「選手Bは何秒くらい」

と、それぞれのSTを予測することではありません。

1号艇に対して外艇が先行できるかどうかを知りたい。

そう考えると、

「それぞれの選手が独立してスタートする」

という前提で考えていいのだろうか?

という疑問が出てきました。

以前、YouTubeで、

スタートの速い選手がいるレースでは、隣の艇のスタートも速くなる傾向がある

という話を見たこともあります。

もし本当にそうなら、

選手それぞれのSTだけを見るのではなく、

「同じレースの中で、艇同士のSTがどう関係しているのか」

を見る必要があるかもしれません。

そこで次は、実際のデータを使って、

艇同士のSTに相関があるのか

を調べてみることにしました。

今回分かったこと

今回の分析で、少しずつ見えてきたことがあります。

  • 平均STだけでは、スタートの安定性までは分からない
  • STにはばらつきがあり、単純な正規分布とは言いにくい
  • コースによってSTの水準やばらつきが違う
  • 外艇が1号艇より速いケースは約41.5%
  • 0.05秒以上速いケースは約21.1%
  • 平均STだけでも一定の情報は持っている
  • ただし、標準偏差を追加しても今回の検証では改善しなかった

そして一番大きかったのは、

「選手ごとのSTを予測して、それを組み合わせればいい」という考え方そのものを、一度見直したこと

でした。

STの数字そのものではなく、

艇と艇の関係を見る必要があるのではないか。

次は、そこを実際のデータで確認してみます。

あわせて読みたい

競艇AI開発日記

競艇AI開発日記 第24話|「イン逃げ有利・不利」を予測するための材料を探す

競艇AI開発日記

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