开发者用XGBoost提前两小时预测县级停电
一名开发者构建了面向密苏里州和伊利诺伊州216个县的XGBoost系统,按小时估算从两小时后开始的六小时窗口内,某县新增停电客户占比达到至少5%的概率。模型使用已发布的HRRR风暴预报、县级信息、当前停电和邻县数据,使用2020至2024年数据训练,并在2025年测试。开发者报告其PR-AUC为0.094,而使用美国国家气象局预警和风暴预测中心首日展望的比率表基线为0.039。在相同预警量下,开发者报告模型捕获了30%的新增停电,基线为17%;精确率分别为15%和11%。县时基率为0.5%。一项早期迁移测试据报在爱荷华州、印第安纳州和密歇根州捕获了31%的新增停电,基线为19%。
该项目报告了县级模型在2025年的测试、与天气预警数据的比较、按风暴日配对的自举不确定性估计、迁移测试,并将实时预测结果保存用于盲测。开发者还提供了方法说明、代码和泄漏审计。相关结果由开发者自行报告。
Hi all! I built an hourly power outage forecast for 216 counties (MO + IL): P(≥5% of a county's customers newly out in the 6 h starting 2 h from now). Model: XGBoost on HRRR storm-related data (gusts, shear, CAPE, icing, etc.), county-specific facts, current outages and neighboring counties.
Setup decisions I'd like feedback on:
- Target is new outages only (no credit for predicting ones already underway). I thought predicting current outages was too easy and quite useless, so I chose to make it just for new outages, which was much harder to beat the ceiling.
- Trained 2020–2024, tested on 2025 using the HRRR forecasts as issued, the mean of the last 5 runs, not observed weather. The model validates on 2024, tests on 2025.
- Baseline: a rate table of NWS warnings + SPC Day 1 outlook, fit on the same rows.
- Uncertainty: bootstrap over storm days, paired.
Results on 2025: PR-AUC 0.094 vs 0.039 (ratio ~2.4×, 95% range 2.0–3.3×). At equal alert volume: 30% of new outages caught vs 17%; precision 15% vs 11%. Base rate is 0.5% of county-hours, so the precision is honest but low.
Early transfer test: trained only on MO + IL, it caught 31% vs 19% in Iowa, Indiana and Michigan (combined)
Live since Nov 1, with every forecast saved for a blind test. Write-up, code, and the leakage audit: https://ugobruzadin.github.io/storm-outage-risk/ code: https://github.com/UgoBruzadin/storm-outage-risk
#Storm Outage Risk Forecast#XGBoost#HRRR#National Weather Service#Storm Prediction Center