競艇AIの機械学習モデルの精度を向上しました

2020年3月5日人工知能, 機械学習, 競艇

こんな人にオススメ!

・競艇データで機械学習したい人
・競艇の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.7380.5980.6270.6860.7230.776
2号艇0.7580.6400.5780.5880.6510.725
3号艇0.7370.6430.5830.5910.6290.722
4号艇0.7520.6620.6040.5810.6250.736
5号艇0.7650.6930.6290.5740.6060.737
6号艇0.8330.7430.6750.5900.5820.748

二連単モデル

1着/2着1号艇2号艇3号艇4号艇5号艇6号艇
1号艇 0.7000.7010.7210.7270.772
2号艇0.725 0.7770.7660.7950.828
3号艇0.7330.746 0.7480.7800.802
4号艇0.7520.7390.753 0.7750.802
5号艇0.7420.7770.7950.752 0.785
6号艇0.8250.8550.8300.8470.796 

向上精度

直前まで使っていたモデル精度との比較です。

着順モデル

1着2着3着4着5着6着
1号艇0.0060.002-0.0050.0020.010.008
2号艇0.0070.0040.00100.0010.004
3号艇0.0080.005-0.0010.0140.0030.006
4号艇0.0050.0050.0040.0040.0040.008
5号艇0.0080.0050-0.0010.0050.004
6号艇0.010.0060.0080.00200.005

二連単モデル

1着/2着1号艇2号艇3号艇4号艇5号艇6号艇
1号艇00.0010.001-0.0030.012
2号艇0.0150.017-0.004-0.0050.018
3号艇0.003-0.004-0.0120.010.022
4号艇0.002-0.0010.0130.0150.032
5号艇-0.0080.0070.0450.022-0.025
6号艇0.0050.0250.010.037-0.004

的中率と回収率

特徴量を大幅に変え、それに合わせてテーブル構造なども変えたため、評価データである2019年後期で同じ比較ができませんでした。

直前3か月のデータを公開し続けていますが、その値を元にざっくりとですが計算しました。統計量が多いラベル以外の精度が向上した影響で回収率は大幅に上昇したみたいです。

的中率回収率
単勝59%→60% 95%→98%
二連単24%→25% 80%→87%

まとめ

今回は単に現在のモデル性能をアップデートした内容になります。こういった内容もいずれは自動化したい、というか自動化できるような管理体系を考えたいと思います。

2020年3月5日人工知能, 機械学習, 競艇