ML Systems Lab Open interactive version →
Intermediate 35 min read prediction monitoringscore distributionoutput drift

Prediction Distribution Monitoring

Output distribution shift, score distribution, confidence calibration drift

Your fraud model is live. Labels won't arrive for 7 days — chargebacks take that long to confirm. Infrastructure looks perfect: normal latency, 0% errors. So you cannot measure accuracy until next week. And yet you can see the *predictions* right now, and three of them are already whispering that something moved.


Three signals you have before any label

*The mean score fell.* Last month the average predicted fraud probability was 3.1%; this month, 2.7%. The model is scoring this week's transactions as less risky. Right or wrong, that's worth a look.

*Confidence collapsed.* The share of predictions above 0.8 confidence dropped from 12% to 4%. The model is now hesitant about cases it used to call decisively.

*The histogram flattened.* Last month's scores were bimodal — clear fraud piled high, clear non-fraud piled low, a trough between. This month it's a single lump near 0.5. The model has lost its ability to separate the two classes.


What each one tends to mean

A falling score distribution means either fewer genuinely risky events (could be real) or a feature that shifted — which could be a genuine population change (a new customer segment, a seasonal cohort — see monitoring_taxonomy's income-shift example) or a pipeline bug; the shift alone doesn't tell you which. A dropping high-confidence rate means the inputs have moved outside the model's training range — it's seeing unfamiliar data. A flattening histogram means a key discriminative feature is missing or corrupted, leaving the model unable to tell the classes apart.

You measure all of this with the same tools as feature drift: PSI on the score distribution (same 0.1/0.2 bands), Jensen-Shannon divergence between current and reference histograms (bounded in [0, 1]), and a z-test on the mean-score shift — z = (current mean − baseline mean) / SE(baseline mean), flag when |z| > 2. That |z| > 2 rule is exactly keyPoint 1's alert-at-2σ check computed as a formal test statistic — the z-test isn't a separate metric, it's how the 2σ deviation gets measured.


What prediction monitoring is — and isn't. It tells you the model's *behavior* changed, not that the model is *wrong.* Maybe fraud genuinely dropped and the lower scores are correct; maybe a feature pipeline broke. That's exactly why it's your earliest warning system — it fires days ahead of the delayed labels — and exactly why the right first move when it fires is to *investigate the inputs,* not to assume the model is broken and retrain on reflex.

Key points

Takeaway

Prediction distribution monitoring is your earliest warning — it fires days before delayed labels arrive — but a changed score distribution tells you behavior changed, not whether the change is correct or wrong.

Recap

Check your understanding

Q1. Your fraud model's average prediction score has drifted from mean=0.12 to mean=0.08 over 2 weeks. Labels are delayed 7 days. What do you do now?

Q2. Which two statements correctly explain what a collapsing high-confidence rate signals, when the share of predictions above 0.8 confidence drops from 12% to 4% while the mean score barely moves?

Q3. Prediction monitoring fires, so you want to separate a pipeline bug from a genuine data change. What is the sharpest diagnostic?

Try it interactively

ML Systems Lab is a free interview-prep platform for ML engineers — work through the full interactive module, quizzes, and drills.

Open ML Systems Lab →