僕でも「AIで競馬予想」ができるのか

 

注意

詳しく調べずにとりあえず実行したので、結果や予想などはジョークグッズ的な感じで見てください。

結論

データ数が少ない

あくまで現状の結論です。他にも問題が山積みだと思います。

どんな条件だったか

学習データ

139レース×11特徴

レースについては、2018年の関屋記念に出走登録されている15頭の過去10レースを選んだ。10レース未満の馬もいたので、139レースになった。

特徴には、

  • 競馬場
  • レース番号
  • 出走頭数
  • 馬番
  • オッズ
  • 人気
  • 斤量
  • 芝orダート
  • 距離
  • 馬場状態
  • 馬体重

を採用しました。

モデル

ニューラルネットワーク

  • 入力層のサイズ・・・20
  • 隠れ層の数・・・3
  • 隠れ層のユニット・・・20
  • 隠れ層ドロップアウト・・・50%
  • 出力層のサイズ・・・18
  • 活性化関数・・・ReLU
  • 誤差関数・・・平均二乗誤差
  • 勾配法・・・RMSprop
  • epoch・・・250回
  • テストデータ・・・15%

予想するデータとしては、8月9日(木)の時点で1番人気だった「プリモシーン」を採用。オッズ4.6倍、馬体重は478kg、馬場状態は良、にしました。木曜なので…

結果

複数回やると学習履歴グラフが毎回変化する…

1回目

2回目

3回目

4回目

5回目

5回ともひどい…

ちなみに、4回目以外は「掲示板には入る」と予想していた。

これを予想と呼んでいいのか怪しいけど…

結論

これをやる前に、競馬ではないデータで試しています(ワインのデータ)。データ数が1600×11特徴のもので学習すると、きれいなグラフになっていた。

ワインのデータは、競馬のデータに比べて、

  • 相関関係がハッキリしている
  • 無駄な特徴が少ない

ことから、学習しやすかったであろうと考えています。

なので「データ数が少ない」と結論づけました。

感想・今後

実は、学習用のデータ139レース分は、手打ちで集めました(笑)

スクレイピングの技術が足りませんでした。スクレイピングをもっと勉強する前に、試してみたい気持ちが上回ったので、手打ちで集めました。

139レースで1時間くらいかかったよ…

データに関しては、スクレイピングを学ぶか、月額有料で買うかの2択。

ニューラルネットのモデルに関しては、山のように改善点がある。そもそも、少ないデータに向かないんだろうな…

おーわり