競馬AI開発メモ:人気薄の激走馬を重く学習するとAIは穴馬に強くなるのか?

競馬AI開発

はじめに

今回は特徴量追加ではなく、「学習のさせ方」を変えることで予測性能が変わるかを検証します。具体的には、人気薄で好走した馬 (いわゆる「穴馬として好走した馬」) を LightGBM の学習時に sample_weight で重く扱うことで、モデルの穴馬評価・キャリブレーション・単勝シミュレーション回収率に何が起きるかを確認します。

なぜ人気薄を重く学習するのか

多くの実データでは、上位人気馬の情報量が多く、下位人気馬 (人気薄) は「勝つ例が少ないノイズ」として扱われがちです。学習損失に対する寄与は少ない上、下位人気の馬が勝ったサンプルはさらに希少なため、モデルが下位人気帯の確率を過小評価する傾向が生まれる可能性があります。

この記事では「人気薄で好走したサンプル」の sample_weight を上げることで、モデルの高オッズ帯キャリブレーション、NDCG、単勝シミュレーション、EV候補評価がどう動くかを確認します。 重すぎると今度は高オッズ馬の予測勝率が過大になり、EV候補や単勝ROIが悪化する可能性もあります。

今回確認すること

  • 人気薄で好走した馬を重く学習すると、人気薄・高オッズ馬の予測精度は上がるか
  • 全体 AUC / logloss / Brier はどう動くか
  • NDCG@3 は改善するか、人気順 NDCG との差分は改善するか
  • 単勝シミュレーション回収率は改善するか
  • EV候補 (EV≥1.0/1.1/1.2) の予測勝率と実勝率の gap は縮むか
  • 高オッズ帯 (10倍以上) の過大評価は悪化しないか
  • 人気ありモデル / 人気なしモデルで挙動は変わるか

使用データ

  • テーブル: result_table
  • 学習期間: 2017〜2022 年 (787,381 件)
  • 検証期間: 2023〜2023 年 (136,354 件, early stopping / unweighted)
  • 評価期間: 2024〜2024 年 (138,372 件, レース数 13,677)
  • 帯広 (ばんえい競馬) は除外 (124,418 行)

人気薄・高オッズ・波乱レースの定義

  • 人気薄: 人気 ≥ 6 (6番人気以下)
  • 高オッズ: 単勝オッズ ≥ 10.0 倍
  • 波乱レース: 1着馬の人気 ≠ 1 (= 「1番人気が負けたレース」または「1着馬が6番人気以下のレース」)

本記事では最低限の「6番人気以下」「単勝10倍以上」を採用しています。8番人気以下・20倍以上などの追加定義は次回以降で扱う予定です。

学習データ (train) における重み対象の出現率

対象出現率
人気薄 (6番人気以下) 全馬50.08%
人気薄 かつ 1着0.92%
高オッズ (≥10倍) 全馬64.46%
高オッズ かつ 1着1.58%
波乱レースの全馬56.26%
波乱レースの1着馬5.54%

「人気薄かつ1着」「高オッズかつ1着」は train 全体の 1〜数%程度と非常に少ないため、重みを2倍〜3倍にしても損失に与える影響は限定的だと予想されます。

学習重みの作り方

  • ベースは全サンプル weight = 1.0
  • 対象サンプルにのみ weight = 倍率 を掛ける
  • 重み設計は train データの結果情報のみを使用。valid / test の結果は重み設計にもハイパラ調整にも使わない
  • valid の early stopping は unweighted (sample_weight を渡さない)
  • 確定オッズ (単勝) は学習特徴量には使わず、sample_weight の作成と評価にのみ使用

比較するモデル

