評価する(3:PFI結果)

評価

今回はPFIの結果です。これらの結果から何が見えるのか?そして、何が課題なのかを突き詰めておきたいと思っています。まず、以下が結果でした。


📊 Baseline NDCG@3: 0.9201

🚀 Numeric PFI: 24 features × 5 repeats
✅ done: 距離  ΔNDCG@3 = +0.0010 ± 0.0009  (249.7s)
✅ done: 馬番  ΔNDCG@3 = -0.0004 ± 0.0003  (253.1s)
✅ done: 斤量  ΔNDCG@3 = -0.0004 ± 0.0002  (250.3s)
✅ done: 馬体重  ΔNDCG@3 = -0.0003 ± 0.0005  (248.8s)
✅ done: 体重増減  ΔNDCG@3 = -0.0001 ± 0.0006  (249.5s)
✅ done: 日数差  ΔNDCG@3 = -0.0014 ± 0.0015  (248.5s)
✅ done: 日数差_norm  ΔNDCG@3 = -0.0006 ± 0.0000  (252.6s)
✅ done: 斤量_馬体重比  ΔNDCG@3 = -0.0005 ± 0.0000  (251.2s)
✅ done: 好成績  ΔNDCG@3 = -0.0008 ± 0.0004  (252.1s)
✅ done: 距離フラグ  ΔNDCG@3 = -0.0005 ± 0.0004  (256.3s)
✅ done: 脚質フラグ  ΔNDCG@3 = -0.0008 ± 0.0002  (268.0s)
✅ done: 馬場フラグ  ΔNDCG@3 = -0.0009 ± 0.0001  (266.0s)
✅ done: 出走数  ΔNDCG@3 = -0.0039 ± 0.0017  (264.0s)
✅ done: 勝利数  ΔNDCG@3 = -0.0058 ± 0.0008  (261.7s)
✅ done: 騎手勝率  ΔNDCG@3 = -0.0068 ± 0.0001  (259.1s)
✅ done: 過去走破速度  ΔNDCG@3 = -0.0068 ± 0.0001  (262.7s)
✅ done: 過去人気  ΔNDCG@3 = -0.0065 ± 0.0006  (260.8s)
✅ done: 過去着順  ΔNDCG@3 = -0.0068 ± 0.0004  (259.3s)
✅ done: 過去上り  ΔNDCG@3 = -0.0063 ± 0.0003  (263.9s)
✅ done: 履歴長_norm  ΔNDCG@3 = -0.0067 ± 0.0001  (263.7s)
✅ done: 騎手-馬コンビ勝率  ΔNDCG@3 = -0.0066 ± 0.0001  (263.8s)
✅ done: 相対斤量差  ΔNDCG@3 = -0.0066 ± 0.0003  (259.3s)
✅ done: 相対騎手勝率差  ΔNDCG@3 = -0.0063 ± 0.0001  (263.2s)
✅ done: 相対過去速度  ΔNDCG@3 = -0.0065 ± 0.0001  (263.3s)

🚀 Categorical PFI: 18 features × 5 repeats
✅ done: 競馬場  ΔNDCG@3 = -0.0063 ± 0.0002  (281.3s)
✅ done: 芝ダ  ΔNDCG@3 = -0.0063 ± 0.0000  (245.1s)
✅ done: 馬場  ΔNDCG@3 = -0.0063 ± 0.0001  (248.7s)
✅ done: 性  ΔNDCG@3 = -0.0060 ± 0.0002  (263.1s)
✅ done: 年齢層  ΔNDCG@3 = -0.0062 ± 0.0001  (265.9s)
✅ done: 距離カテゴリ  ΔNDCG@3 = -0.0067 ± 0.0001  (266.3s)
✅ done: 距離Cx芝ダ  ΔNDCG@3 = -0.0067 ± 0.0001  (265.9s)
✅ done: 天候x馬場  ΔNDCG@3 = -0.0065 ± 0.0003  (268.3s)
✅ done: 競馬場x芝ダ  ΔNDCG@3 = -0.0063 ± 0.0001  (265.3s)
✅ done: 年齢層x芝ダ  ΔNDCG@3 = -0.0061 ± 0.0001  (265.3s)
✅ done: 性x距離カテゴリ  ΔNDCG@3 = -0.0065 ± 0.0005  (263.2s)
✅ done: 血統キー  ΔNDCG@3 = -0.0071 ± 0.0003  (264.6s)
✅ done: 血統得意距離  ΔNDCG@3 = -0.0072 ± 0.0002  (265.0s)
✅ done: 血統得意脚質  ΔNDCG@3 = -0.0073 ± 0.0002  (268.0s)
✅ done: 血統得意馬場  ΔNDCG@3 = -0.0072 ± 0.0001  (303.9s)
✅ done: 脚質過去  ΔNDCG@3 = -0.0073 ± 0.0003  (271.4s)
✅ done: 騎手ID  ΔNDCG@3 = -0.0069 ± 0.0003  (266.3s)
✅ done: 調教師ID  ΔNDCG@3 = -0.0068 ± 0.0002  (271.9s)

