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

第8話では、教師データを分析し、最初のスリット判定AIには通常条件の704レースを使うことに決めました。

ここまで教師データを集め、データの中身を確認し、ようやくAIを作る準備が整いました。

いよいよ、スリット判定AIを実際に動かしてみます。

ここまで来るのは長かったので、

「ついにAIが動く。」

というワクワクがありました。

その一方で、

「本当にスリット隊形なんて予測できるんだろうか。」

「今まで集めてきたデータだけで足りるんだろうか。」

という不安もありました。

期待と不安が半分ずつ。

そんな気持ちで、初めて機械学習に挑戦することになりました。

まずは機械学習を動かせる環境を作る

AIを作ると決めても、すぐに学習を始められるわけではありませんでした。

まずは、PCで機械学習を動かせる環境を整える必要があります。

これまでPythonはスマホやPCで学習してきましたが、本格的な機械学習ライブラリを使うのは今回が初めてでした。

必要なライブラリをインストールし、プログラムが正しく動くか確認する。

これまでのPython学習では経験したことのない作業だったので、一つひとつ調べながら進めました。

ライブラリのインストールが終わり、機械学習を動かせる環境は整いました。

でも、その時に思ったのは、

「本当にこれだけで機械学習が動くのかな。」

ということです。

AIというと、もっと特別な準備が必要だと思っていました。

だから、ライブラリをインストールしただけで機械学習ができると言われても、まだ半信半疑でした。

「とりあえず、一回動かしてみよう。」

そんな気持ちで、最初の学習を始めることにしました。

最初のAIを作ってみる

最初に使った機械学習モデルは、RandomForestでした。

……と言っても、この頃の自分はRandomForestがどんな仕組みなのか、ほとんど理解していません。

機械学習にはいろいろなモデルがあることは知りましたが、

「結局、自分は何を選べばいいんだろう。」

という状態でした。

そこでChatGPTとの壁打ちの中で、

「まずはRandomForestで試してみましょう。」

という提案を受け、そのまま進めることにしました。

この時の目的は、高い精度を出すことではありません。

まずは、

「本当にスリット隊形を予測できるのか。」

それを確かめることです。

704レース分の教師データを読み込み、学習を開始。

しばらく待っていると、ついに最初の結果が表示されました。

Accuracy 0.347

初めて、自分で作ったAIの予測結果です。

画面に数字が表示された瞬間は、

「おっ。」

と思いました。

でも、その気持ちはすぐに別の疑問へ変わります。

「……これって良いの?」

正直、その時の感想はそれだけでした。

Accuracyだけでは何も分からなかった

AIはちゃんと動きました。

予測もできています。

でも、そのAccuracyという数字が良いのか悪いのか、自分には判断できませんでした。

何を見ればいいのかも分からなかったので、この時もChatGPTに教えてもらいながら結果を一つずつ確認していきました。

Accuracyだけではなく、Classification ReportやConfusion Matrixも見てみることにしました。

もちろん、この頃の自分は名前を見ても意味が分かりません。

「Precision?」

「Recall?」

「F1-score?」

「Confusion Matrix?」

初めて見る言葉ばかりでした。

それでも、一つずつ結果を見ていくと、

「Accuracyだけでは分からないことがある。」

ということが少しずつ見えてきました。

そして、予測結果を詳しく確認していくと、

あることに気付きます。

「35%」の意味が分かった

詳しく結果を見ていくと、一つ気付いたことがありました。

このAIは、Pattern1を多く予測していたのです。

その瞬間、

「あぁ、35%ってそういうことか。」

と思いました。

Accuracyだけを見ると、それなりに予測できているようにも見えます。

でも実際には、12種類あるスリットパターンをバランスよく予測できていたわけではありませんでした。

第8話で教師データを分析した時、Pattern1が最も多いことは分かっていました。

その偏りを、そのままAIが学習してしまっていたのです。

この時初めて、

「AccuracyだけではAIは評価できない。」

ということを知りました。

数字が出たから終わりではありません。

その数字が、どうやって出てきたのかまで見ないと、本当の意味では評価できない。

そんなことを、この時初めて知りました。

AIは動いた。でも、まだここからだった

最初からうまくいくとは思っていませんでした。

それでも、どこかで

「意外と予測できるんじゃないか。」

という期待もありました。

だからこそ、

「35%って、そういう意味だったんだ。」

と納得した気持ちは今でも印象に残っています。

この結果を見て、

「AIがダメだった。」

とは思いませんでした。

むしろ、

「まだ予測AIと呼べる段階ではないな。」

という気持ちでした。

AIはちゃんと動きました。

Accuracyという数字も出ました。

でも、この時に一番印象に残ったのは、その数字ではありません。

「これって、どう見ればいいんだろう。」

Accuracyを見ながら、そんなことを考えていた時間の方が印象に残っています。

AIを作ることよりも先に、

AIを評価する難しさを知った。

今回は、そんな一歩だったように思います。

次回予告

最初のスリット判定AIは動きました。

でも、AIそのものを変えれば解決するとは思いませんでした。

まず見直すべきなのは、AIに学習させる情報そのものではないか。

そう考え、次は特徴量を一つずつ見直していくことにしました。

次回は、スリット判定AIの精度を上げるために、特徴量探しを始めた頃の話を書こうと思います。

あわせて読みたい

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