3.自作指数で競馬AIを構築するポイント
競馬AIの2本の柱
競馬AIを自作し、機械的に購入馬券を決定するためには、2本の柱となるロジックが必要です。
- 独自指数による各馬の期待値算出ロジック
- 指数に基づく購入判定ロジック
①の独自指数を作成し、出走する全ての馬に得点をつけます。これにより出走メンバーの中で期待値の高い馬を見つけ出します。
次に②の購入判定ロジックを用いて、馬券の買い目を決定します。出走メンバー中の指数が最も高くても、その馬が期待値がプラスとは限りません。独自指数を基準に購入条件を決め、条件を満たした馬を自動的に購入します。
こうすることで、感情や思い込みに流されず、期待値が高く収支がプラスとなることが見込める馬券を機械的に購入することが可能となります。
独自指数の算出ロジック
競馬AIの作成と聞いて、多くの方が最初に思い浮かべるのがこの独自指数を作成することでしょう。
過去の統計データを基に期待値を指数化し、出走馬全頭を指数で評価します。競馬における期待値の考え方や、過去データの統計分析の方法は本サイトで説明をしてきましたが、それを指数化するための基本手順を解説します。
指数作成の基本は、各ファクターによる加点・減点要素を全て合計することです。
例えば、ある馬のファクター毎の評価が以下の通りだとします。
馬名 | ファクター① 今走枠順 | ファクター② 前走着順 | ファクター③ 調教タイム | 合計 |
---|---|---|---|---|
サラブレッドA | +3点 | +2点 | -2点 | 3点 |
サラブレッドB | -1点 | +5点 | -3点 | 1点 |
サラブレッドC | +2点 | -4点 | +1点 | -1点 |
それぞれのファクターで見ると、最も高得点の馬は異なりますが、合計得点ではサラブレッドAが最高得点になっています。
上記の例のような今走枠順と前走着順など、相互に影響しあわないものは単純に足し算で計算して問題ありません。
一方で、馬場状態と枠順など、複数のファクターを組み合わせることで正確に期待値を評価できるファクターについては、複数のファクターで一つの要素として考えます。
馬名 | ファクター①×② 今走枠順×馬場 | ファクター③ 前走着順 | ファクター④ 調教タイム | 合計 |
---|---|---|---|---|
サラブレッドA | +2点 | +2点 | -2点 | 2点 |
サラブレッドB | 0点 | +5点 | -3点 | 2点 |
サラブレッドC | +6点 | -4点 | +1点 | 3点 |
ファクターの数をどんどん増やしていくことで、指数としての精度と安定感は上昇します。
複数ロジックの使い分け
芝のレースとダートのレースでは、同一のファクターであってもそのファクターが及ぼす影響が大きく変わるものもあります。
例えば「枠番」について、芝のレースは基本的に内枠有利、ダートのレースは外枠有利となります。そのほかにも芝のレースとダートのレースで大きく傾向が変わるファクターは多くあります。
そのため、複数パターンの指数ロジックを構築し、使い分ける必要があります。
芝/ダート以外にも、他のレースとは大きく条件が異なるレースについては、それぞれの条件用の特化指数ロジックを構築した方がよいことがあります。
例えばコーナーのない新潟競馬場の芝1000m戦や前走情報のない新馬戦などです。
ただし、特化指数ロジックを作成する際には、どうしてもデータの数が少なくなってしまうため、過学習(過剰最適化)にならないように注意が必要です。
過学習(過剰最適化)については別記事で解説します。(準備中)
購入ロジック
統計分析結果を用いて指数を自作しても、それだけでは買い目を決めることはできません。
その指数を基に、買うべき馬、買ってはいけない馬の取捨選択が必要です。さらには、買ってはいけないレースというものも存在します。
買うべきレース、買うべき馬の判定にあたっては、次の3つの観点から検討が必要です。
- 独自指数の絶対値
- 独自指数の相対値
- 独自指数の特性
独自指数の絶対値
これは指数の値そのものです。独自指数に採用しているファクターに優位性があれば、基本的には指数の値が高ければ高いほど回収率が高くなります。
次のグラフは、私の作成した指数の値毎の回収率を示したグラフです。
指数の値と比例して回収率が上がっており、値が40以上になると回収率が100%を超えていることがわかります。
独自指数の相対値
独自指数の相対値とは、各レースの出走メンバーにおける指数順位です。
競馬の特徴として、レースに出走する馬の中に必ず勝ち馬が1頭だけ存在する、という点があります。当たり前のことに思えますが、パチンコなどのギャンブルや株などの投資では、10台(10銘柄)全てがマイナスとなることもあれば、複数台(複数銘柄)がプラスになることもあります。
しかし、競馬は単勝であれば1頭だけが当たり馬券となります。そのため、同一レース出走馬中の指数順位には大きな意味があります。
次のグラフは、私の指数の順位毎の回収率を示したグラフです。
指数の1位が明確に2位以下と比べて高い回収率となっていることがわかります。
また、指数の値40以上に絞った場合の、指数順位毎の回収率は次の通りです。
指数の絶対値は40以上と高いはずですが、順位が3位以下であれば回収率は高くならない傾向にあることがわかります。
もちろん、独自指数を作成する人それぞれ採用するファクターが異なるので、あなたが作成する独自指数が必ずしも私の指数と同様の順位傾向になるとは限りません。
ですが、出走メンバーの中からただ1頭の勝ち馬を決めるという競馬の性質上、指数の絶対値だけではなく、順位が大きな意味を持つことは間違いありません。
独自指数の特性
全てのレースを対象としてデータ分析すると、どうしても数が少ないレースは分析結果の傾向と合致しない可能性が生じます。
例えば、長距離レースの開催数は短距離やマイル戦などの開催数よりも少なくなっています。一方で距離によって枠順や能力差などのファクターが与える影響は異なってきます。
ですが、全てのレースを対象に分析することで、開催数が多い短距離・マイル戦に適した分析結果が表れやすくなります。
このように、必然的に指数には得意・不得意な条件のある、個性のようなものが生じます。
- 重賞の回収率が低いが、条件戦の回収率は高い指数
- 長距離戦の回収率が低いが、短距離戦の回収率は高い指数
- ハンデ戦の回収率が低いが、定量戦の回収率は高い指数
- 牝馬限定戦の回収率が低いが、混合戦の回収率は高い指数 など
自作指数の条件別パフォーマンスを検証し、指数の得意・不得意を把握することが重要です。
購入対象を絞る際には過剰最適化に注意が必要
データ分析の章でも過剰最適化について注意が必要であることを説明しましたが、購入判定ルールを作成する際にも過剰最適化が生じてしまう可能性があり注意が必要です。
過剰最適化を簡単に説明すると、過去のデータに対して高い回収率となるように追求しすぎた結果、未来のデータに対して大きくパフォーマンスを落としてしまうことです。
例えば、自作した指数が1位の馬の傾向を調べたところ、新馬戦では回収率が高くなかったとします。ここで「新馬戦は自分の指数は苦手なので購入対象から除外する」と安易に決めつけてはいけません。
そのような過去の成績が悪い=都合の悪い条件を除外すれば、簡単に回収率は120%、130%と向上していきます。しかし、それはもしかすると確率の偏りにより、たまたま新馬戦の成績が奮わなかっただけかもしれません。
その場合、過去のデータでは素晴らしい回収率となりますが、未来のレースでは同様のパフォーマンスを発揮できなくなってしまいます。
購入対象から除外する条件を決める際には、その理由を論理的に説明できるものに限定してください。
例:新馬戦を除外してもいいケース
- 前走の内容を評価するファクターを多く採用している
- 新馬戦は前走がないため、指数の多くのファクターが機能しない
- そのため、新馬戦では適切に各馬を評価できていないと考えられる
例:新馬戦を除外してはいけないケース
- 前走内容よりも今走の条件(枠順等)や調教に関するファクターを多く採用している
- 調教評価は高いが、なぜか結果につながっていない
- 新馬戦でだけ結果につながらない理由を説明できない
また、購入対象から除外する条件は、馬単位ではなくレース単位を基本として下さい。
なぜなら、「新馬戦」や「長距離戦」などのレース単位の条件は、そのレースに出走するすべての馬に対して一律の条件であり、その条件単体で指数の値や順位に影響することはありませんが、馬単位の条件(例えば馬番、馬体重、前走成績など)は、その条件単体で指数の値に影響を与えるものだからです。
もし「指数1位のうち馬体重450Kg以下は成績が悪い」ということがあれば、それは指数の得意・不得意ではなく、馬体重というファクターを適切に評価できていないことを意味します。
そのような場合は、購入ルール設定として購入対象から除外するのではなく、ファクターの評価が正しいか、再度分析しなおしてみましょう。
ロジック運用における注意点
机上のシミュレーションと実運用の差
人気がありオッズが低い馬は、多くの人が評価し購入している馬であるため、期待値が高くなりにくい傾向にあります。
そのため、回収率を高めようとすると、人気薄の穴馬を購入することが多くなります。オッズ帯で言えば、10倍台から30倍台が多くなるでしょう。
単勝オッズ30倍の馬でも、勝率が4%あれば期待回収率は120%となります。しかし、勝率で見れば100回中96回は外れるということです。
次の表は、勝率4%の馬が連敗する確率です。
20連敗 | 30連敗 | 40連敗 | 50連敗 |
---|---|---|---|
44.20% | 29.39% | 19.54% | 12.99% |
3回に1回は30連敗、5回に1回は40連敗、8回に1回は50連敗してもおかしくありません。
これは数字で見れば大したことがないと思えるかもしれませんが、机上のシミュレーションと実際に馬券を購入するのとでは大きく感覚が異なります。
30連敗や50連敗とは、半月から1か月間的中なしということもあり得る数値です。よほど強い意志と自作AIへの信頼がなければ、連敗中でも一切ブレずに馬券購入を継続するということは大変困難です。
自分の指数は本当に有効なのだろうか・・・
いつまで購入を続ければ当たるのだろうか・・・
明らかに能力が高い馬を買った方がいいんじゃないだろうか・・・
多くの方がこのように自信を無くしてしまい、途中から購入金額を大きく引き下げたり、最悪の場合運用資金の大半を失ってAIの運用をストップしてしまうでしょう。
しかし、一定の購入ルールの基で継続的に馬券購入を続けられなければ想定した収支を得ることはできません。
精度の高いAIを作成することももちろん重要ですが、それと同等に不調時でも継続できるメンタル管理、そしてそのメンタルを維持するための資金設定が必要なのです。
適切な購入金額とは
連敗時でも馬券購入を継続できるメンタルを保つための基本的な対策は購入金額を小さくすることです。
具体的に1点あたり何円に設定すべきかという話は、ロジックによって購入する券種や1日あたりの点数が異なるため一概に決定することはできません。
しかし、毎レース結果が気になって仕方がないような金額は賭けすぎです。そのような状態では連敗時に継続できません。
目安としては1日の購入金額の合計が資金全体の5%程度になるよう設定するのが良いでしょう。例えば競馬に使える資金が100万円であれば、1日の購入金額は5万円です。
もちろんメンタルの強さも人それぞれのため、10%の設定でもブレずに運用を続けられる方もいらっしゃるでしょうが、10%以上は明らかにリスク大きすぎます。
そのような資金設定をしていては、連敗が発生した際に資金の大半を失ってしまい、継続したくてもできない状況に陥る可能性が非常に高くなります。