Medical AI lab · Drift over time ·
Model drift and monitoring: interactive demo
A deployed clinical model can lose performance gradually, and a monitoring rule notices only after a delay that depends on its margin and on how many labelled cases arrive each month. In this demo the true AUC is 0.85 for six months and then falls by 0.01 a month; with 100 labelled cases a month and an alarm 0.05 below baseline, the alarm fires in month 12, six months after the drift began, when the true AUC is 0.79. With 20 cases a month the same rule fires in month 4, before any drift, by chance.
In one line: With 100 labelled cases a month the alarm fires 6 months after drift begins, at a true AUC of 0.79 against a baseline of 0.85; with 20 cases a month it fires by chance before any drift.
These demos are illustrative. Every signal, image, patient and note is synthetic and fictional, generated and scored in your browser, and every number shown is computed from that synthetic data. They show general principles, not the performance of any real model, product or project, and none of them is a medical device.
Nothing is uploaded. No patient data is used.
Clinical model validation / monitoring
It worked at launch. Then it slipped.
What this shows: a deployed model can lose performance slowly as patients, practice or equipment change. A monitoring rule based on a few labelled cases a month either notices late or fires by chance.
Set the monitoring
The model’s true AUC is 0.85 for the first 6 months and then falls by the amount you set each month. One in five labelled cases is positive. The alarm fires when the measured AUC is below the alarm line two months in a row.
AUC, month by month
24 months after deploymentWhite dashed: true AUCBlue: AUC measured that monthAmber dashed: alarm lineRed: alarm fires
Synthetic data · illustrative · not a medical device
Any model in routine use. Decide before deployment which metric is tracked, how labels will be obtained, how many cases a month that gives, and what margin and rule trigger a review. Watch inputs and case mix as well, because they move before labelled outcomes arrive.
What this experiment models
The model’s score separates cases from non-cases by an amount that gives a true AUC of 0.85, reduced month by month once drift starts, with a floor of 0.5. Each month the chosen number of labelled cases is drawn with 20% positives and the AUC is measured on them. The alarm line is the baseline AUC minus the margin, and the alarm fires at the second of two consecutive months below it. The random draws are fixed by a seed, so the same settings always give the same chart; a different seed would move the alarm by a month or two.
The principle
How it works
Drift is a change in the data a model meets after deployment: a new patient mix, a change in practice, a new scanner or laboratory method, a new coding rule. The model does not change, and its performance does. In the demo the true AUC is flat at 0.85 for six months and then declines at the rate you set, which is the white dashed line. Nobody sees that line in practice.
What is seen is the blue line: the AUC measured each month on the cases that have a confirmed outcome. One in five of those cases is positive, so 100 cases a month means about 20 positives, and the measured value swings from month to month by several points even when nothing has changed. The alarm line sits below the baseline by the margin you choose, and the rule requires two months in a row below it.
The margin sets the trade-off. A narrow margin reacts sooner and also fires on noise. A wide margin is quiet and late. More labelled cases reduce the noise, which is what allows a narrower margin. A monitoring plan should therefore state the metric, the source and number of labelled cases, the rule and the expected delay, and should also track inputs and case mix, which shift before outcomes are known. See clinical model validation.
Worked example
A model that was validated once and then left running
Picture a hospital that deploys a risk model after a careful validation, with an AUC of 0.85. The team agrees to keep an eye on it: each month the cases with a confirmed outcome are collected, the AUC is computed, and a review is triggered if it drops clearly below the validated figure.
The demo’s default settings are that plan: 100 labelled cases a month, an alarm margin of 0.05 below baseline, and a model that starts to lose 0.010 of AUC a month after month 6. The white dashed line falls steadily to a true AUC of 0.67 at month 24. The blue points, which are all the team can see, scatter around it.
Alarm fires reads month 12. Drift undetected for reads 6 months, and True AUC at the alarm reads 0.79. For half a year the model was worse than validated and the monitoring said nothing, because with about 20 positive cases a month the measured AUC moves by several points on its own and the rule has to wait for a clear, repeated drop.
Reduce the labelled cases to 20 a month, about 4 positives. The alarm now fires in month 4, before any drift, and the readout says false alarm. Return to 100 cases and narrow the margin to 0.03: the alarm again fires in month 4 by chance. Widen it to 0.10 and it fires in month 17, 11 months after the drift began, at a true AUC of 0.74. With 1,000 cases a month and the default margin it still fires in month 12, because the true AUC has to cross the alarm line first.
The correct practice is to design monitoring as carefully as validation. Decide the metric and where the labels come from. Work out how many cases arrive each month and how noisy the monthly figure will be, then choose a margin and rule with a known false-alarm rate and delay. Pool months if the numbers are small. Track input distributions and case mix too, since they change before outcomes are available, and define in advance what happens when the alarm fires.
Checklist
What to check in your own project
- Which performance metric is tracked after deployment, and how often?
- Where do the confirmed outcomes come from, and how many arrive each month?
- How much does the monthly figure vary by chance at that sample size?
- What rule triggers a review, and what are its false-alarm rate and expected delay?
- Are input distributions, case mix and alert rates tracked as earlier signals?
- Who is responsible when the alarm fires, and what are they expected to do?
Related: our clinical model validation service, the wiki page on medical AI validation, and the demos on sample size for validation and calibration and decision thresholds.
FAQ
Common questions
How do I monitor a clinical AI model after deployment?
Track a performance metric on cases with confirmed outcomes at a regular interval, compare it with the validated baseline, and define a rule that triggers a review. Also track inputs, case mix and alert rates, which need no outcome labels. In this demo a monthly AUC on 100 cases with a 0.05 margin raises the alarm 6 months after drift begins.
How long does it take to detect model drift?
It depends on how fast the model degrades, how many labelled cases arrive and how wide the alarm margin is. In the demo, with the AUC falling by 0.01 a month, the alarm fires after 6 months at a margin of 0.05 and after 11 months at a margin of 0.10. A slower drift takes longer to detect.
Why does my model monitoring raise false alarms?
Because a metric measured on a small monthly sample varies by chance. In the demo, with 20 labelled cases a month, about 4 of them positive, the alarm fires in month 4 although the model has not changed. More cases per period, pooling periods or a wider margin reduce false alarms, at the cost of a longer delay.
What causes a medical AI model to drift?
Changes in the patients or the data: a different case mix, new clinical practice, a new scanner or laboratory method, a change in coding or documentation, or a change in how the model’s own output is used. The model stays the same and the world it was fitted to does not.
How many labelled cases a month does monitoring need?
Enough for the monthly figure to be stable relative to the drop you want to detect. In the demo 100 cases a month, about 20 of them positive, support a margin of 0.05 without a false alarm, while 20 cases a month do not. If volumes are low, pool several months or monitor quantities that need no labels.
Medical AI lab
More demos
All fourteen demos on one page: the medical AI labClinical model validation →