Enterprise AI Bootcamp Demo 2

Experiment lineage

Every configuration shown in this demonstration, with the parameters that produced it. A result that cannot be traced to a configuration is an anecdote.

All runs

RunNameLabelSplitFeats AUPRCAccuracyRecall FitNote
R1majority classfailure starts within 24 hn/a00.02000.98000.00000.0sPredicts 'no failure' for every window. This is the number the room judges first.
R2headline (naive)failure starts within 24 hrandom 70/30 shuffle510.87010.99180.64340.73sPresented with no caveat. The accuracy is real; the recall is the story.
R3leaky (in-window)the window overlaps a reported failurerandom 70/30 shuffle510.99510.99870.94700.42sDetects a failure already in progress. Near-perfect and worth nothing.
R4leaky (time-ordered)failure starts within 24 hwalk-forward, refit every 14 d, 48 h embargo510.02170.91580.00003.44sSame leaky features, honest split. The gap between R2 and R4 is the split; R4 to R7 is the features.
R5leak recipe L1 onlyfailure starts within 24 hwalk-forward, refit every 14 d, 48 h embargo400.02120.86230.05263.13sContemporaneous machine state, nothing else.
R6leak recipe L3 onlyfailure starts within 24 hwalk-forward, refit every 14 d, 48 h embargo110.01720.84480.00002.06sWhole-series z-scores and percentile ranks only.
R7causalfailure starts within 24 hwalk-forward, refit every 14 d, 48 h embargo890.01940.93050.000010.39sStrictly past-only rolling windows, expanding baselines shifted.
R8causal + regimefailure starts within 24 hwalk-forward, refit every 14 d, 48 h embargo1160.01830.93100.000018.35sAdds operating-regime segmentation and regime-relative baselines.
R9logistic regressionfailure starts within 24 hwalk-forward, refit every 14 d, 48 h embargo890.02300.77320.07205.66sA linear model on the same causal features, for the PR chart.
R10isolation forestunsupervised; scored against the same labelfitted once on normal windows before 2020-05-01890.02080.87890.06931.28sTrained on good behaviour only. It does not know what a failure looks like.

Sorting by accuracy would rank the least honest run first. That is why the table shows the label and the split beside every score — those two columns are what make the numbers comparable, or reveal that they are not.

Walk-forward folds

Refit every 14 days with a 48-hour embargo between the end of training and the start of scoring.

FoldTrain nTrain pos Test nTest posFromTo
010,1321161,58202020-05-01 00:002020-05-15 00:00
111,6631161,58822020-05-15 00:002020-05-29 00:00
213,2141169302602020-05-29 00:002020-06-12 00:00
314,1783781,86402020-06-12 00:002020-06-26 00:00
416,0093781,53702020-06-26 00:002020-07-10 00:00
517,6573781,475992020-07-10 00:002020-07-24 00:00
619,0434771,53302020-07-24 00:002020-08-07 00:00
720,6034771,77102020-08-07 00:002020-08-21 00:00
822,3924771,26702020-08-21 00:002020-09-01 04:00

Windows excluded, and why

ReasonWindows
failure window / repair recovery869
feature embargo after event502
guard band8
Exclusions are part of the experiment and must be reported with it. Rows inside a failure window, or inside the repair-recovery period afterwards, are neither honest positives nor honest negatives; silently keeping them is how a leaderboard score stops meaning anything.

Reproducing this

cd Demo2
python scripts/build_dataset.py     # raw CSV  -> windowed features + labels
python scripts/build_models.py      # features -> 10 runs, sweeps, tests, drift

Deterministic under seed 20260809. The raw CSV is downloaded from the UCI Machine Learning Repository (CC BY 4.0, DOI 10.24432/C5VW3R) and is not redistributed in this repository.

Computed by scripts/build_models.py in 86.4s at 2026-08-09T19:08:15+00:00 · scikit-learn 1.6.1 · seed 20260809 · source: MetroPT-3 (Air Production Unit of a Metro do Porto train), CC BY 4.0, DOI 10.24432/C5VW3R. Nothing on this page is hardcoded.