KeibaFactorAI のしくみ

AIの学習と予測について

「AIが予想する」と言われても、中で何をしているのかが分からないと信用のしようがありません。
このページでは、KeibaFactorAIが行っている学習予測を、専門用語をかみくだいて説明します。

ひとことで言うと

過去のレースで「どんな馬が上位に来たか」の傾向を数式にまとめ(学習)、その数式に今日の出馬表を通して着順を見積もる(予測)。やっているのはこの2つだけです。

1. 集める

予測したい開催日の前日までの1年ぶんのレースを、出馬表と結果をそろえて読み込みます。1年でおよそ3,400レース・4万8千頭ぶんのデータです。すべてJRA-VANデータラボから取り込んだものです。

2. 学習する

「前走の着順」「近走の平均着順」「騎手の勝率」「斤量」「データマイニング予想順位」などの項目と、実際の着順との関係を、コンピュータが繰り返し計算して数式にまとめます。

3. 予測する

できあがった数式に、その日の出馬表を通します。出走する馬それぞれに点数が付き、点数の高い順に ◎〇△×56… が決まります。

AIの「学習」とは何をしているのか

人が競馬を覚えるときも、たくさんレースを見て「前走で好走した馬は次も走る」「この騎手はダートで強い」「長期休養明けは割り引く」と法則を覚えていきます。
AIの学習はそれを、人の感覚ではなく数字の積み上げでやっているだけです。

学習に使うもの

用語かみくだくとKeibaFactorAIの場合
学習データ お手本にする過去のレース 予測する開催日の前日までの1年ぶん。古すぎると今の勢力と合わず、短すぎると数が足りないため、初期値を1年にしています(月数は変更できます)。
特徴量
(とくちょうりょう)
判断材料。AIに見せる項目 出馬表にそのまま載っている項目(馬番・馬齢・斤量・馬体重・性別・東西・ブリンカー・JRA-VANのデータマイニング予想順位)と、過去の成績から計算して作る33項目(前走・前々走・3走前の着順、前走の人気・オッズ・上がり3F・着差・4角位置、休養日数、近3走・近5走の平均着順、通算の勝率・連対率・複勝率、同距離帯・同芝ダ・同競馬場の複勝率、騎手と調教師の過去1年の勝率・複勝率、乗り替わり、馬体重と斤量の増減、本賞金など)。レース側は競馬場・トラック・距離・出走頭数・競走種別・クラス・重量種別を見ます。どれを使うかは開発側で検証した推奨値が全利用者に配られます。
目的変数
(もくてきへんすう)
当てにいく「答え」 着順ランク/1着になったか/2連対したか/3連対したか、の4つ。4つを別々に学習します。
モデル 学習でできあがった数式のかたまり 目的変数ごとに1つずつ、計4つ作られます。
アルゴリズム 学習のやり方 勾配ブースティング(LightGBM)。「はい/いいえ」の枝分かれ(決定木)を少しずつ積み重ねていく方式です。

「計算して作る特徴量」について

競馬のデータは、1行がそのレースのその馬ぶんです。「前走はどうだったか」「この騎手はこの1年でどれだけ勝っているか」は、その行には書かれていません。そこでKeibaFactorAIは、学習の前に同じデータベースの過去の行をたどって、馬ごと・騎手ごと・調教師ごとの成績を計算し、1行に書き足してから学習します。人が出馬表と過去のレース結果を見比べてやっていることを、機械的に全馬ぶん行うわけです。

まとまり計算して作る項目
前走・近走前走の着順・人気・オッズ・出走頭数・上がり3F・着差・4角位置、前走からの距離差、芝ダ替わり、前々走・3走前の着順、休養日数、近3走・近5走の平均着順、近3走の最高着順、近3走の平均人気
通算成績出走数、勝率、連対率、複勝率、獲得本賞金
条件別の相性同じ距離帯・同じ芝ダート・同じ競馬場での複勝率
騎手・調教師過去1年の勝率・複勝率・騎乗数、乗り替わりかどうか
当日の変化馬体重の増減、斤量の前走との差
レースの格1着本賞金

学習の進み方

ざっくり言えば「予測してみる → 答え合わせ → ずれた分を直す」の繰り返しです。

まず雑に予測

最初のモデルは当たりません。全馬に似たような点を付ける程度です。

答えと比べる

実際の着順と見比べて、どの馬をどれだけ間違えたかを測ります。

間違いを直す枝を足す

間違えたレースを説明できる枝分かれを1本足します。これを何千回も繰り返します。

行き過ぎる前に止める

直しすぎると過去だけに詳しい「暗記」になるので、途中で改善が止まったらそこで打ち切ります。

設定意味
学習回数枝を足す回数の上限。初期値2000回。多いほど細かく覚えますが、暗記に近づきます。
早期打切りこの回数ぶん改善しなくなったら学習を止める、という歯止め。初期値50回。
学習率1回ごとにどれだけ直すか。初期値0.05。小さいほど慎重に、ゆっくり学びます。
葉の数1本の枝分かれの細かさ。初期値31。大きいほど複雑な条件を表せますが、暗記しやすくなります。
これらの設定は開発側で検証した推奨値が自動で配られるので、利用者が調整する必要はありません。学習は開催日ごとにボタン1つ、数分から十数分で終わります。

「ちゃんと学べたか」の確かめ方

学習に使ったレースで答え合わせをしても、暗記した答案を採点するようなもので意味がありません。そこで学習期間の後ろ2割は学習に使わず、答え合わせ専用に取り分けています。