以下の優先バリアントを、「人気なしモデル」と「人気ありモデル」の両方で学習しました。

  • A_baseline: 通常学習 (全 weight = 1.0)
  • C_longshot_winner_weight × 1.5 / 2.0 / 3.0: 人気薄 かつ 1着 の馬の weight を倍率倍
  • E_high_odds_winner_weight × 1.5 / 2.0 / 3.0: 単勝10倍以上 かつ 1着 の馬の weight を倍率倍
  • G_upset_race_winner_weight × 1.5 / 2.0 / 3.0: 波乱レース (1着馬が1番人気ではない) の1着馬の weight を倍率倍
  • H_combined × 2.0: C ∪ E ∪ G の合成条件を満たす馬の weight を 2.0 倍

モデルはすべて LightGBM 二値分類 (1着 = 1, それ以外 = 0)。ハイパーパラメータは全モデル共通です。

評価指標

本記事では前回整備した評価基盤 (scripts/experiments/evaluation_metrics.py) を再利用しています。

  • 通常指標: AUC / logloss / Brier
  • NDCG: model_ndcg@1/3/5, popularity_ndcg@1/3/5, delta_ndcg@3, 人気順に勝ったレース率
  • 単勝シミュレーション: モデル予測1位 / 予測勝率≥0.30 / オッズ≥5.0 / オッズ≥10.0 の各フィルタ別に回収率・最大DD・最大連敗
  • EV候補評価: EV ≥ 1.0 / 1.1 / 1.2 で件数・予測勝率・実勝率・calibration gap・平均オッズ・単勝回収率
  • オッズ帯別キャリブレーション: 1.0-1.9 / 2.0-2.9 / 3.0-4.9 / 5.0-9.9 / 10.0-19.9 / 20.0-49.9 / 50.0+
  • 人気帯別キャリブレーション: 1 / 2-3 / 4-5 / 6-9 / 10+

特に本記事では、AUC の絶対値よりも以下を重視します。

  • 高オッズ帯 (10倍以上) の calibration gap
  • 人気帯 6-9 / 10+ の calibration gap
  • EV候補の実勝率が予測勝率に近づくか
  • 単勝シミュレーション回収率と最大DD・最大連敗
  • NDCG@3 が baseline から大きく劣化していないか

結果

通常指標

表1-a: 通常指標 (人気なしモデル)

バリアント件数正例率AUCloglossBrier重み対象行数
A_baseline (重み=1)138,3720.09890.73590.28910.08220
C_longshot_winner ×1.5138,3720.09890.73540.28950.08227,219
C_longshot_winner ×2.0138,3720.09890.73500.29030.08237,219
C_longshot_winner ×3.0138,3720.09890.73380.29270.08277,219
E_high_odds_winner ×1.5138,3720.09890.73520.28980.082312,417
E_high_odds_winner ×2.0138,3720.09890.73480.29120.082512,417
E_high_odds_winner ×3.0138,3720.09890.73370.29580.083212,417
G_upset_race_winner ×1.5138,3720.09890.73500.29260.082943,625
G_upset_race_winner ×2.0138,3720.09890.73470.30000.084643,625
G_upset_race_winner ×3.0138,3720.09890.73410.32110.090643,625
H_combined ×2.0138,3720.09890.73480.29990.084643,648

表1-b: 通常指標 (人気ありモデル)

バリアント件数正例率AUCloglossBrier重み対象行数
A_baseline (重み=1)138,3720.09890.84590.24380.07150
C_longshot_winner ×1.5138,3720.09890.84560.24490.07157,219
C_longshot_winner ×2.0138,3720.09890.84390.24750.07177,219
C_longshot_winner ×3.0138,3720.09890.83600.25190.07237,219
E_high_odds_winner ×1.5138,3720.09890.84580.24540.071612,417
E_high_odds_winner ×2.0138,3720.09890.84530.24860.071912,417
E_high_odds_winner ×3.0138,3720.09890.84250.25960.073412,417
G_upset_race_winner ×1.5138,3720.09890.84590.24880.072543,625
G_upset_race_winner ×2.0138,3720.09890.84500.25850.075243,625
G_upset_race_winner ×3.0138,3720.09890.83700.28290.083143,625
H_combined ×2.0138,3720.09890.84500.25850.075243,648

