競艇AI開発日記 第29話|グループ全体ではなく1号艇を見る

前回まで、6艇のスタートにはある程度の「連動性」があるのではないかと考えて、選手同士の関係や、スロー・ダッシュのグループに分けた分析を進めてきました。

それまで自分は、6艇それぞれのスタートを見ていました。

そこから、

「もしかすると、艇ごとに見るよりも、レース全体の中で考えた方がいいのでは?」

と思い始めて、スローとダッシュというグループに分けてみることにしました。

ただ、実際にAIへ使える特徴量として考えてみると、まだ決め手になるようなものは見つかっていません。

そこで今回は、もう一度、今回の予測対象そのものに立ち返ってみることにしました。

「イン逃げ有利・不利を予測したいなら、1号艇を基準に見た方がいいのでは?」

という考え方です。

まずはスローとダッシュを比較してみる

これまでの分析では、

  • 1〜3号艇=スロー
  • 4〜6号艇=ダッシュ

というグループに分けていました。

これは、単純に「6艇を個別に見る」だけではなく、スタートの流れをグループとして捉えられないかと考えたためです。

例えば、

スロー全体が速いレースと、ダッシュ全体が速いレースでは、スタートの隊形にも違いが出るのでは?

そんなことを考えていました。

そこで、スローとダッシュのスタート差を使って、AIが「イン逃げ有利・不利」を判断する材料にならないか調べてみました。

ところが、結果はAUCで約0.508。

AUC 0.5はランダムに近い水準なので、これだけでは強い情報を持っているとは言いにくい結果です。

もちろん、0.508という数字だけで「グループ分けは意味がない」とまでは言えません。

ただ、

「これを特徴量として入れれば、予測が大きく良くなりそう」

という感覚にはなりませんでした。

そこで、別の見方を試してみることにしました。

AIから「1号艇との比較」を提案された

今回の予測対象は、

「イン逃げが有利なのか、不利なのか」

です。

そう考えると、スロー・ダッシュというグループ全体を見るよりも、

1号艇と他の艇を直接比較した方が分かりやすいのでは?

という考え方が出てきました。

この方向は、AIとの分析の中で出てきたものです。

例えば、

  • 1号艇と2号艇
  • 1号艇と3号艇
  • 1号艇と2・3号艇の平均
  • 1号艇と2・3号艇のうち速い方

といった比較です。

考えてみれば、これはかなり自然な発想です。

今回予測したいのは「イン逃げ有利・不利」なので、

1号艇より内側の艇はいません。

そのため、1号艇と2〜6号艇のスタート関係を見ることは、今回のテーマにかなり直接的です。

「グループ全体」から「1号艇との関係」へ。

ここで、見る場所を少し変えてみることにしました。

1号艇と3号艇の比較ではAUC 0.597

実際に検証してみると、少し気になる数字も出てきました。

時間で分けた検証では、

1号艇 vs 3号艇:AUC 0.597

という結果でした。

また、

1号艇 vs 2・3号艇の速い方:AUC 0.596

という結果も出ています。

これまで見ていたスロー・ダッシュの比較が約0.508だったことを考えると、数字としては上がっています。

AUC 0.5付近と0.6付近では、少なくとも「何も情報がない」とは少し違います。

なので、

「おっ、ちょっと上がったな」

という感じはありました。

ただ、ここで「これだ!」とはなりませんでした。

自分の感覚としては、

「これだけだと何とも言えないな」

という感じです。

劇的に何かが良くなったという印象はありませんでした。

AUCが上がっただけでは採用できない

ここで、以前から感じていたことがもう一度出てきました。

AIの分析をしていると、数字が少し良くなるだけで、

「この特徴量を入れた方がいいのでは?」

と思ってしまいます。

でも、今回の目的はAUCの数字を少しずつ上げることではありません。

最終的には、

イン逃げ有利・不利を予測して、実際の予想に使える形にしたい。

そのためには、AUCが0.597になったというだけでは、採用する理由としては弱いと感じました。

もちろん、0.508から0.597になったこと自体は無視できません。

ただ、

「AUCが上がった」ことと「AIに採用すべき特徴量だと判断できる」ことは、同じではありません。

今回の結果だけでは、その判断をするには材料が足りないと思いました。

そもそも、今回のターゲットが「イン逃げ有利・不利」なのだから、1号艇と他の艇のスタートを比較するのは、ある意味では当たり前です。

そのため、

「1号艇と3号艇を比較したら、AUCが少し高かった」

という結果だけを見て、

