はじめに
今回は「馬体重」と「馬体重増減」を特徴量化し、LightGBMの予測精度に効くかを確認します。
今回確認すること
- 馬体重そのものを入れると精度が上がるか
- 馬体重増減を入れると精度が上がるか
- 過去平均との差(通常体重からのズレ)が効くか
- 馬体重のトレンド(増加傾向・減少傾向)が効くか
- 大幅増減のフラグが効くか
- 馬体重の安定度が効くか
- 好走時体重との差が効くか
- レース内での相対体重が効くか
- 人気あり/なしで馬体重特徴量の効果は変わるか
馬体重特徴量とは何か
馬体重・馬体重増減は通常レース前に発表される情報です。 馬体重そのものだけでなく、以下のような情報も特徴量化できます。
- その馬の通常体重からのズレ(過去平均との差)
- 直近の増減傾向(トレンド)
- 大幅な増減(調子の変化の手がかり)
- 好走したときの体重に近いかどうか
- 同レース内での相対的な体重位置
重要な注意点:
- 馬体重・馬体重増減は馬体重発表後に予測する前提の特徴量です
- 馬体重発表前に予測する運用では使えません
- 今走の着順・タイム・着差・上がりなどの結果情報は使っていません
- 過去走集計は必ず shift(1) して今走を含めていません
使用データ
- テーブル:
result_table - 学習期間: 2017-01-01 ~ 2022-12-31 (787,381 件)
- 検証期間: 2023-01-01 ~ 2023-12-31 (136,354 件)
- 評価期間: 2024-01-01 ~ 2024-12-31 (138,372 件)
- 全体: 1,062,107 件
- 帯広除外: 124,418 件除外
- 1着率(学習期間): 0.1000
- 1着率(評価期間): 0.0989
馬体重・馬体重増減の分布
馬体重の分布
- 平均: 465.13
- 中央値: 465.0
- 標準偏差: 33.115
- 最小: 310.0
- 最大: 634.0
- 欠損数: 653
馬体重増減の分布
- 平均: 0.311
- 中央値: 0.0
- 標準偏差: 5.684
- 最小: -64.0
- 最大: 72.0
- 欠損数: 653
増減カテゴリ分布
| カテゴリ | 件数 | 割合 |
|---|---|---|
| 増加 | 480,026 | 45.2% |
| 減少 | 461,328 | 43.4% |
| 増減なし | 120,100 | 11.3% |
作成した馬体重特徴量
A: baseline
馬体重特徴量なしのベース特徴量のみ(比較の基準)
B: 今走の馬体重
今走の馬体重・log変換・欠損フラグ
body_weightlog_body_weightbody_weight_missing_flag
C: 今走の馬体重増減
今走の馬体重増減・絶対値・欠損フラグ
body_weight_changeabs_body_weight_changebody_weight_change_missing_flag
D: 過去平均との差
過去平均馬体重との差・zスコア
past_avg_body_weightpast_median_body_weightpast_std_body_weightbody_weight_diff_from_past_avgabs_body_weight_diff_from_past_avgbody_weight_zscore_vs_past
E: 馬体重トレンド
直近の馬体重増減トレンド(傾向)
past_body_weight_change_1past_body_weight_change_2recent_avg_body_weight_change_3recent_avg_body_weight_change_5body_weight_trend_3body_weight_trend_5
F: 大幅増減フラグ
大幅増減(10kg/20kg以上)フラグ
is_large_gain_10is_large_gain_20is_large_loss_10is_large_loss_20is_large_abs_change_10is_large_abs_change_20
G: 馬体重安定度
馬体重の安定度(標準偏差・変動係数)
body_weight_std_3body_weight_std_5body_weight_cv_5is_body_weight_stableis_body_weight_unstable
H: 好走時体重との差
好走時(3着内)体重と今走体重の差
good_run_avg_body_weightgood_run_median_body_weightbody_weight_diff_from_good_avgabs_body_weight_diff_from_good_avghas_good_run_body_weight_history
I: レース内相対体重
同レース内での相対体重(順位・パーセンタイル)
body_weight_rank_in_racebody_weight_percentile_in_racebody_weight_change_rank_in_racebody_weight_change_percentile_in_race
ALL: 全馬体重特徴量
B〜Iをすべて追加
比較方法
- モデル: LightGBM
- 時系列分割(ランダム分割ではない)
- 目的変数: 1着に入るか(補助: 3着内に入るか)
- 評価指標: AUC / logloss / Brier score
- 人気なしモデルと人気ありモデルの2条件で比較
ベース特徴量(A_baseline):
距離・馬番・枠番・斤量・年齢・同走馬の数・月・曜日・過去3走平均着順・過去3走3着内率
※ ベースラインには馬体重・馬体重増減を含めない(効果を測定するため)
結果
人気なしモデル:1着予測
| 特徴量セット | AUC | logloss | Brier | AUC差 | logloss差 |
|---|---|---|---|---|---|
| A: baseline | 0.7287 | 0.2911 | 0.0826 | – | – |
| B: 今走の馬体重 | 0.7335 | 0.2897 | 0.0823 | +0.0048 | -0.0014 |
| C: 今走の馬体重増減 | 0.7300 | 0.2907 | 0.0825 | +0.0013 | -0.0004 |
| D: 過去平均との差 | 0.7340 | 0.2896 | 0.0823 | +0.0053 | -0.0015 |
| E: 馬体重トレンド | 0.7339 | 0.2895 | 0.0822 | +0.0052 | -0.0016 |
| F: 大幅増減フラグ | 0.7297 | 0.2908 | 0.0825 | +0.0010 | -0.0003 |
| G: 馬体重安定度 | 0.7345 | 0.2894 | 0.0822 | +0.0058 | -0.0017 |
| H: 好走時体重との差 | 0.7322 | 0.2902 | 0.0824 | +0.0035 | -0.0009 |
| I: レース内相対体重 | 0.7354 | 0.2891 | 0.0822 | +0.0067 | -0.0020 |
| ALL: 全馬体重特徴量 | 0.7405 | 0.2875 | 0.0818 | +0.0118 | -0.0036 |
人気ありモデル:1着予測
| 特徴量セット | AUC | logloss | Brier | AUC差 | logloss差 |
|---|---|---|---|---|---|
| A: baseline | 0.8457 | 0.2439 | 0.0715 | – | – |
| B: 今走の馬体重 | 0.8456 | 0.2440 | 0.0715 | -0.0001 | +0.0001 |
| C: 今走の馬体重増減 | 0.8460 | 0.2439 | 0.0714 | +0.0003 | +0.0000 |
| D: 過去平均との差 | 0.8456 | 0.2439 | 0.0715 | -0.0001 | +0.0000 |
| E: 馬体重トレンド | 0.8457 | 0.2439 | 0.0714 | +0.0000 | +0.0000 |
| F: 大幅増減フラグ | 0.8457 | 0.2438 | 0.0714 | +0.0000 | -0.0001 |
| G: 馬体重安定度 | 0.8456 | 0.2438 | 0.0714 | -0.0001 | -0.0001 |
| H: 好走時体重との差 | 0.8456 | 0.2440 | 0.0715 | -0.0001 | +0.0001 |
| I: レース内相対体重 | 0.8461 | 0.2437 | 0.0714 | +0.0004 | -0.0002 |
| ALL: 全馬体重特徴量 | 0.8457 | 0.2439 | 0.0714 | +0.0000 | +0.0000 |
補助検証:3着内予測(人気なし)
| 特徴量セット | AUC | logloss | Brier | AUC差 | logloss差 |
|---|---|---|---|---|---|
| A: baseline | 0.7161 | 0.5444 | 0.1828 | – | – |
| B: 今走の馬体重 | 0.7188 | 0.5427 | 0.1821 | +0.0027 | -0.0017 |
| C: 今走の馬体重増減 | 0.7168 | 0.5439 | 0.1826 | +0.0007 | -0.0005 |
| D: 過去平均との差 | 0.7196 | 0.5422 | 0.1819 | +0.0035 | -0.0022 |
| E: 馬体重トレンド | 0.7190 | 0.5427 | 0.1821 | +0.0029 | -0.0017 |
| F: 大幅増減フラグ | 0.7166 | 0.5441 | 0.1827 | +0.0005 | -0.0003 |
| G: 馬体重安定度 | 0.7196 | 0.5423 | 0.1819 | +0.0035 | -0.0021 |
| H: 好走時体重との差 | 0.7185 | 0.5430 | 0.1822 | +0.0024 | -0.0014 |
| I: レース内相対体重 | 0.7208 | 0.5413 | 0.1816 | +0.0047 | -0.0031 |
| ALL: 全馬体重特徴量 | 0.7245 | 0.5390 | 0.1806 | +0.0084 | -0.0054 |
特徴量重要度(人気なし・1着・ALL)
| 順位 | 特徴量 | Gain |
|---|---|---|
| 1 | past3_avg_rank | 271201.6 |
| 2 | past3_top3_rate | 82780.7 |
| 3 | body_weight_percentile_in_race | 31069.0 |
| 4 | 同走馬の数 | 22795.8 |
| 5 | 年齢 | 16323.1 |
| 6 | 距離 | 10011.2 |
| 7 | recent_avg_body_weight_change_5 | 9953.3 |
| 8 | past_std_body_weight | 9925.3 |
| 9 | body_weight_std_5 | 8309.3 |
| 10 | 月 | 7688.9 |
| 11 | has_good_run_body_weight_history | 7552.0 |
| 12 | 斤量 | 7235.6 |
| 13 | past_median_body_weight | 6906.0 |
| 14 | body_weight | 6875.8 |
| 15 | body_weight_trend_5 | 6367.1 |
特徴量重要度(人気あり・1着・ALL)
| 順位 | 特徴量 | Gain |
|---|---|---|
| 1 | 人気 | 887405.2 |
| 2 | past3_avg_rank | 53170.4 |
| 3 | past3_top3_rate | 27847.3 |
| 4 | 同走馬の数 | 11828.0 |
| 5 | body_weight_percentile_in_race | 8541.4 |
| 6 | 年齢 | 4230.7 |
| 7 | body_weight | 3923.9 |
| 8 | recent_avg_body_weight_change_5 | 3819.7 |
| 9 | body_weight_change_percentile_in_race | 3214.5 |
| 10 | past_std_body_weight | 3211.2 |
| 11 | 月 | 2947.6 |
| 12 | recent_avg_body_weight_change_3 | 2922.0 |
| 13 | abs_body_weight_diff_from_past_avg | 2919.5 |
| 14 | 距離 | 2820.3 |
| 15 | body_weight_change | 2788.6 |
条件別分析
ALLモデル(人気なし・1着予測)のテスト期間における条件別AUC:
| 条件 | AUC | logloss | Brier | N | 正例率 |
|---|---|---|---|---|---|
| 馬体重増加 | 0.7429 | 0.2819 | 0.0799 | 63,187 | 0.0962 |
| 馬体重減少 | 0.7372 | 0.2907 | 0.0827 | 59,570 | 0.1003 |
| 馬体重増減なし | 0.7419 | 0.2981 | 0.0858 | 15,560 | 0.1044 |
| 10kg以上増加 | 0.7116 | 0.3512 | 0.1040 | 7,195 | 0.1286 |
| 10kg以上減少 | 0.7242 | 0.3073 | 0.0881 | 4,723 | 0.1069 |
| 20kg以上増加 | 0.6813 | 0.3827 | 0.1154 | 1,162 | 0.1420 |
| 20kg以上減少 | 0.6990 | 0.2877 | 0.0799 | 317 | 0.0915 |
| 過去平均より重い | 0.7354 | 0.2836 | 0.0801 | 80,532 | 0.0962 |
| 過去平均より軽い | 0.7502 | 0.2743 | 0.0774 | 51,303 | 0.0939 |
| 過去平均との差が大きい | 0.7356 | 0.2770 | 0.0778 | 32,743 | 0.0928 |
| 好走時体重履歴あり | 0.7381 | 0.2894 | 0.0823 | 121,683 | 0.0997 |
| 好走時体重履歴なし | 0.7549 | 0.2737 | 0.0781 | 16,689 | 0.0931 |
| 馬体重発表なし | 0.6560 | 0.2905 | 0.0818 | 55 | 0.0909 |
考察
馬体重特徴量は効いたか
全馬体重特徴量を追加すると、AUCが 0.7287 → 0.7405 (+0.0118) と改善しました。
どの特徴量が効いたか
人気なしモデルで最もAUCが高かったのは レース内相対体重 でした。
人気ありモデルとの差
人気ありモデル: AUC 0.8457 → 0.8457 (+0.0000) 人気なしモデル: AUC 0.7287 → 0.7405 (+0.0118)
人気ありモデルでは改善幅が小さく、馬体重情報の一部が人気に織り込まれている可能性があります。
条件別に見て効きやすかったところ
AUCが0.55を超えた条件:
- 好走時体重履歴なし: AUC=0.7549
- 過去平均より軽い: AUC=0.7502
- 馬体重増加: AUC=0.7429
- 馬体重増減なし: AUC=0.7419
- 好走時体重履歴あり: AUC=0.7381
まとめ
馬体重特徴量を追加することで、1着予測のAUCが +0.0118 改善しました。
馬体重・馬体重増減は発表後に予測する前提の特徴量であり、運用タイミングに注意が必要です。

