競艇AIの機械学習モデルの精度を向上しました
・競艇データで機械学習したい人
・競艇のAI予想の精度を知りたい人
はじめに

少し精度上がりました
モデルの特徴量を作り直したりしていて時間がかかりましたが、モデルやら予測やら詳細データの箇所を少しすっきりできたので公開します。
今回のブログでは結果(モデル精度)に関係する箇所をご紹介する形になりますので、プロセスを知りたい方は過去の記事をご参照下さい。
データ
詳しくは記載しませんが、以下の特徴量を更新しました。
- 体重や枠番を考慮した展示タイム
- 着順や競艇場を考慮した周回タイム
- ボートに関する特徴量
上の二つは以前のブログで調査した内容を反映したものです。
ボートに関しては、正直モーターの特徴量しか関係ないだろうと思って全く作っていませんでしたが、念の為作成しました。
アルゴリズムやらデータ量は下記になります。
アルゴリズム | LightGBM |
モデルタイプ | 多クラス分類 |
特徴量 | 7682 ※当日のあらゆるデータ(天気や展示等)は使用していない |
訓練データ | 375091(2012〜2019前期) |
評価データ | 26872(2019後期) |
学習時にはレースの展開を学習したい及び教師ラベルの関係で下記の条件に合致するデータは省いています。
- 決まり手が「恵まれ」のレース
- 転覆ありやスタート事故など、全艇がゴールしていないレース
評価
前置き
モデル精度は以前と比べて若干向上しています。
しかしそれは、データが増えた影響なのか、追加した特徴量が効いたのか、はたまたアルゴリズムのハイパーパラメータ調整が上手く機能したのか、は分かりません。
それらを厳密に調べるには、それ以外の条件を完全に揃えて、それのみを変更してからモデルを作り直したりしないといけないません。が、その作業は本当に手間なので、やりません。そういった作業を全て管理してくれるライブラリやツールがあれば是非使いたいです。
ちなみに、データ数に関して、2012年〜2019年と2015年〜2019年でデータの範囲を変えて二連単を学習させてみましたが、データ数が多い方が若干の精度向上に繋がりました。
ただ、各枠番別の着順予想では精度はほぼ変わらず、二連単予想ではデータ数が多い方がAUCで0.5%程度良くなりました。結局は教師ラベルが十分かどうか(十分の説明も難しいが)次第だなと思います。
特徴量に関して、今回追加した特徴量はモデルの重要度で上位にきているものも確かにありました。しかし、それだけではその特徴が有効かどうかは分かりません。
重要度はあくまで相対的な指標と言えます。例えば、選手の「勝率」はとても重要な特徴量ですが、極端な話その勝率と全く同じ特徴量である勝率2を追加すれば、「勝率」と「勝率2」は重要度を分け合って値としては半分になるはずです。
基本的に特徴量同士の相関が高いものは片方を省いてモデルの学習に入力していますが、その閾値も何かの指標から得ているわけではないので、上述の課題を解決するものではないでしょう。
改めて特徴量の重要度について考えると難しいですね。Permutation Importanceなど手法はありますが、それらはあくまで出来上がったモデルに対しての入力した特徴量の重要度がどうか、というものなので、入力した特徴量同士に強い相関があった場合は正しい重要度が出ないはずです。
自分で特徴量を作りすぎるとそういった課題もありますね。まあいずれにしても面倒な作業なので、今回は重要度の話は割愛します。
モデル精度
さて、モデル精度ですが、下記になります。
着順モデル
1着 | 2着 | 3着 | 4着 | 5着 | 6着 | |
1号艇 | 0.738 | 0.598 | 0.627 | 0.686 | 0.723 | 0.776 |
2号艇 | 0.758 | 0.640 | 0.578 | 0.588 | 0.651 | 0.725 |
3号艇 | 0.737 | 0.643 | 0.583 | 0.591 | 0.629 | 0.722 |
4号艇 | 0.752 | 0.662 | 0.604 | 0.581 | 0.625 | 0.736 |
5号艇 | 0.765 | 0.693 | 0.629 | 0.574 | 0.606 | 0.737 |
6号艇 | 0.833 | 0.743 | 0.675 | 0.590 | 0.582 | 0.748 |
二連単モデル
1着/2着 | 1号艇 | 2号艇 | 3号艇 | 4号艇 | 5号艇 | 6号艇 |
1号艇 | 0.700 | 0.701 | 0.721 | 0.727 | 0.772 | |
2号艇 | 0.725 | 0.777 | 0.766 | 0.795 | 0.828 | |
3号艇 | 0.733 | 0.746 | 0.748 | 0.780 | 0.802 | |
4号艇 | 0.752 | 0.739 | 0.753 | 0.775 | 0.802 | |
5号艇 | 0.742 | 0.777 | 0.795 | 0.752 | 0.785 | |
6号艇 | 0.825 | 0.855 | 0.830 | 0.847 | 0.796 |
向上精度
直前まで使っていたモデル精度との比較です。
着順モデル
1着 | 2着 | 3着 | 4着 | 5着 | 6着 | |
1号艇 | 0.006 | 0.002 | -0.005 | 0.002 | 0.01 | 0.008 |
2号艇 | 0.007 | 0.004 | 0.001 | 0 | 0.001 | 0.004 |
3号艇 | 0.008 | 0.005 | -0.001 | 0.014 | 0.003 | 0.006 |
4号艇 | 0.005 | 0.005 | 0.004 | 0.004 | 0.004 | 0.008 |
5号艇 | 0.008 | 0.005 | 0 | -0.001 | 0.005 | 0.004 |
6号艇 | 0.01 | 0.006 | 0.008 | 0.002 | 0 | 0.005 |
二連単モデル
1着/2着 | 1号艇 | 2号艇 | 3号艇 | 4号艇 | 5号艇 | 6号艇 |
1号艇 | 0 | 0.001 | 0.001 | -0.003 | 0.012 | |
2号艇 | 0.015 | 0.017 | -0.004 | -0.005 | 0.018 | |
3号艇 | 0.003 | -0.004 | -0.012 | 0.01 | 0.022 | |
4号艇 | 0.002 | -0.001 | 0.013 | 0.015 | 0.032 | |
5号艇 | -0.008 | 0.007 | 0.045 | 0.022 | -0.025 | |
6号艇 | 0.005 | 0.025 | 0.01 | 0.037 | -0.004 |
的中率と回収率
特徴量を大幅に変え、それに合わせてテーブル構造なども変えたため、評価データである2019年後期で同じ比較ができませんでした。
直前3か月のデータを公開し続けていますが、その値を元にざっくりとですが計算しました。統計量が多いラベル以外の精度が向上した影響で回収率は大幅に上昇したみたいです。
的中率 | 回収率 | |
単勝 | 59%→60% | 95%→98% |
二連単 | 24%→25% | 80%→87% |
まとめ
今回は単に現在のモデル性能をアップデートした内容になります。こういった内容もいずれは自動化したい、というか自動化できるような管理体系を考えたいと思います。
ディスカッション
コメント一覧
まだ、コメントがありません