NDCG 比較

表2-a: NDCG (人気なしモデル)

バリアントmodel_ndcg@1model_ndcg@3model_ndcg@5popularity_ndcg@3delta_ndcg@3人気順に勝ったレース率
A_baseline (重み=1)0.40530.51190.60800.6486-0.136723.40%
C_longshot_winner ×1.50.40330.51170.60700.6486-0.136823.40%
C_longshot_winner ×2.00.40380.51140.60700.6486-0.137223.29%
C_longshot_winner ×3.00.40350.51030.60560.6486-0.138323.35%
E_high_odds_winner ×1.50.40120.51010.60620.6486-0.138523.23%
E_high_odds_winner ×2.00.40240.50990.60660.6486-0.138623.51%
E_high_odds_winner ×3.00.40010.51010.60560.6486-0.138523.39%
G_upset_race_winner ×1.50.40240.51040.60700.6486-0.138223.24%
G_upset_race_winner ×2.00.40210.51000.60630.6486-0.138623.54%
G_upset_race_winner ×3.00.40160.51040.60660.6486-0.138223.58%
H_combined ×2.00.40320.51060.60680.6486-0.138023.32%

表2-b: NDCG (人気ありモデル)

バリアントmodel_ndcg@1model_ndcg@3model_ndcg@5popularity_ndcg@3delta_ndcg@3人気順に勝ったレース率
A_baseline (重み=1)0.55290.64790.73030.6486-0.00070.96%
C_longshot_winner ×1.50.55300.64840.72790.6486-0.00020.41%
C_longshot_winner ×2.00.55300.64830.72400.6486-0.00030.31%
C_longshot_winner ×3.00.55300.64260.71260.6486-0.00602.62%
E_high_odds_winner ×1.50.55300.64760.72990.6486-0.00091.35%
E_high_odds_winner ×2.00.55300.64650.72970.6486-0.00203.36%
E_high_odds_winner ×3.00.55300.63990.72740.6486-0.008711.40%
G_upset_race_winner ×1.50.55240.64810.73000.6486-0.00050.68%
G_upset_race_winner ×2.00.54760.64670.72870.6486-0.00192.22%
G_upset_race_winner ×3.00.48140.62820.71030.6486-0.020314.90%
H_combined ×2.00.54750.64650.72880.6486-0.00202.18%

単勝シミュレーション (モデル予測1位)

表3-a: 単勝シミュレーション (人気なしモデル / モデル予測1位)

バリアントベット数的中数的中率投資額払戻額回収率最大DD最大連敗
A_baseline (重み=1)13,6774,22430.88%1,367,700円1028250円0.7518340330円28
C_longshot_winner ×1.513,6774,20730.76%1,367,700円1016060円0.7429353290円30
C_longshot_winner ×2.013,6774,21930.85%1,367,700円1028420円0.7519341400円24
C_longshot_winner ×3.013,6774,21430.81%1,367,700円1040760円0.7610328770円26
E_high_odds_winner ×1.513,6774,18030.56%1,367,700円1022360円0.7475345840円24
E_high_odds_winner ×2.013,6774,20030.71%1,367,700円1035830円0.7574333190円26
E_high_odds_winner ×3.013,6774,16730.47%1,367,700円1019260円0.7452349620円26
G_upset_race_winner ×1.513,6774,19830.69%1,367,700円1025270円0.7496344840円24
G_upset_race_winner ×2.013,6774,18530.60%1,367,700円1040060円0.7604327790円23
G_upset_race_winner ×3.013,6774,18530.60%1,367,700円1043210円0.7627324650円24
H_combined ×2.013,6774,20530.75%1,367,700円1050520円0.7681318250円28

表3-b: 単勝シミュレーション (人気ありモデル / モデル予測1位)

