Skip to main content
Research · Calibration

Model performance
& validation.

All metrics on this page are read directly from the daily pipeline output. Spatial backtests use county-level GroupKFold holdout; the persistence baseline gives a lower bound on skill. The current public forecast covers 238 of 341 California beaches (70%).

ML challenger · registry winner
xgb-undersample-ensemble-curated-v0

Since 2026-09-22 the number users see is not this model: first the per-beach lookup, and since 2026-09-28 a logistic model on top of that lookup (latest result, 72-hour rain, season). The ML below still trains daily and is kept as a challenger; the metrics on this page describe it, not the served rating.

Today's served estimate: logit-lookup-offset-v2. From July to 2026-09-22 a serve-time router split beaches between this ensemble and an offset model by sample age; that router no longer sets the served number.
Public release eligible

Discrimination & calibration scores.

These are the ML challenger's scores on days a lab sample was taken, with fresh lab history as input. They are not comparable with the served estimate's scores on the Research page, which grade every published day against the next lab result. AUC-PR in particular rises with the share of exceedances, which is higher on sample days. Scored the same way as the served estimate, on the same forecasts, the challenger is on the Research page.

Challenger test AUCPR
0.7788
sample-days, temporal holdout
Challenger test Brier
0.0537
lower is better
Temporal val AUCPR
0.8320
time-blocked CV
Temporal val Brier
0.0927
time-blocked CV
Sensitivity @ 87% spec
82.0%
Searcy 2018 benchmark
Regime note— these holdout scores are measured on days a lab sample was taken (fresh history). The public forecast is issued daily, mostly on days whose last lab result is already several days old — a harder regime. See the methodology for how served-day performance is tracked.
AUCPR baseline— the persistence model (yesterday's result as today's prediction) scores 0.4835 at the county holdout level and 0.7929 at the beach holdout level in the current pipeline snapshot. The production model must clear that margin before promotion. These are read live from the daily pipeline output — they were previously hardcoded at 0.172 / 0.241, which understated the baseline by roughly 3× and so overstated the model's margin over it.

Agreement with active advisories.

Each day the served forecast is checked against the beaches under an active health advisory or closure — the operational ground truth. A false negative is an advised beach the forecast did not flag; those are tracked with priority because they are the unsafe direction.

Agreement rate
100.0%
forecast vs advisory
False negatives
0
missed advisories
False positives
29
over-warnings
Active advisories
43
risk threshold 0.2
audited 2026-10-06

Performance on unseen geography.

County GroupKFold holdout: each fold withholds all beaches from one county. Tests generalisation to locations not seen during training.

ModelAUCPRBrierFoldsRowsBase rate
spatial beach persistence0.79290.1656151225852.6%
spatial county persistence0.48350.136566759619.1%
spatial beach xgb undersample ensemble0.94860.0992151225852.6%
spatial county xgb undersample ensemble0.70800.100166759619.1%
spatial beach hist gbm0.94550.1028151225852.6%
spatial county hist gbm0.63680.118166759619.1%
spatial beach hist gbm positive persistence guard0.82940.1423151225852.6%
spatial county hist gbm positive persistence guard0.58600.125866759619.1%
spatial beach hist gbm persistence blend0.94380.1131151225852.6%
spatial county hist gbm persistence blend0.67320.098866759619.1%
spatial beach xgb undersample offset0.90820.1929151225852.6%
spatial county xgb undersample offset0.54740.123666759619.1%

Models evaluated each CI run.

All candidates must clear the block-bootstrap AUCPR gate to be eligible for production. The temporal validation winner becomes production if it also clears the spatial backtest promotion policy.

logistic-curated-v0logistic-coastal-cells-curated-v0logistic-hierarchical-curated-v0hist-gbm-curated-v0hist-gbm-positive-persistence-guard-curated-v0xgb-undersample-ensemble-curated-v0 ★stacked-ensemble-curated-v0
Full evaluation protocol
Technical Methodology
Spatial CV protocol, promotion gates, and feature rationale.
Read methodology →