特徴量エンジニアリング

Keibaproシステムで使用する42個の特徴量について詳細に解説します。 基本情報から高度な複合指標まで、多角的な視点で競走馬の能力を評価します。

特徴量カテゴリ

基本特徴量

17個

馬の基本情報、位置情報、年齢・距離カテゴリ

過去成績

15個

過去レースの成績統計と傾向

高優先度

10個

AI分析による複合指標

基本特徴量(17個)

ターゲット変数

  • is_win: 1着か否か(予測対象)

人気・位置情報

  • tansho_ninkijun: 単勝人気順
  • is_inner: 内枠フラグ(馬番≦4)
  • is_outer: 外枠フラグ(馬番≧14)

性別・馬体情報

  • is_male: 牡馬フラグ
  • is_female: 牝馬フラグ
  • weight_change: 馬体重変化(前走比)

年齢カテゴリ

  • is_young: 若馬(3歳以下)
  • is_prime: 盛年馬(4-6歳)
  • is_veteran: ベテラン馬(7歳以上)

距離カテゴリ

  • is_sprint: 短距離(1400m以下)
  • is_mile: マイル(1400-1800m)
  • is_intermediate: 中距離(1800-2400m)
  • is_long: 長距離(2400m超)

過去成績特徴量(15個)

馬の過去成績(3/5/10走)

  • horse_avg_position_last3/5/10: 過去n走の平均着順
  • horse_win_rate_last3/5/10: 過去n走の勝率
  • horse_place_rate_last3/5/10: 過去n走の連対率(2着以内)

騎手・調教師成績

  • jockey_win_rate_30d: 騎手の直近30日勝率
  • jockey_place_rate_30d: 騎手の直近30日連対率
  • trainer_win_rate_30d: 調教師の直近30日勝率
  • trainer_place_rate_30d: 調教師の直近30日連対率

前走情報・成績安定性

  • days_since_last_race: 前走からの間隔(日数)
  • prev_1_position: 前走着順
  • prev_2_position: 2走前着順
  • prev_3_position: 3走前着順
  • position_std_last5: 過去5走の着順標準偏差

高優先度特徴量(10個)

momentum_score

直近3走の順位改善度。勢いのある馬を検出。

計算式: (前走順位 - 前々走順位) + (前々走順位 - 3走前順位)

consistency_index

成績の安定性指標。着順のばらつきが小さい馬を高評価。

計算式: 1 / (過去5走の着順標準偏差 + 1)

field_strength_index

フィールドの強さ。レース全体のレベルを評価。

計算式: 出走馬の過去勝率の合計 / 出走頭数

relative_class_rating

クラス内での相対評価。同クラスでの実績を標準化。

計算式: (馬の平均着順 - クラス平均着順) / クラス標準偏差

jockey_course_expertise

騎手のコース専門性。特定コースでの騎手の専門度。

計算式: 騎手の該当コース勝率 / 騎手の全体勝率

pace_suitability_score

ペース適性スコア。脚質とレースペースの適合度。

計算式: 脚質タイプ × 予想ペース × コース形態の相互作用

roi_potential

ROI潜在性。投資収益率の可能性を評価。

計算式: (予測勝率 × オッズ) / 過去ROI

odds_x_jockey_skill

オッズ×騎手スキル。過小評価されている実力馬を発見。

計算式: オッズ × 騎手勝率

distance_x_surface

距離×馬場。距離と馬場タイプの相互作用。

計算式: 標準化距離 × コースタイプ(芝/ダート)

weight_per_age

斤量/年齢。年齢に対する斤量負担を評価。

計算式: 斤量 / (年齢 + 1)

特徴量選択手法

🌲

Boruta

ランダムフォレストベースの特徴量重要度判定

🔄

RFE

再帰的特徴量削除による最適化

📉

Lasso

L1正則化による特徴量選択

🗳️

投票

複数手法の多数決による選択

42個の特徴量から最も予測に寄与する特徴量を自動選択。 過学習を防ぎながら予測精度を最大化します。

データ処理の工夫

  • • 欠損値処理: LightGBMの自動処理機能を活用
  • • カテゴリ変数: Label Encodingで効率的に処理
  • • 時系列リーク防止: Point-in-Time特徴量計算
  • • 標準化: 一部の特徴量にはRobustScalerを適用
  • • 外れ値処理: IQRベースのクリッピング