バリアントベット数的中数的中率投資額払戻額回収率最大DD最大連敗
A_baseline (重み=1)13,6776,15044.97%1,367,700円1107130円0.8095260730円14
C_longshot_winner ×1.513,6776,15144.97%1,367,700円1106900円0.8093260960円14
C_longshot_winner ×2.013,6776,15144.97%1,367,700円1106900円0.8093260960円14
C_longshot_winner ×3.013,6776,15144.97%1,367,700円1106900円0.8093260960円14
E_high_odds_winner ×1.513,6776,15144.97%1,367,700円1106900円0.8093260960円14
E_high_odds_winner ×2.013,6776,15144.97%1,367,700円1106900円0.8093260960円14
E_high_odds_winner ×3.013,6776,15144.97%1,367,700円1106900円0.8093260960円14
G_upset_race_winner ×1.513,6776,14444.92%1,367,700円1106390円0.8089261470円14
G_upset_race_winner ×2.013,6776,07644.42%1,367,700円1111440円0.8126256420円16
G_upset_race_winner ×3.013,6775,13437.54%1,367,700円1120070円0.8189249340円16
H_combined ×2.013,6776,07644.42%1,367,700円1110260円0.8118257600円16

表3-c: 単勝シミュレーション (人気なしモデル / 予測1位 & オッズ≥10.0)

バリアントベット数的中数的中率投資額払戻額回収率最大DD最大連敗
A_baseline (重み=1)1,599543.38%159,900円111220円0.695657220円141
C_longshot_winner ×1.51,648533.22%164,800円106140円0.644166830円226
C_longshot_winner ×2.01,633563.43%163,300円115350円0.706451950円147
C_longshot_winner ×3.01,652643.87%165,200円130880円0.792343400円109
E_high_odds_winner ×1.51,687583.44%168,700円118050円0.699856280円94
E_high_odds_winner ×2.01,684573.38%168,400円119600円0.710255480円166
E_high_odds_winner ×3.01,698593.47%169,800円115270円0.678957200円148
G_upset_race_winner ×1.51,657553.32%165,700円110380円0.666167280円143
G_upset_race_winner ×2.01,691593.49%169,100円127420円0.753551650円147
G_upset_race_winner ×3.01,726563.24%172,600円119560円0.692756780円162
H_combined ×2.01,692623.66%169,200円131060円0.774648740円89

表3-d: 単勝シミュレーション (人気ありモデル / 予測1位 & オッズ≥10.0)

バリアントベット数的中数的中率投資額払戻額回収率最大DD最大連敗
A_baseline (重み=1)100.00%100円0円0.00000円1
C_longshot_winner ×1.5100.00%100円0円0.00000円1
C_longshot_winner ×2.0100.00%100円0円0.00000円1
C_longshot_winner ×3.0100.00%100円0円0.00000円1
E_high_odds_winner ×1.5100.00%100円0円0.00000円1
E_high_odds_winner ×2.0100.00%100円0円0.00000円1
E_high_odds_winner ×3.0100.00%100円0円0.00000円1
G_upset_race_winner ×1.5100.00%100円0円0.00000円1
G_upset_race_winner ×2.03133.33%300円1120円3.7333100円2
G_upset_race_winner ×3.04149.76%4,100円4200円1.02441900円20
H_combined ×2.04125.00%400円1120円2.8000100円2

EV候補評価

表4-a: EV≥1.0 候補 (人気なしモデル)

バリアント件数予測勝率実勝率calibration gap平均オッズ単勝回収率
A_baseline (重み=1)84,0830.08920.02850.060785.610.6213
C_longshot_winner ×1.587,3770.09230.02880.063583.600.6269
C_longshot_winner ×2.090,3580.09550.02930.066281.810.6326
C_longshot_winner ×3.094,2660.10330.03060.072879.130.6415
E_high_odds_winner ×1.588,7520.09500.02940.065682.570.6282
E_high_odds_winner ×2.092,4260.10130.03050.070980.170.6356
E_high_odds_winner ×3.098,1320.11440.03260.081876.490.6472
G_upset_race_winner ×1.594,7310.11120.03370.077578.210.6402
G_upset_race_winner ×2.0102,1210.13270.03860.094173.540.6516
G_upset_race_winner ×3.0111,5520.17310.04650.126668.110.6663
H_combined ×2.0102,0680.13260.03830.094473.570.6498

