adarshcod30's picture
Add verified spatial XGBoost checkpoint (CV R2 0.9577)
2177639 verified
|
Raw
History Blame Contribute Delete
2.8 kB
---
license: mit
library_name: xgboost
tags:
- tabular-regression
- traffic-prediction
- geospatial
- xgboost
metrics:
- r2
---
# Flipkart Gridlock 2.0 — Spatial Traffic Demand Model
An `XGBRegressor` checkpoint (native XGBoost JSON format) trained for the
**Flipkart Gridlock 2.0** traffic demand prediction competition. Predicts a
0–1 traffic demand score for a given geohash location and 15-minute time
slot.
Code, feature engineering, and training pipeline: [github.com/adarshcod30/Flipkart-Gridlock-2.0](https://github.com/adarshcod30/Flipkart-Gridlock-2.0)
## Why this lives here instead of on GitHub
The repo's git history originally shipped a much larger (148MB), differently
trained checkpoint that GitHub's 100MB file-size limit rejects outright — and
that checkpoint was trained on a feature set that didn't even match the
inference code shipped alongside it (see the GitHub repo's `docs/APPROACH.md`
for the full story). This is the retrained, verified, and correctly-matched
replacement: small enough to version normally, and its accuracy is backed by
real cross-validation rather than a bare leaderboard number.
## Model details
- **Architecture:** XGBoost gradient-boosted trees (`max_depth=6`, `n_estimators=600`, `learning_rate=0.05`, L1/L2 regularized)
- **Input:** 109 features — decoded lat/lon, cyclical time index, a 96-slot day-48 historical demand profile per geohash, plus road/vehicle/weather covariates
- **Output:** predicted `demand` ∈ [0, 1]
- **Training data:** 7,872 day-49 rows from the competition's `train.csv` (day 48 is used only as a historical-profile feature, never trained on directly, to avoid leaking a row's own label into its own inputs)
## Performance
5-fold cross-validated R² on the training rows:
| Fold | R² |
|---|---|
| 1 | 0.9589 |
| 2 | 0.9608 |
| 3 | 0.9578 |
| 4 | 0.9518 |
| 5 | 0.9593 |
| **Mean ± std** | **0.9577 ± 0.0031** |
Full fold-by-fold output: `metrics.json` in this repo.
## Usage
```python
from huggingface_hub import hf_hub_download
from xgboost import XGBRegressor
model_path = hf_hub_download(repo_id="adarshcod30/flipkart-gridlock-2.0", filename="spatial_model.json")
model = XGBRegressor()
model.load_model(model_path)
# Feature order and construction must match src/gridlock/features.py
# in the GitHub repo (ALL_FEATURES) — this checkpoint has no meaning
# outside that exact 109-feature pipeline.
predictions = model.predict(X)
```
## Limitations
- Trained on exactly two days of one competition's traffic data (days 48–49); not a general-purpose traffic model.
- The 96-column historical profile feature requires day-48 demand data for the same geohash set — it will not generalize to unseen cities or geohash grids without rebuilding that profile from new historical data.