AIモデル解説 — LambdaRank とライン特徴量

LightGBM LambdaRank (NDCG@1-3最適化) / 全25特徴量 / 全国43競輪場対応

このページでわかること

ランキング学習としての競輪予想

競輪で知りたいのは「その選手が何秒で走るか」ではなく 「同じレースの中で誰が上位に来るか」です。そこで本モデルは、各選手の着順を 1着=5 / 2着=4 / 3着=3 / 4着=2 / 5着=1 / 6着以下=0 の 段階的評価スコアに変換し、レースをひとつのグループとして LightGBM の LambdaRank で学習させています。評価指標は NDCG@1-3、 つまり上位3着の並びの正確さを直接最適化しています。

推論時はレース内スコアを softmax で正規化して「AI勝率」として表示し、 スコア順に◎○▲△✕注の印を割り当てます。推奨買い目は予測1位を軸に固定し、 上位4車の組み合わせから信頼度上位を提示しています。

ライン特徴量の設計

競輪が競馬や競艇と決定的に違うのは、レースがライン単位の連携で動くことです。 個々の能力値だけを並べたモデルでは「強い先行選手の番手にいる追込型」を 正しく評価できません。そこで隊列の情報を次の6項目に分解して与えています。

特徴量意味設計意図
is_line_headライン先頭ライン先頭かどうか。風圧を受け続ける不利と、主導権を握れば押し切れる有利の両面を学習させる。
is_second番手番手かどうか。先頭の風よけを受けられるため、同じ実力なら連対率が上がることをモデルが捉える。
is_third三番手三番手かどうか。3着圏内に押し上げられやすい位置。
is_solo単騎単騎かどうか。風よけを得られない不利を表す。
line_sizeライン人数所属ラインの人数。人数が多いほど隊列を維持しやすい。
line_head_bライン先頭のB回数自ライン先頭選手のバック回数(B)。「強い先行選手のラインにいるか」を数値化した、競輪特有のライン強度指標。

役割フラグは排他的(どの選手も必ず1つだけ1になる)で、 ライン人数と実際の所属者数が一致することをテストで検証しています。 用語の意味は競輪用語集を参照してください。

特徴量重要度(Gain 寄与率)

学習済みモデルにおける各特徴量の Gain を正規化したものです。 上位12件を掲載しています。

順位特徴量カラム名Gain 寄与率
1競走得点kyoso_tokuten83.84%
2級班class_code6.9%
3競輪場venue_id1.87%
4ライン先頭のB回数line_head_b1.15%
5直近3連対率recent_3rate0.88%
6風速wind_speed0.88%
7直近2連対率recent_2rate0.7%
8車番car_no0.64%
9直近勝率recent_win_rate0.46%
10直線距離straight_length0.46%
11レース番号race_no0.37%
12逃げ回数nige_count0.3%

バックテストの条件

「3連単の本命1点買い(予測1位→2位→3位)を全レースで機械的に購入する」 という単純な戦略で検証した結果です。1レースあたり100円投資として計算しています。

バックテスト実績

検証レース数864R
1着的中率56.7%
2連単的中率29.5%
3連単的中率13.5%
3連単回収率92.8%
投資/回収86,400円 / 80,150円

バックテストはシミュレーション生成レースによる検証値であり、実際の払戻実績ではありません。

この数値の限界を明記します。 検証に用いたレース結果はシミュレーションで生成したものであり、 実際の開催・実際の払戻に基づく成績ではありません。 選手マスタ(級班・脚質・競走得点・決まり手回数・バック回数)は KEIRIN.JP の公開情報を取り込んでいますが、レースの着順と払戻は そのデータを基に生成しています。したがって上記の的中率・回収率は モデルの相対的な性能を比較するための指標であり、 実運用での収支を保証するものではありません。

パイプライン

データ取得 → ライン特徴量生成 → LambdaRank学習 → 推論 → バックテスト → 静的HTML出力(ゼロサーバーコスト構成)。予想本文・選手ページ・ 開催日別ページはすべてビルド時に静的HTMLとして書き出されます。