表4-b: EV≥1.0 候補 (人気ありモデル)

バリアント件数予測勝率実勝率calibration gap平均オッズ単勝回収率
A_baseline (重み=1)53,0500.08050.04610.034593.750.5890
C_longshot_winner ×1.571,9560.06900.03760.031392.480.6146
C_longshot_winner ×2.082,6490.06890.03450.034487.260.6268
C_longshot_winner ×3.087,6950.08020.03660.043783.360.6457
E_high_odds_winner ×1.575,9670.07170.03860.033088.610.6220
E_high_odds_winner ×2.089,1620.07550.03790.037681.550.6401
E_high_odds_winner ×3.0100,3160.09070.03700.053775.120.6581
G_upset_race_winner ×1.588,9730.09560.05160.043977.230.6469
G_upset_race_winner ×2.0108,8520.12000.06030.059667.250.6694
G_upset_race_winner ×3.0123,4110.16050.06720.093361.200.6815
H_combined ×2.0108,9890.12000.06030.059767.210.6705

表4-c: EV≥1.2 候補 (人気なしモデル)

バリアント件数予測勝率実勝率calibration gap平均オッズ単勝回収率
A_baseline (重み=1)76,1500.08690.02360.063392.300.6086
C_longshot_winner ×1.579,6420.08990.02410.065790.000.6131
C_longshot_winner ×2.082,9210.09290.02430.068687.830.6192
C_longshot_winner ×3.087,1640.10070.02550.075284.610.6306
E_high_odds_winner ×1.581,1150.09250.02460.067988.730.6170
E_high_odds_winner ×2.085,1790.09880.02590.072985.800.6302
E_high_odds_winner ×3.091,2100.11180.02740.084481.520.6378
G_upset_race_winner ×1.587,2360.10860.02800.080583.690.6268
G_upset_race_winner ×2.094,9630.12980.03200.097878.290.6391
G_upset_race_winner ×3.0105,1970.16980.03940.130471.790.6562
H_combined ×2.094,9590.12970.03210.097678.280.6399

表4-d: EV≥1.2 候補 (人気ありモデル)

バリアント件数予測勝率実勝率calibration gap平均オッズ単勝回収率
A_baseline (重み=1)37,2000.06520.03090.0344109.950.5619
C_longshot_winner ×1.556,5850.05440.02410.0303108.400.5856
C_longshot_winner ×2.069,5700.05560.02240.033299.970.6082
C_longshot_winner ×3.076,4250.06790.02440.043593.160.6260
E_high_odds_winner ×1.560,1490.05780.02470.0330103.320.5856
E_high_odds_winner ×2.075,1670.06260.02520.037493.190.6160
E_high_odds_winner ×3.090,4010.08110.02710.054082.410.6468
G_upset_race_winner ×1.570,1230.08030.03490.045390.840.6068
G_upset_race_winner ×2.092,1900.10690.04570.061276.150.6480
G_upset_race_winner ×3.0114,0930.15300.05830.094664.970.6725
H_combined ×2.092,1180.10690.04570.061276.250.6514

オッズ帯別キャリブレーション

表5-a: オッズ帯別 calibration_gap 比較 (人気なしモデル)

※ 各セルは 予測勝率 - 実勝率 (オッズ帯別)。正なら過大評価、負なら過小評価。

