JRA DB(中央競馬)

AIの予想方法

このページでは「なにを材料に」「どんな順番で」「どんな意味の予想を出しているか」を、競馬に慣れていない方にも追いやすいように説明します。 人間の予想家が近走・適性・展開・オッズを順に見ていくイメージに近い流れです。

はじめにひとことで言うと

一言でいうと、「過去の成績(近走)や脚質の傾向(通過順から推定)、今日の条件との相性、そして単勝オッズ」を段階的に組み合わせて、各馬の強さを点数化し、目的別に順位を付けています。

対象は中央競馬(JRA)のみです。地方競馬は対象外です。

流れ予想ができるまでの流れ

1データを集める

過去走の着順・タイム、通過順、上がり3ハロン、グレードレースでの成績、騎手の直近成績、レース条件(芝・ダート、距離など)、単勝オッズ・払戻などをデータベースに蓄積します。

2ベース評価(Stage1)

各馬の「最近どれだけ走れているか」を、勝率・3着内率・平均着順・重賞での好走などから基礎点にします。ここは人間でいう〈能力の土台〉です。

3変化の救済(Stage1.5)

直近で脚が上がっている、休み明けから立て直している、着順が急に伸びた、差し脚が噛み合っている、など“材料だけ見ると見落としがちな好材料”を加点します(上限あり)。

4条件適性・展開(Stage2)

今日の馬場・距離に似た過去が良いか、展開(前が多い/少ない)に脚質が合うか、ローテーションや騎手の調子、などを加点・減点します。

5オッズと合体(Stage3)

上まで出した強さ(スコア)から、レース内での相対的な勝ちやすさ(確率のイメージ)を作り、単勝オッズと掛け合わせて妙味(期待値の指標)を出します。

6見せ方(3軸+4頭の印)

「当てやすさ」「妙味」「荒れを拾う」など目的の違う3種類で順位を作り、それぞれから単勝4頭に を付けます。

データどんなデータを使うか(素人向け)

下の表は「アプリ上で主に参照している種類」のイメージです。細かい列名はインフラ側の都合で増えますが、考え方はこの通りです。

馬の能力・近走の材料

種類意味(かんたん)なぜ使うか
勝率・3着内率最近どれだけ好走しているか総合力の土台
平均着順・ベスト着順順位の安定度・ピーク安定して上位に来るか
レースタイム時計の持ち(参考)能力の補助情報
上がり3Fの推移直近で末脚が良くなっているか上積みのサイン
通過順(位置取り)先行・差しなどのクセ展開との相性
グレード戦との相性重賞で前が取れるか格の試合での底上げ

今日のレース条件・枠組み

種類意味なぜ使うか
芝 / ダート・距離馬向きの条件適性評価
出走馬の脚質の分布ハイペースになりやすいか等展開シナリオ
前走からの間隔休み・詰まりローテの割引/加点

騎手

種類意味なぜ使うか
騎手のJRA直近の複勝圏率乗り手の勢い小さな加点減点
用語メモ: 「Stage1で作る特徴量」には、直近何走分か(既定は10走など)を窓として集計した recent_win_rate(近走走勝率)や recent_top3_rate(3着内率)などが含まれます。機械学習モードではこの系の数値に、当日の距離・芝ダを足してモデルに入れます。

段階Stage1〜3 の中身(もう少し具体的に)

Stage1:基礎能力(ルール版の考え方)

近走の勝ち切り力・複勝圏の安定度・平均着順の良さ・実績の厚み(経験)・重賞での前着などを点数にまとめ、まず「土台の強さ」を作ります。 ここは人間の予想でいう「能力順のたたき台」に相当します。

Stage1.5:直近の“良い変化”を拾う

ルール例(すべて過去データから自動判定):

加点は上限(キャップ)があり、一度に過大評価しすぎないようにしています。

Stage2:適性・展開・ローテ・騎手