📋 数値特徴量の影響(NDCG@3 低下量: 平均±SD):
  距離                   drop = +0.0010 ± 0.0009 ⬆️
  体重増減                 drop = -0.0001 ± 0.0006 ⬇️
  馬体重                  drop = -0.0003 ± 0.0005 ⬇️
  馬番                   drop = -0.0004 ± 0.0003 ⬇️
  斤量                   drop = -0.0004 ± 0.0002 ⬇️
  距離フラグ                drop = -0.0005 ± 0.0004 ⬇️
  斤量_馬体重比              drop = -0.0005 ± 0.0000 ⬇️
  日数差_norm             drop = -0.0006 ± 0.0000 ⬇️
  脚質フラグ                drop = -0.0008 ± 0.0002 ⬇️
  好成績                  drop = -0.0008 ± 0.0004 ⬇️
  馬場フラグ                drop = -0.0009 ± 0.0001 ⬇️
  日数差                  drop = -0.0014 ± 0.0015 ⬇️
  出走数                  drop = -0.0039 ± 0.0017 ⬇️
  勝利数                  drop = -0.0058 ± 0.0008 ⬇️
  相対騎手勝率差              drop = -0.0063 ± 0.0001 ⬇️
  過去上り                 drop = -0.0063 ± 0.0003 ⬇️
  過去人気                 drop = -0.0065 ± 0.0006 ⬇️
  相対過去速度               drop = -0.0065 ± 0.0001 ⬇️
  相対斤量差                drop = -0.0066 ± 0.0003 ⬇️
  騎手-馬コンビ勝率            drop = -0.0066 ± 0.0001 ⬇️
  履歴長_norm             drop = -0.0067 ± 0.0001 ⬇️
  過去着順                 drop = -0.0068 ± 0.0004 ⬇️
  過去走破速度               drop = -0.0068 ± 0.0001 ⬇️
  騎手勝率                 drop = -0.0068 ± 0.0001 ⬇️

📋 カテゴリ特徴量の影響(NDCG@3 低下量: 平均±SD):
  性                    drop = -0.0060 ± 0.0002 ⬇️
  年齢層x芝ダ               drop = -0.0061 ± 0.0001 ⬇️
  年齢層                  drop = -0.0062 ± 0.0001 ⬇️
  競馬場                  drop = -0.0063 ± 0.0002 ⬇️
  芝ダ                   drop = -0.0063 ± 0.0000 ⬇️
  競馬場x芝ダ               drop = -0.0063 ± 0.0001 ⬇️
  馬場                   drop = -0.0063 ± 0.0001 ⬇️
  性x距離カテゴリ             drop = -0.0065 ± 0.0005 ⬇️
  天候x馬場                drop = -0.0065 ± 0.0003 ⬇️
  距離カテゴリ               drop = -0.0067 ± 0.0001 ⬇️
  距離Cx芝ダ               drop = -0.0067 ± 0.0001 ⬇️
  調教師ID                drop = -0.0068 ± 0.0002 ⬇️
  騎手ID                 drop = -0.0069 ± 0.0003 ⬇️
  血統キー                 drop = -0.0071 ± 0.0003 ⬇️
  血統得意距離               drop = -0.0072 ± 0.0002 ⬇️
  血統得意馬場               drop = -0.0072 ± 0.0001 ⬇️
  血統得意脚質               drop = -0.0073 ± 0.0002 ⬇️
  脚質過去                 drop = -0.0073 ± 0.0003 ⬇️

