機械学習で競馬予想
どーも管理人です。
今回より、タイトルを変更してお送りします。
さて、前回5月9日は4連敗と惨敗に終わりましたが、反省点を踏まえモデルの改良を行いました。
- データ数を8000件から40000件(5倍)に増やしました。
- モデルを2つ用いて2段階で予想を行う方法に変更しました。これにより、直前のオッズ変動に対応しやすくなりました。
- 特徴量を36項目に増やしました。騎手やタイムなどの新しい特徴量を追加しました。また、オッズと人気は相関が強いので同時には特徴量に入れないようにしました。
- レースの荒れ具合を予想するモデルを別に作成しました。
これらにより、MAPE(平均絶対誤差率)は約38%まで下がりました。ハイチュー(ハイパーパラメータチューニング)もやったのですがほとんど変わらず。あとはアルゴリズムをランダムフォレストに変更したりも一応やってみましたが…。

とはいうものの、やや過学習気味ですが、着順予想なので誤差が50%を切れば良しとしましょう。テストデータを用いた結果では、1番人気が1着になる傾向は変わらないものの、2着には3番人気や4番人気が入るようになりました。まぁオッズまたは人気の重要度が高いのでこれは仕方ありませんね。
それからレースの荒れ具合を予想する方は、データ数が少なかったせいもありMAPE 680%とか見たこともない数字が出たのでこちらは今回は諦めました。それにちょっとメンドクサイし。
それでは、2週間後の5月23日東京競馬の参戦記です。
1R
第1レースの予想は1番人気と2番人気が1着と2着に入るとの予想になりました。(orは着順予想の数値です)うーん世間並の予想ですね。面白みはないですが、予想通りに馬連で「7-12」500円としました。

結果です。やった初めて当たりました!着順は逆ですが馬連なので関係なし。あれ?ってことは
予想は当たっていないことになるのか…。
まぁいいや。オッズは3.0で払戻金は1500円になりました。

2R
2レースは1番人気と3番人気が来るとの予想になりました。これは2番人気と3番人気のオッズが拮抗していたため(確定段階で4.6と同値)、前回までの戦績とかを反映したものと思われます。今回は疑わず馬連「5-16」500円としました。

結果です。1着は予想通りでしたが、2着にはなんと14番人気が入りました。オッズは158.7倍でした。まぁこれは機械学習では無理ですね…。

3R
3レースはまたもや1番人気と3番人気が来るとの予想になりました。オッズは1番人気と2番人気が拮抗していたのですが、何故か2番人気を差し置いて3番人気が来るとの予想。あとから考えるとこれは新たに特徴量に入れた外国産馬かどうかが関係していたようです。馬連「6-9」500円を購入しました。

結果です。うっひょー当たった!予想順通りで当たりました。オッズは9.5倍、払戻金は4750円でした。

ここまでで投入金額1500円に対し払戻金6250円なりました。ルールにより差額4750円のうち2000円は利益確定とし、残りの2750円は使ってもよいので引き続きレースをお楽しみください。