バリアント1.0-1.92.0-2.93.0-4.95.0-9.910.0-19.920.0-49.950.0+
A_baseline (重み=1)-0.3275-0.1401-0.05040.00690.04140.05170.0427
C_longshot_winner ×1.5-0.3264-0.1378-0.04740.01080.04600.05670.0480
C_longshot_winner ×2.0-0.3276-0.1368-0.04530.01440.05060.06200.0536
C_longshot_winner ×3.0-0.3263-0.1326-0.03950.02190.05940.07170.0636
E_high_odds_winner ×1.5-0.3245-0.1352-0.04440.01400.04920.05970.0502
E_high_odds_winner ×2.0-0.3214-0.1301-0.03840.02110.05710.06790.0578
E_high_odds_winner ×3.0-0.3180-0.1221-0.02780.03430.07190.08380.0729
G_upset_race_winner ×1.5-0.3003-0.1106-0.02160.03460.06710.07430.0591
G_upset_race_winner ×2.0-0.2757-0.08350.00530.06030.09100.09570.0747
G_upset_race_winner ×3.0-0.2315-0.03490.05360.10710.13500.13510.1040
H_combined ×2.0-0.2758-0.08360.00520.06010.09110.09570.0746

表5-b: オッズ帯別 calibration_gap 比較 (人気ありモデル)

※ 各セルは 予測勝率 - 実勝率 (オッズ帯別)。正なら過大評価、負なら過小評価。

バリアント1.0-1.92.0-2.93.0-4.95.0-9.910.0-19.920.0-49.950.0+
A_baseline (重み=1)-0.10340.0274-0.0007-0.00270.00640.00830.0075
C_longshot_winner ×1.5-0.10670.0259-0.0015-0.00260.01200.01830.0139
C_longshot_winner ×2.0-0.11510.0205-0.0035-0.00230.01790.02830.0216
C_longshot_winner ×3.0-0.10900.0259-0.0009-0.00070.02740.04430.0294
E_high_odds_winner ×1.5-0.10730.0257-0.00040.00440.02010.02140.0142
E_high_odds_winner ×2.0-0.11320.0229-0.00000.01110.03320.03410.0213
E_high_odds_winner ×3.0-0.14190.0039-0.00500.02340.05850.06070.0412
G_upset_race_winner ×1.5-0.10740.05130.05780.04210.03420.02450.0145
G_upset_race_winner ×2.0-0.10810.07260.10720.08210.05990.03950.0204
G_upset_race_winner ×3.0-0.10760.11110.18700.15030.10610.06690.0306
H_combined ×2.0-0.10830.07260.10740.08210.06000.03950.0204

参考: 表5-c: A_baseline (人気なしモデル) のオッズ帯別 詳細

オッズ帯件数予測勝率実勝率calibration gaploglossBrier単勝回収率(帯全体)
1.0-1.97,2110.24080.5683-0.32750.99230.35770.8236
2.0-2.97,8630.18300.3230-0.14010.73930.24680.7754
3.0-4.912,8600.15150.2019-0.05040.55680.17270.7657
5.0-9.920,6800.12120.11430.00690.38360.10750.7851
10.0-19.920,8490.09810.05670.04140.24440.05950.7832
20.0-49.927,0770.07730.02560.05170.15210.03050.7880
50.0+41,8320.04770.00500.04270.06510.00820.4821

参考: 表5-d: C_longshot_winner ×2.0 (人気なしモデル) のオッズ帯別 詳細

オッズ帯件数予測勝率実勝率calibration gaploglossBrier単勝回収率(帯全体)
1.0-1.97,2110.24070.5683-0.32760.98250.35700.8236
2.0-2.97,8630.18620.3230-0.13680.72710.24510.7754
3.0-4.912,8600.15660.2019-0.04530.54640.17120.7657
5.0-9.920,6800.12870.11430.01440.37790.10690.7851
10.0-19.920,8490.10740.05670.05060.24500.05980.7832
20.0-49.927,0770.08760.02560.06200.15770.03140.7880
50.0+41,8320.05860.00500.05360.07520.00910.4821

人気帯別キャリブレーション

表6-a: 人気帯別 calibration_gap 比較 (人気なしモデル)

※ 各セルは 予測勝率 - 実勝率 (人気帯別)。正なら過大評価、負なら過小評価。