✅ PFI (NDCG@3 × 5回平均, レース内S軸シャッフル, 馬ID除外) 完了

先ずは、その評価をしてみたいと思います。

1. 全体の傾向

  • ベースライン NDCG@3 = 0.9201 と、まずまず高い水準。
  • 多くの特徴量をシャッフルしても性能低下は -0.006 ~ -0.007 程度に収まっており、
    → 「どの特徴量が欠けても致命的には崩れない=モデルが複数の情報源をバランス良く活用している」ことを示しています。

2. 数値特徴量の重要度

  • ほとんどの数値特徴量は 軽微〜中程度の性能低下
  • 特に効いているのは以下のグループで、いずれも 過去の成績や騎手関連に関わる指標:
    • 騎手勝率, 騎手-馬コンビ勝率, 相対騎手勝率差
    • 過去走破速度, 過去着順, 過去人気, 過去上り
    • 履歴長_norm(馬のレース経験の長さ)
  • 一方で「距離」「斤量」「馬体重」といったレース直前にわかる基本情報はほとんど効いておらず、驚くべき点です。
    → モデルは「直近の数値条件」より「過去履歴」や「騎手関連」の方を重視していると解釈できます。

3. カテゴリ特徴量の重要度

  • 多くのカテゴリ特徴量は -0.006 ~ -0.007 程度の低下を示し、数値特徴量と同程度に効いている。
  • 特に効いているのは 血統・脚質関連
    • 血統得意距離 / 馬場 / 脚質
    • 脚質過去
  • 騎手ID・調教師ID も効いているが、血統系よりやや劣る。
  • 一方、「性」「年齢層」など基本的なカテゴリ変数は影響が比較的小さく、モデルにとって補助的役割にとどまっていると見られます。

4. 課題として見えること

  • 距離や斤量など基本条件が効いていない
    → 正しくモデリングできていない、あるいは他の特徴(血統・過去走破記録)に飲み込まれている可能性。
    → 特徴量の表現方法(カテゴリ化、相対化、非線形変換など)を工夫する余地あり。
  • 低下量が横並び
    → 多くの特徴量で差が小さく、どれが「決定的」かが見えにくい。
    → これは良く言えば「モデルが冗長に情報を使えている」ことですが、悪く言えば「強い特徴が欠けても補完されてしまう」ため、解釈性が低い
  • 血統特徴の強さ
    → 血統関連は確かに効いているが、過学習のリスク(特定の系統に偏る)もある。
    → 外部データ(調教情報や当日馬体重増減など)との組み合わせでバランスを取る必要あり。
  • 調教師IDや騎手IDは、「数が多い」「偏りがある」ため、そのままでは不安定
    →実務では:
    ◎「IDをカテゴリ特徴量(embedding)」+「成績を数値特徴量」
    ◎頻度の少ないIDはまとめる
    ◎時系列・リーク対策を徹底
    👉 こうすると、「騎手ID・調教師ID」を使っても、汎化性能を保ちつつモデルに貢献させられます。

5. 今後の対応アイデア

  • 特徴量表現の改善
    • 距離や斤量を「絶対値」ではなく「馬やクラスに対する相対差」で表す
    • 馬体重は正規化した上で変化量を強調
  • 新しい特徴量追加
    • 当日の馬場状態や直前オッズ情報
    • 調教・走行タイム、厩舎コメントなど
  • PFI以外の重要度指標も併用
    • SHAP値などを使い、「どの条件下で効いているか」まで可視化する
  • カテゴリ特徴の圧縮・再設計
    • 血統や騎手IDは高次元になりがち → embedding サイズや grouping 方法を工夫する

まとめ

今回の PFI から言えるのは:

  • モデルは 「過去成績+騎手関連+血統」 に強く依存している
  • 「距離や斤量などの基本条件」はほとんど活かせていない
  • 特徴量の影響が横並びで、解釈性に欠ける面がある

次の改善では、基礎条件の表現強化・特徴量重要度の多角的評価を行うと、さらに精度向上や納得感のあるモデル解釈につながりそうです。

コメント

タイトルとURLをコピーしました