第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の精度を上げるために、特徴量探しを始めた頃の話を書こうと思います。
あわせて読みたい
- 競艇AI開発日記 第7話|教師データ作成編
スリット判定AIを作るために、教師データを作り始めた頃の話です。 - 競艇AI開発日記 第8話|教師データ分析編
集めた教師データを分析し、最初のAIに使用する704レースを選定した過程をまとめています。
