AIモデル解説 — LambdaRank とライン特徴量
LightGBM LambdaRank (NDCG@1-3最適化) / 全25特徴量 / 全国43競輪場対応
AIモデル解説
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 を正規化したものです。 上位12件を掲載しています。
| 順位 | 特徴量 | カラム名 | Gain 寄与率 |
|---|---|---|---|
| 1 | 競走得点 | kyoso_tokuten | 83.84% |
| 2 | 級班 | class_code | 6.9% |
| 3 | 競輪場 | venue_id | 1.87% |
| 4 | ライン先頭のB回数 | line_head_b | 1.15% |
| 5 | 直近3連対率 | recent_3rate | 0.88% |
| 6 | 風速 | wind_speed | 0.88% |
| 7 | 直近2連対率 | recent_2rate | 0.7% |
| 8 | 車番 | car_no | 0.64% |
| 9 | 直近勝率 | recent_win_rate | 0.46% |
| 10 | 直線距離 | straight_length | 0.46% |
| 11 | レース番号 | race_no | 0.37% |
| 12 | 逃げ回数 | nige_count | 0.3% |
「3連単の本命1点買い(予測1位→2位→3位)を全レースで機械的に購入する」 という単純な戦略で検証した結果です。1レースあたり100円投資として計算しています。
バックテストはシミュレーション生成レースによる検証値であり、実際の払戻実績ではありません。
この数値の限界を明記します。 検証に用いたレース結果はシミュレーションで生成したものであり、 実際の開催・実際の払戻に基づく成績ではありません。 選手マスタ(級班・脚質・競走得点・決まり手回数・バック回数)は KEIRIN.JP の公開情報を取り込んでいますが、レースの着順と払戻は そのデータを基に生成しています。したがって上記の的中率・回収率は モデルの相対的な性能を比較するための指標であり、 実運用での収支を保証するものではありません。
データ取得 → ライン特徴量生成 → LambdaRank学習 → 推論 → バックテスト → 静的HTML出力(ゼロサーバーコスト構成)。予想本文・選手ページ・ 開催日別ページはすべてビルド時に静的HTMLとして書き出されます。