「1号艇と3号艇のST差は重要な特徴量だ」

と判断するのは少し早い。

そう考えました。

ここまで、いろいろな方向を試してきた

振り返ってみると、ここまでかなりいろいろな角度からスタートを見ています。

最初は平均ST。

そこから、

  • STのばらつき
  • ST差
  • STの分布
  • 選手同士の相関
  • グループ内の連動性
  • グループ同士の比較
  • 1号艇との比較

と、少しずつ見る場所を変えてきました。

分析していると、それぞれに面白いところがあります。

特に選手同士のスタートの連動性などは、

「こんな関係があるんだ」

と思える部分もありました。

ただ、ここで一つ意識するようになったことがあります。

「分析として面白いこと」と「AIに使えること」は別なのではないか。

例えば、選手同士のスタートに連動性があることが分かったとしても、それだけで、

「この情報をAIに入れれば予測が良くなる」

とは限りません。

実際、今回もいろいろな関係性を調べてきましたが、そこからすぐにAIの性能向上につながるとは限りませんでした。

分析して新しい発見をすること自体には意味があります。

でも、自分が作ろうとしているのは分析結果を集めることではなく、最終的には予測に使うAIです。

ここは分けて考えた方がよさそうです。

特徴量を増やし続けることに疑問が出てきた

そして、もう一つ気になってきたことがあります。

それは、

このまま特徴量を探し続けていいのだろうか?

ということです。

平均STを使って、うまくいかなかったら別の特徴量。

それでも足りなければ、さらに別の特徴量。

そうやって追加していけば、数字を良くできる可能性はあります。

でも、どこまでやればいいのかが分かりません。

特徴量を一つ追加して、AUCが少し上がる。

すると、

「次は何を追加しよう?」

となる。

さらに追加して、また少し数字が変わる。

そうやって探索を続けていると、いつの間にか、

「AIを作るための分析」ではなく、「特徴量を探すこと」そのものが目的になってしまう

可能性があります。

しかも、今回のようにAUCが0.596や0.597程度になったとしても、

「これなら実際に使える」

と判断できるほどの手応えはありませんでした。

むしろ、

複雑化するデメリットに対して、得られるものが合っていないのでは?

という感覚が強くなってきました。

ここで、特徴量探索を一度止めてみることにしました。

それでも、AIは作ってみたい

ここで「難しそうだからやめよう」とはなりませんでした。

むしろ逆です。

ここまで分析してきたからこそ、今度は一度、AIそのものを作ってみたくなりました。

「この特徴量を追加すればもっと良くなるかもしれない」と考え続けるより、

まず最低限の情報だけでAIを作る。

そして、

そのAIが実際にどの程度の予測ができるのかを見る。

その方が、今の自分には分かりやすいと思いました。

まずはシンプルなものを作って、どこまでできるのか確認してみる。

もし結果が良ければ、そのまま次に進める。

もし良くなければ、

「何が足りないのか?」

を考えてから特徴量を追加すればいい。

最初から完璧なAIを作ろうとするより、この方が今の自分には合っている気がしました。

「分析」から「実際に作る」へ

ここまでの作業は、どちらかというと、

「AIに何を教えればいいのかを探す」

という時間でした。

でも、ここからは少し変わります。

まずは必要最低限の情報だけを使ってAIを作る。

そして、実際に未来のデータを使って検証する。

その結果を見てから、次に何をするかを考える。

今までずっと「もっと良い特徴量はないか?」と探していましたが、ここで一度、

「まず作ってみよう」

という方向に切り替えることにしました。

これまでの分析を無駄にするわけではありません。

むしろ、いろいろ試してきたからこそ、

「まずはシンプルな状態で、今の自分たちがどこまでできるのかを確認しよう」

と考えられるようになりました。

次回、Ver.1の仕様を決める

ここまで来て、ようやく実際に動かすAIを作る段階に入ります。

ここからは、AIを作るための条件を一つずつ決めていくことになります。

何を予測するのか。

AIにはどんな情報を渡すのか。

どの期間を学習に使い、どの期間で検証するのか。

そして、AI単体の性能だけではなく、最終的に予想に使えるのか。

ここを決めていきます。

次回は、いよいよ**「イン逃げ有利・不利予測AI Ver.1」**の仕様を固めます。

まずはシンプルな形で作ってみる。

そして、実際のデータでどこまでできるのかを確認してみようと思います。

あわせて読みたい

競艇AI開発日記

← 競艇AI開発日記 第28話|選手同士の「連動性」をAIに入れてみる

競艇AI開発日記

コメント

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