バリアント12-34-56-910+
A_baseline (重み=1)-0.2442-0.01880.03800.04500.0324
C_longshot_winner ×1.5-0.2422-0.01580.04220.05010.0382
C_longshot_winner ×2.0-0.2421-0.01330.04640.05550.0444
C_longshot_winner ×3.0-0.2389-0.00720.05460.06520.0551
E_high_odds_winner ×1.5-0.2400-0.01260.04550.05290.0400
E_high_odds_winner ×2.0-0.2357-0.00640.05310.06090.0475
E_high_odds_winner ×3.0-0.22940.00460.06750.07660.0627
G_upset_race_winner ×1.5-0.21610.00980.06410.06580.0467
G_upset_race_winner ×2.0-0.19030.03630.08860.08530.0605
G_upset_race_winner ×3.0-0.14420.08430.13330.12170.0863
H_combined ×2.0-0.19040.03620.08850.08530.0604

表6-b: 人気帯別 calibration_gap 比較 (人気ありモデル)

※ 各セルは 予測勝率 - 実勝率 (人気帯別)。正なら過大評価、負なら過小評価。

バリアント12-34-56-910+
A_baseline (重み=1)-0.00640.00020.00320.00080.0015
C_longshot_winner ×1.5-0.0090-0.00050.00350.01230.0057
C_longshot_winner ×2.0-0.0166-0.00190.00540.02370.0115
C_longshot_winner ×3.0-0.0098-0.00020.00560.04170.0150
E_high_odds_winner ×1.5-0.00950.00130.01750.01220.0057
E_high_odds_winner ×2.0-0.01430.00230.03100.02350.0107
E_high_odds_winner ×3.0-0.04060.00100.05750.04850.0273
G_upset_race_winner ×1.5-0.00980.06170.03390.01260.0059
G_upset_race_winner ×2.0-0.01010.11410.06230.02330.0094
G_upset_race_winner ×3.0-0.00580.19910.11360.04300.0147
H_combined ×2.0-0.01020.11420.06240.02330.0094

重み倍率別比較

表7-a: C_longshot_winner の重み倍率別比較 (人気なしモデル)

重み倍率AUCloglossBrierNDCG@3delta_ndcg@3単勝ROI(model_top1)odds≥10帯 calibration_gap
×1.00.73590.28910.08220.5119-0.13670.75180.0414
×1.50.73540.28950.08220.5117-0.13680.74290.0460
×2.00.73500.29030.08230.5114-0.13720.75190.0506
×3.00.73380.29270.08270.5103-0.13830.76100.0594

表7-b: E_high_odds_winner の重み倍率別比較 (人気なしモデル)

重み倍率AUCloglossBrierNDCG@3delta_ndcg@3単勝ROI(model_top1)odds≥10帯 calibration_gap
×1.00.73590.28910.08220.5119-0.13670.75180.0414
×1.50.73520.28980.08230.5101-0.13850.74750.0492
×2.00.73480.29120.08250.5099-0.13860.75740.0571
×3.00.73370.29580.08320.5101-0.13850.74520.0719

表7-c: G_upset_race_winner の重み倍率別比較 (人気なしモデル)

重み倍率AUCloglossBrierNDCG@3delta_ndcg@3単勝ROI(model_top1)odds≥10帯 calibration_gap
×1.00.73590.28910.08220.5119-0.13670.75180.0414
×1.50.73500.29260.08290.5104-0.13820.74960.0671
×2.00.73470.30000.08460.5100-0.13860.76040.0910
×3.00.73410.32110.09060.5104-0.13820.76270.1350

表7-d: C_longshot_winner の重み倍率別比較 (人気ありモデル)

重み倍率AUCloglossBrierNDCG@3delta_ndcg@3単勝ROI(model_top1)odds≥10帯 calibration_gap
×1.00.84590.24380.07150.6479-0.00070.80950.0064
×1.50.84560.24490.07150.6484-0.00020.80930.0120
×2.00.84390.24750.07170.6483-0.00030.80930.0179
×3.00.83600.25190.07230.6426-0.00600.80930.0274

