今回も前回に引き続き、「AI予測で競馬は勝てるのか?」予測編になります。
前記事では、LightGBMによる回帰で走破タイムを予測しました。
そこで本記事ではクラス分類ならどうか試そうと思います。
クラス分類では着順を予測します。
1. データの前処理
前回と同様、カラム「gender」や「field」のように日本語表記のデータを数値に置き換えることに加えターゲット変数の着順をグルーピングします。
(出走馬が18頭のような場合でそのまま予測すると18クラス分類となり、クラス数が多く予測に悪影響を及ぼしそうなため)
着順は以下の条件でグルーピングします。
・1着〜3着 → グループ1
・4着〜8着 → グループ2
・9着以降 → グループ3
2. 予測
始めに細やかな条件を付けず予測します。
クラス分類の結果、グループ1に予測された馬においてスコアの高い上位最大3頭の馬に対して単勝賭けします。
下のグラフがその収支金の結果になります。
予想はしてましたがマイナス収支となりました。
回収率は83%でした。
ただ的中率は60%と比較的高い結果となってました。
前回の回帰による走破タイム予測で出走馬数、賭ける馬を厳選することで回収率が向上することは確認できたため、条件を追加します。
予測対象の馬数が出走馬数の8割以上であり、グループ1に予測された馬の上位1頭のみ単勝賭けます。
回帰予測の場合はここでプラス域に転じたのですが、クラス分類ではまだマイナスですね……
回収率は79%で的中率は27%でした。
まさかの回収率が下がりました。
もう少し条件を加えようと思います。
単純ではあるけれど、グループ1に分類されたスコアの最も高い馬と2番目にスコアの高い馬のスコア差異が大きい場合のみ賭けることにします。
スコアの差が0.1以上の場合のみ賭けます。
ダメですね……
回収率84%で、的中率33%でした。
この後もスコア差に着目して0.1〜0.2までと変更して試しましたが、どれも回収率でプラス域になることはなく、次の条件で賭けることである程度の回収率を得ることができました。
条件は、予測対象の馬数が出走馬数の8割以上かつ、グループ1に予測された馬の上位1頭かつ、オッズが中倍率以上の場合に賭けるです。
回収率で111%で、的中率は21%でした。
600レース目くらいまではプラスマイナス0程度の収支で、その後ようやくプラス域へ、といった感じです。
回収率で100%は超えているものの安定はしてなさそうな感じがします。
3. おわりに
前回に続きクラス分類による予測を行いました。
回収率だけで判断すれば回帰予測の方が良さそうと言った結果でした。
賭け方を工夫すればもう少し回収率を上げられる可能性もあるため、分析を続けようかと思います。
特に訓練データにおける統計から見えてくる特徴もあるかもしれないため、そちらも確認したいですね。