{ "model": "LightGBM binary classifier", "version": "v1", "model_file": "lgbm_overtake_v1.pkl (joblib, sklearn LGBMClassifier)", "features": [ "gap_ahead_s", "pace_delta_s", "tyre_life_x", "tyre_life_y", "tyre_life_diff", "speed_trap_delta", "LapNumber", "drs_window", "compound_x", "compound_y", "circuit_cluster", "gap_pace_product", "drs_ready_gap", "gap_trend", "pace_delta_rolling3" ], "categorical_features": [ "compound_x", "compound_y", "circuit_cluster" ], "derived_features": { "gap_pace_product": "gap_ahead_s * pace_delta_s", "drs_ready_gap": "gap_ahead_s * drs_window", "gap_trend": "gap_ahead_s[k] - gap_ahead_s[k-1] (per pair per race)", "pace_delta_rolling3": "rolling mean(pace_delta_s, 3) (per pair per race)" }, "inference_note": "Compute derived features before predict_proba. Apply calibrator to raw scores.", "target": "overtake", "train_seasons": [ 2023, 2024 ], "test_season": 2025, "n_train": 18277, "n_test": 10217, "overtake_rate_train": 8.9183, "overtake_rate_test": 7.5756, "auc_pr_test": 0.5491, "auc_roc_test": 0.8758, "logloss_test": 0.409, "optimal_threshold": 0.7976, "scale_pos_weight": 12.0501, "n_estimators": 717, "calibration": "Platt scaling (LogisticRegression on val 2024 scores)" }