競馬AI開発についての第6回です。
今回は特徴量設計について記述します。
特徴量とは
そもそも特徴量とは、
分析すべきデータや対象物の特徴・特性を、定量的に表した数値(goo辞書)
のことです。
例えば、画像認識などの分野では分かりやすく、「りんご」を認識するのであれば、画像(画素の集合)から、「色合い」「形」などを数値で特徴量として表現します。
競馬予測の場合は、主に「勝馬を予測する」ために必要な数量データのこと、になりますが、それはいわゆる予測ファクターのことで、
競馬新聞に載っている情報(レース、各競走馬情報)、各種集計データ(トラック別の騎手・種牡馬成績など)、当日のパドックや馬場状態など多岐にわたり、
大半は、前回データベースに格納したデータです。
実際には、データベースに格納したデータをさらに集計・加工することで新たな特徴量を作り出す場合もありますが、
AISSの特徴量設計にあたる基本的なコンセプトは
「なるべく生のデータを渡して、あとはAIに内部で特徴抽出してもらう」
としています。
ここでいう"生"とは集計や計算など加工を加えていない、という意味です。
カレーを作る場合に、既存のカレールウを使用するのではなく、スパイスなどなるべく原料から考える、
といったイメージでしょうか。
これはどういうことかというと、例えば
ある競走馬の過去着順という特徴量を考えたとき、
- 過去n走の着順平均などを1フィールドで表現
- 1走前着順、2走前着順、3走前着順、4走前着順・・・のnフィールドで表現
する方法が考えられます。
前者の場合、特徴量の数が少なくなるのでモデルをシンプルに表現できるメリットがあります。
ただし、私は「情報量を減らす」ことはしたくないと思っています。
仮に「過去4走着順平均」とまとめてしまうと、それ以上の意味を見出せません。
着順平均が3だけど、「3→3→3→3」や「5→5→1→1」では意味合いが異なりますし、
前走と4走前の着順が仮に「1着」だったとしてもそのレースクラスが「未勝利」と「OP」などでは重要性が変わります。
そんなことを考え出すと、「ではどんな組み合わせで特徴量を作ったらいいんだ。。」と悩みの無限ループに入ってしまうので、
だったらもうそのままの数値で渡して、あとは内部の計算(重みづけ)で予測に効くように調整してもらったほうが
はるかに楽ですし、なにより人間の主観や固定観念に囚われる必要がありません。
逆にデメリットとしては、フィールド数が多くなることが挙げられます。
素直にこれを入力として表現しようとすると、「1走前の着順」「1走前の着差」「1走前のレースレベル」・・・
といったデータを横一列に入れるため、フィールド数が多すぎて逆にうまく学習がうまくいかない可能性があります。
なのでAISSの場合は、これをうまく学習できるようなモデル構築手法を採用しています。
このあたりは、また「AIモデルを構築する」の項で説明したいと思います。
特徴量の検討
上述の通り、基本的には「生データ」を使用します。
なので、予想法でメジャーな「スピード指数」などをあえて一から作るようなことはほとんどしません。
ただし、ネットや書籍で競馬予想法・馬券戦略法などは積極的に目を通すようにしています。
私が重要視するのは、
その予想法を構成するデータを取得・数値化できるか?
という点ですね。
第3回 でも触れたように、
馬体やレース中の不利情報など現状データ化が難しいものに関しては、
いくらアナログ予想で馬券成績に貢献していても競馬AIを作成する上では残念ながら採用できません。
ちなみに本棚はこんな感じです。
かなり有名な本ばかりなので読んだことある方多いと思います。
- ギャンブルの基本的な考え方を学ぶにあたり、まだAI開発していないころから尊敬し続けている「じゃいさん」
- 馬券投資術については、なんといっても実績十分な「卍さん」「真田さん」
- 競馬予想の実力と分かりやすさを兼ね備え、ファンも多い「メシ馬さん」
など
AISS開発にあたりその予想術・馬券術などは大いに参考にさせていただいています。
冗談ではなく、回収率100%超えには不可欠と言っても過言ではないくらいです。
ネットや書籍を見るにあたり、やはり実績を出せている方々は
「勝ち馬を当てる」ではなく「馬券を攻略する」
という視点で有益な情報を多く発信しているので勉強になりますね。
特徴量の数と例
AISSで採用している特徴量の種類数自体はそこまで多くなく、全部で600個程度です。
ただし、例えば「着順」という1つの特徴量をとっても「予測対象馬の前走の着順」「予測対象馬の2走前の着順」「予測対象馬の3走前の着順」・・・「相手馬1の前走の着順」「相手馬1の2走前の着順」・・・
みたいにそれぞれ別のフィールドとして入力するので全体の入力数は爆発的に増えます(30,000以上)。
いくつか予測精度向上に効いている特徴量を紹介したいのですが、だいたいは前回 紹介したようなデータベースに格納した情報ですし、それらはほぼほぼ生データや単純な集計値です。
加えて、残念ながら採用している機械学習手法の特性上、予測要因重要度の判断が現状困難なので、改めてこちらで具体的な例を挙げるのが難しいです。
なので、逆にデータとしては用意しておいたもののあまり予測に効かなかった特徴量をいくつか紹介します。
注意
下に挙げる例は、モデル構築手法やデータ加工の方法など複数の要因が絡むので一概に特徴量として良くないわけではありません。
馬場状態、天気
もしかしたら

と思う人もいると思います。
私もそう思います(笑)
ですが、実際にモデル構築をしてみたところこの特徴量の有無によって予測精度が変わったかと聞かれたらすごく微妙です。
また、「馬場状態」「天気」に関しては、レース発走までに変わる可能性が多分にあるため、シミュレーションする上でそれを考慮できない、
というのも、特徴量として採用していない理由の一つです。
逆に、競馬予想の常識では最重要と考えられている特徴量抜きでもある程度の精度を出せるのは驚きです。
対象トラックに関する情報
対象トラックの平均レースタイムや平均ラップタイム、枠順別成績、先行馬成績 などです。
割とこの特徴量作るのに手間かかったので、期待していたのですがあんまりでしたね。
もっと別の視点で集計が必要かもしれません。
カテゴリ別集計情報
騎手、調教師、馬主、父、母父の集計成績(トラック別・距離延長/短縮・芝/ダート替わり・重/不良馬場成績など)です。
おそらくですが、フィールド数が増えすぎてうまく学習できていないのでは?と思っています。
根本的にモデル構造など変えなければ、現状適用は難しいと思います。
なので騎手、調教師、馬主、父、母父の集計成績に関しては基本的に全体の集計しか予測に利用していません(トラックや馬場状態などで分けない)。
事前オッズ
確定オッズはそもそも特徴量として入れるべきではない、ということはすでに述べた通りですが、
前日夜や当日朝などの事前オッズは予測精度にかなり影響するのでは?
と思って実験してみました。
結果的にはあまり効果がありませんでしたが、
これは予測AIモデルに対しての話なので、別途馬券購入戦略には使えるかもしれません(時系列オッズを活用)。
まとめ
今回は、
- 特徴量設計の考え方と検討方法
- 予測に影響する特徴量例
について説明しました。
特徴量設計にあたっては、自分の持っている競馬知識にプラスして他の方のノウハウも参考にして予測に反映すると良いです。
試行錯誤の連続で、正直期待外れな結果になって落胆することも多いですが他者との差別化が図れる部分ですので、
思いついた特徴量があればどんどん試していきたいですね。
それでは次回は学習用データ生成について解説したいと思います!