マイクロソフトが開発したlightGBM、以前これを使って競馬AIを作ってみたが大した結果を出せず、『だったらボートレースだ!6艇しかないんやから結構イケるんじゃないか』『儲かるAIができて、自動で舟券を買うプログラムができればサイコーじゃん』と安易に始めてみた記録です。
この試みのゴールと準備すること
ゴールとしては、番組表からAIに各艇の勝率と3連対確率を予測させ、予測結果をCSV形式で可視化できるようにすること。的中率と回収率はいったん気にしないことに。
予測の手法としてはlightGBMの分類を使っていきます。
事前準備としては学習用のデータが必要になりますね。webスクレイピングでデータを集める方法もありますが、今回はボートレースの公式HPがデータをテキスト形式で無料公開しているので、そちらをダウンロード、データ形成をしていきます。
ダウンロードに関しては素晴らしいコードが公開されていたのでほぼそのまま使わせていただきました。ほぼ丸パクリコードを載せるのは気がひけるので掲載は控えます。
公式ホームページの「競争成績ダウンロード」 https://www1.mbrace.or.jp/od2/K/dindex.html. からテキストファイルを取得できるので、取得したテキストデータを、正規表現を使ってデータフレーム→csv化します。
結果以下のようなcsvファイルができレース結果をcsvとして保存します。
1行目から6行目までを1レース、7行目から13行目までを2レースと言う形で、6行ごとで1レースというまとめ方をしているのがなんともわかり図らく、むず痒いが「とりあえず完成させること優先!!!」ということで気にしない。
1ヶ月のデータ量として約2.8万行、レース数として約4600レース、これを直近9ヶ月分を学習データとして、つまり約41000レースを学習データとして試みていきます。このデータをベースにしてさらに詳細なデータ(イン逃げ率がどうだとか、◯コースの2連対率がどーとか)を作っていきます。
次回にむけてとお願い
今後、掲載するコードで「汚ねー、もっとスマートに書けよ」とか思ってもグッと堪えていただければいいなと思います。「こういうやり方もあるよね」とかアドバイス頂けると嬉しいです。
次は、データの取捨選択と今回のデータから新しいデータを作っていきます。