考察

人気薄を重く学習すると穴馬に強くなったか

「人気薄かつ1着」のサンプルは train 全体の 1〜数%と非常に少ないため、重み倍率 1.5〜3.0 では損失関数に与える影響は限定的でした。その結果、AUC / logloss / Brier は A_baseline から大きく変わらないことが多く、NDCG@3 も同様に大きな改善は見られない場合が多いです。上の表2で人気薄重み付けバリアントの NDCG@3 が A_baseline を上回っているかを確認できます。

重み対象を「1着」ではなく「全馬 (B) / 3着内 (D, F)」に広げれば重み対象は数倍になりますが、その場合は「人気薄馬の弱走サンプルまで重くする」ことになり、逆に人気薄馬の予測勝率を下げる方向に働く可能性もあります。今回は優先バリアントに絞ったため未検証で、次回以降の検討事項です。

高オッズ馬の過大評価は改善したか、悪化したか

calibration gap の定義は 予測勝率 - 実勝率 で、正に大きいほど予測勝率が実勝率を上回っている (= 過大評価)負に大きいほど予測勝率が実勝率を下回っている (= 過小評価) です。

表5 (オッズ帯別 calibration_gap 比較) の 10.0-19.9 / 20.0-49.9 / 50.0+ 帯を見ると、重み倍率を上げるほど calibration gap が正方向に大きくなり、高オッズ馬の予測勝率が実勝率を上回りやすくなる傾向が見られます。これは、高オッズ帯の過大評価が悪化している可能性を示しています。

NDCG や人気順との差はどう変わったか

AUC が同等でも、レース内 NDCG は微妙に変化することがあります。人気薄重み付けは「上位馬より下位馬の順位精度」を優先する方向に働くため、NDCG@1 (1着相当の relevance が最大) は変わらないが NDCG@5 (下位まで含む) が動く、というパターンも出やすいです。

回収率は改善したか

単勝シミュレーション (表3) では、モデル予測1位の ROI が baseline より安定的に改善しているか、むしろ悪化しているかを見ます。1年評価では分散が大きいため、単年で ROI が 1.0 を上回っても実運用で再現できるとは限りません。最大DD・最大連敗も併せて確認する必要があります。

EV候補評価 (表4) では、EV≥1.0 / 1.2 の候補について予測勝率 – 実勝率 が baseline より縮まっているか、単勝回収率が baseline より高いかを確認します。

重み付けだけで十分か

sample_weight の変更は最も軽い介入であり、正例が極端に少ないサブグループに対しては効果が限定的になりやすいです。よりドラスティックな改善を狙うなら、以下の組み合わせが候補になります。

  • キャリブレーション後補正 (Isotonic / Platt Scaling)
  • ランキング学習 (LightGBM の lambdarank) との併用
  • 堅いレース用 / 波乱レース用モデル分離
  • オッズ帯別に独立モデルを訓練

まとめ

今回の検証は、人気薄で好走した「馬単体」を sample_weight で重くする方法でした。

  • sample_weight を変えても AUC / logloss / Brier / NDCG は大きく改善せず、むしろ重みを強くすると高オッズ帯の calibration gap が正方向に広がり、高オッズ馬の過大評価が悪化しやすい傾向が見られた
  • 一部の単勝シミュレーションでは ROI が改善したバリアントもあるが、NDCG やキャリブレーションが同時に改善しているわけではないため、「穴馬に強くなった」とは断定できない
  • 重要なのは AUC 単体ではなく、オッズ帯別・人気帯別の calibration gap、EV候補の実勝率、単勝シミュレーション ROI・最大DD・最大連敗を総合的に見ること
  • 人気ありモデル / 人気なしモデルの両方で同じ重みバリアントを試すことで、人気特徴量そのものによる補正効果と、sample_weight の効果を切り分けやすくなる
タイトルとURLをコピーしました