検証取り分けたレースで、1着的中率と3連対率を測ります。
ベースライン比較競馬は単勝1番人気の馬がおよそ3回に1回勝つ競技です。そのため「常に単勝1番人気を本命にする」だけの成績を必ず並べて表示します。これを上回れなければ、AIを使う意味がないからです。あわせて、JRA-VANのデータマイニング予想1位を本命にした場合の成績も並べます。
データの欠け予測する日のデータに抜けがあると精度が落ちるため、欠測の割合もログに出しています。

AIの「予測」とは何をしているのか

学習でできたモデルに、その日の出馬表を1頭ずつ通すだけです。返ってくるのは順位ではなく点数で、その点数を高い順に並べたものが ◎〇△×56… になります。

4つの見方で予測する

予測するもの何が分かるか
着順ランク出走馬の中での強さの序列。1位から18位までの並びを直接学習したものです。1位と2位が僅差なのか断然なのかが分かるよう、順位だけでなく元の点数も残しています。
1着確率その馬が1着になりやすいか。単勝と、馬単の頭を決めるときの判断材料です。
2連対確率2着までに入りやすいか。馬単の相手(〇△×5)を選ぶときに使います。
3連対確率3着までに入りやすいか。

4つは別々に学習した別々のモデルです。だからこそ、4つの見方が同じ馬を指しているレースは信頼でき、バラバラのレースは危ない、という判断ができます。ソフトではこの一致の度合いを「AIモデル一致度」として点数にしています。

予測から「レース診断」へ

予測はあくまで材料です。KeibaFactorAIは、その材料を組み合わせて「このレースは買う価値があるか」まで判断します。

診断項目予測から、どう計算しているか
予測容易度1位と2位の点差が大きいほど高くなります。実力差がはっきりしているレースです。
AIモデル一致度4つのモデルが同じ馬を上位に置いているかどうか。
AI信頼度一致度と、その競馬場・レース番号の過去データの多さから求めます。
波乱度16頭以上の多頭数か、障害レースか、新馬・未勝利戦か、ハンデ戦か、馬体重の増減が大きい馬がいないか、上位5頭の予想タイムが団子状態でないか、といった荒れやすさ。
妙味AIの本命と、JRA-VANのデータマイニング予想1位との食い違いの大きさ。食い違うレースは「人気の盲点」になりえますが、そのぶん当てにくくもあります。
総合評価・判定上の項目に重みを付けて足したものが総合評価(S〜D)。しきい値で「買い/様子見/見送り」を決めます。

守っているルール

AIの予測は、作り方を少し間違えるだけで「過去を振り返れば当たっているのに、本番では当たらない」という状態になります。それを避けるために、次のことを徹底しています。

答えを見て学習しない

学習に使うのは、予測する開催日の前日までのレースだけです。予測する日の結果は、たとえ手元にあっても学習には混ぜません。

当日しか分からない項目を使わない

最終オッズや最終人気は、前日の予測時には入りません。これを学習に入れると、前日の予測時だけ材料が欠けた状態になるため、推奨の特徴量から外しています(「単勝1番人気」との比較にだけ使います)。

結果が混ざる項目を外す

レースが終わってから決まる「脚質判定(逃げ・先行・差し・追込)」は、結果そのものです。入れると成績が良く見えますが、実戦では役に立たないため、候補からも外してあります。

騎手や調教師を「名前」でそのまま覚えさせると、人数が多すぎて過去の暗記になりやすいことが検証で分かりました。そのため名前ではなく、その騎手・調教師の過去1年の勝率・複勝率という数字に置きかえて学習させています。

AIにできること・できないこと

できること

何千レース・何万頭ぶんもの傾向を、感情や体調に左右されずに同じ基準で当てはめること。そして「このレースは条件が揃っていない」と買わない判断を淡々と出すことです。人が土日の全レースを同じ精度で見続けるのは困難です。

できないこと

結果を当てることの保証はできません。AIが出すのは確率であり、確率が高いレースでも外れます。出遅れ・不利・馬場の急変・馬のその日の気配など、データに現れない要素も競馬には多くあります。

正直にお伝えしておくこと。競馬は単勝1番人気の馬がおよそ3回に1回勝つ競技で、「常に単勝1番人気を本命にする」だけでもかなりの的中率になります。オッズには多くの人の予想が織り込まれているため、これは非常に強いベースラインです。開発では毎回この数字と並べて検証しており、これを安定して上回ることを目標に改良を続けています。的中率や利益をうたうことはいたしません。

本ソフトは判断材料を提供するものであり、購入の判断はご利用者ご自身で行ってください。公営競技には損失の可能性があります。

用語のまとめ

学習過去のデータから規則性を見つけて、数式(モデル)を作る作業。
予測できた数式に新しいデータを通して、結果を見積もること。
特徴量AIに見せる判断材料の項目。前走着順、騎手の勝率、斤量など。
計算特徴量出馬表には無く、過去のデータから計算して作る特徴量。近走の平均着順や騎手の過去1年の勝率など。
目的変数当てにいく答え。着順ランク、1着確率など。
モデル学習の成果物。特徴量を入れると点数を返す数式のかたまり。
過学習過去のデータを暗記してしまい、新しいレースでは当たらなくなること。
検証学習に使わなかったデータで答え合わせをすること。
ベースライン比較の基準。ここでは「常に単勝1番人気を本命にする」買い方。
データマイニング予想JRA-VANが配信している予想。KeibaFactorAIでは特徴量のひとつとして使い、「妙味」の計算にも使います。
リーク本番では使えないはずの情報(答えなど)が、学習に混ざってしまうこと。
勾配ブースティング枝分かれの判断(決定木)を少しずつ積み重ねて精度を上げる学習方式。LightGBMはその実装のひとつ。

KeibaFactorAIの機能を見る

学習と予測のしくみが、実際の画面でどう使えるのかは製品ページでご確認いただけます。