同じ馬場・だいたい同じ距離帯での過去成績、今日のペース想定(先行が多い/少ない)と脚質のマッチ、間隔の詰まりや長期休養、騎手の直近調子などで微調整します。 「向き不向き」「展開ハマり/外れ」がここに入ります。

Stage3:オッズ統合(妙味)

Stage2までで付いた強さスコアから、レース内での相対確率(イメージ)を割り当てます(全馬のスコア合計に対する割合)。 その上で単勝オッズと掛け合わせ、妙味用の期待値指標(expected_roi)と、高回収狙い用(expected_roi_aggressive)を作ります。

表示される % や ROI は「将来の成績を保証する値」ではなく、同じレース内での相対評価を見やすくした指標です。

3軸3種類の予想の違い(使い分け)

同じレース・同じ材料でも、「何を優先するか」で並び順が変わります。競艇サイトでいう「的中重視 / 回収率重視 / 大穴重視」に近い3パターンです(名称は競馬向けにしています)。

タイプ優先すること向いている人
堅実 スコア(能力+補正)を土台に、当たりやすい軸を上に並べる とにかく軸を外したくない、素直に能力順を見たい
妙味 オッズとのバランス。期待値指標が高い馬を上にする(割安探し 多少の振れを許しても、理屈とオッズの妙を取りに行きたい
高回収狙い よりオッズの幅を取り、ドンピシャで厚く乗った時のインパクトを重視 分散は大きいが、長期の厚みを狙いたい(※保証ではない)

単勝4頭の印(◎〇▲△)について

各軸(堅実 / 妙味 / 高回収狙い)ごとに順位の上から4頭に印を付けています。

比較画面(sheet_compare.html)では、堅実軸について ◎だけの1着率〇だけの1着率に加え、◎か〇のどちらかが1着だった割合(合算)も表示します。

文言コメント(3行・10行)について

AIがその場で読めるように、根拠と注意点を短く整理したテキストを自動生成しています。

文章はルールベースで組み立てています。人間の予想コメントのようなニュアンスは、今後も調整しやすい形にしています。

オッズ単勝オッズはどこから来るか

原則として、データベース内のオッズ明細(単勝)を優先して参照します。明細が無い場合は、出馬表側に載っている単勝オッズで補完します。 オッズが無い馬は、妙味・高回収の指標が欠けることがあります(その場合は表示上わかるようにします)。

運用いつ予想が出るか(公開タイミング)

本システムは、サーバ上でバッチ/コマンド実行していつでも再計算できる形です。発走○分前に固定公開、のような競艇サイト型のスケジュール固定は、現状はシステム全体の運用ルールとしては未固定です。

「直前オッズに完全同期した予想」を運用で担保したい場合は、データ取込の更新頻度(JV-Link 側)と合わせて、運用メニュー(何分前に回すか)を別途決めるのがおすすめです。

学習機械学習(LightGBM)はいつ使うか

デフォルトはルールベースの Stage1 スコアです。学習済みモデル(LightGBM)を指定した場合は、Stage1 の基礎点をモデル推定に差し替えます(その後の Stage1.5 / 2 / 3 は同じ流れ)。

学習データは JRA の過去レースから特徴量を作り、例えば「3着以内に入ったか」などのラベルで二値分類として学習します(詳細は ai/train_model.py)。

モデルは「経験則を数字にした器」であって、血統の妙・厩舎の意図・直前の気配・馬場の当日変化といった人間が現場で拾う情報までは入っていません。逆に言えば、同じ材料を毎回ブレずに使える「土台」には向きます。

予想家向け人間の予想との対照(しっくりくるための地図)

紙面やネットの予想では、だいたい「能力 → 条件適性 → 展開 → オッズ」の順で頭の中を整理します。このサイトも同じ順路を段階(Stage)に分けて機械的に再現しています。違いは、人間の〈狙い目〉〈穴狙いの嗅覚〉は弱く、データに載っている事実の整合を優先することです。

人間の観点との対応イメージ

競馬ファンが見るもの本システムでの位置づけ押さえどころ
近走・実績で「今どれだけ信用できるか」 Stage1(+学習モデル使用時はその推定スコア) 勢いより一貫した成績の型を拾いやすい設定です。
コース形・距離・馬場と脚質のハマり Stage2(コース・展開・騎手・一部ナレッジ) 「この馬場のこの回り」みたいな超ローカルな感覚は、ルール化できる範囲に限定されています。
ラップ・調教で今日は妙に良さそう、など 予想6(画面のデフォルト)では Stage1.5 をオフにしてモデルと Stage2 を優先 人間の「直感で拾う変化」は別パターン(予想1など)の方が寄せやすいです。
割引けか・妙味か Stage3(オッズ・期待値の指標) オッズはDBに取れた範囲で照合。直前の縦揺れまでは追えません。

向いている読み方・向いていない読み方

用語のすり合わせ:ここでいう「妙味」は投資の割安性に近い指標で、場賭け全体の期待値を保証するものではありません。回収率の数字も、長いサンプルを見たときの参考として読むのが筋です。

予想家コメント(質問)への回答

以下は「予想方法」ページを見た予想家さんからの質問に対する補足です。現状の実装が“できていること/できていないこと”を正直に明文化します。

Q. 「走り方のクセ」は走法?AIは走法まで判定できる?

A. 走法(フォーム)の判定はしていません。ここで言う「クセ」は、過去走の通過順(位置取り)などから推定する脚質傾向(先行/差し寄り)です。

Q. Stage1の基礎点は「相手関係」を見て相対的に調整できる?

A. Stage1は基本的にその馬の近走成績を集計して点数化しており、「このクラスの相手が弱いから割引」「昇級初戦は割引」など、 人間の相手関係読みを直接推定して調整する仕組みは強くありません。 ただし、同芝ダ/距離帯/競馬場の好走率や、重賞での好走(格の実績)などの条件文脈は加味します。

Q. 昇級初戦・新馬勝ち直後を過大評価しない?(弱い相手の好走を盛りすぎない?)

A. リスクはあります。現状は「絶対に起きない」設計ではなく、Stage1.5の加点に上限(キャップ)を設ける、 Stage2/Stage3(条件・オッズ)まで通して極端に寄らないようにする、という思想です。 「相手関係の強弱をより直接に推定して足し引きする」は改善テーマとして妥当です。

Q. netkeiba のタイム指数を重く参照している?

A. 参照していません(タイム指数そのものは使っていません)。

Q. Stage1.5「長期休養明けの反発」はどう評価?(買い時を過ぎた馬を上げない?)

A. Stage1.5は「平均能力だけでは落としやすい直近の変化サインを少し救済する」枠です。 休養後に一度使って上向いたようなパターンを拾うことがありますが、万能ではないため加点は上限を設けています。 ご指摘の「休み明け凡走→2走目の上積みを厚めに」「休養期間で上積み度合いを変える」は改善余地として筋が良いです。

Q. Stage1.5「着順の急回復」「差し伸び」は展開恩恵だけを除外できる?

A. 完全には除外できません。若駒の成長・古馬のリフレッシュ・条件替わりなど「良化の理由」が複数あり、 その切り分けは難しいため、現状は救済として少しだけ加点(上限あり)の扱いです。

Q. Stage2「同じ馬場・距離の好走」=適性と決め打ちしない?

A. サンプルが少ない馬は「たまたま」が混ざり得ます。現状は同条件成績を特徴量として使うため、 信頼度(母数)をどう扱うかは改善余地があります。

Q. Stage2「ペース想定×脚質」は何で判断?隊列読みまで入る?

A. 現状は主に「出走馬全体の脚質分布」などから簡易に想定します。どの馬がどの位置に行くか(隊列)までの精密な読みは弱く、 「強い馬が下級で逃げていただけ→昇級で逃げられない」のようなケースは課題として残ります。

Q. 間隔の詰まり/長期休養/騎手の直近調子の扱いは?

A. いずれも現状は「小さな加点減点」として扱う寄りです。若馬/古馬や休養長短で評価が変わる、騎手は馬質の影響が大きい等、 人間がケースバイケースでやっている精密さは改善余地があります。

画面「予想結果」一覧の見方(予想6・p6_latest)

all_race_compare_profiles.html では、結果が確定した中央レースについて予想6(最新統合)だけを日付の新しい順に並べています。各行の ◎〜△ は、そのときの堅実軸(精度寄りの並び)の上から4頭です。

本命自信度(0〜100)

レース内のスコア差や、本命のレース内シェアなどを混ぜた自信の目安です。高いほど「そのレースの中では軸がクッキリしている」ことを示しやすいだけで、将来の勝率そのものを保証する数値ではありません

判定列(◎的中 / 〇的中 / 未)

そのレースの1着馬が、AIの◎または〇に入っていたかを示します。◎か〇のどちらかが当たったという広い的中(合算)を知りたい場合は、集計JSONや別画面のKPIを参照してください。

一覧ページはレコードの閲覧に特化しています。的中率・馬連BOX・競馬場別の集計は 集計JSON を開いて確認できます。

FAQよくある質問

Q. 「走り方のクセ」とは走法のこと?AIが走法まで判定している?

A. ここでいう「クセ」は走法(フォーム)ではありません。映像から走法を判定する処理はしていません。 本サイトで扱うのは、過去走の通過順(位置取り)などから推定した「先行・差し」寄りの脚質の傾向です。

Q. Stage1の「土台の強さ」はレースごとに相対評価(相手関係の調整)される?

A. Stage1は基本的に「その馬の近走成績」から作るため、対戦相手そのものを直接見て強弱を補正する(人間の“クラス・相手関係読み”の完全再現)まではしていません。 ただし、同一条件の複勝率(同芝ダ/距離帯/競馬場)や重賞での好走(格の実績)などの文脈要素は取り入れています。最終的な順位は、レース内でのスコア差も踏まえて見やすく整形します。

Q. 昇級初戦・新馬勝ち直後みたいに「相手が弱い中での好走」を過大評価しない?

A. そのリスクはあります。現状は「過大評価を絶対に起こさない」設計ではなく、Stage1.5の加点に上限(キャップ)を設けたり、Stage2/Stage3 で条件・オッズと合わせて見たときに極端に寄らないようにする、という考え方です。 「相手関係の強弱をもっと直接に推定して調整したい」は改善テーマとして妥当です。

Q. netkeiba のタイム指数を重く使っている?

A. いいえ。現状は netkeiba のタイム指数そのものは参照していません。

Q. Stage1.5 の「長期休養明けの反発」「着順の急回復」「差し伸び」はどういう意図?

A. Stage1だけだと「平均的な強さ」に寄り、直近の上向きや展開ハマりの兆しを落としやすいので、直近の変化サインを“少しだけ”救済するための加点です(上限あり)。 ここは“万能の正解”ではなく、過去データのパターンから機械的に拾うため、展開恩恵だけのケースが混ざる可能性もあります。

Q. AIは「絶対に当たる」の?

A. いいえ。確率や指標は参考です。馬券の結果は分散が大きく、短期間だけ見ると良くも悪くも振れます。

Q. なぜ「堅実」「妙味」「高回収」で順位が違うの?

A. 同じ馬でも、得意とする買い方(当てに行く/割安を取る/厚みを取る)が違うからです。

Q. ◎と〇の合算的中率は何を意味する?

A. 「本命候補の上2頭のどちらかが当たった」という広めの当たり判定です。1着の厳密な的中(◎のみ)とは別物です。

Q. 競艇サイトの説明ページみたいにもっと増やしたい

A. スケジュール表や「買い目の種類」の章など、運用が固まったタイミングで追記できます。希望の見出しがあればお知らせください。