← Back to portfolio
Case Study · 00 — Dissertation
Research · MSc dissertation · 2026

Importance moves first.
But only if you refit.

Models on live data go stale when the relationship between features and outcome changes — and we usually find out by watching accuracy fall, which reports the damage only once it has been done. Feature-importance monitoring promises an earlier warning. My MSc dissertation asked when that promise actually holds, and found the answer turns on a measurement decision almost nobody states out loud.

Role
Solo — design, code & write-up
Context
MSc Business Analytics, University of Nottingham
Stack
Python · scikit-learn · SHAP · River
Status
Submitted 3 Sep 2026
Fig. 00 · frozen vs. refitted attribution
00
A frozen explanation stays honest about the model, and goes quiet about the world.
§ 01 — The problem

Error monitoring is a smoke alarm in the ashes.

The standard way to notice that a deployed model has gone wrong is to watch its error rate. Detectors like DDM and ADWIN do this well, but they share a structural limitation: error only rises after the model has already started making bad calls. By the time the alarm fires, harm has accumulated.

A recent line of work proposes watching variable importance instead — the intuition being that the features a model leans on should reorganise before its accuracy visibly slips. It is a compelling story. The dissertation set out to test whether it survives contact with a benchmark where the ground truth is known.

The question isn't which importance measure you use. It's what you compute it from.

§ 02 — The core argument

A frozen model cannot see conditional drift.

Real concept drift means P(y | X) moves while P(X) holds still — the inputs look the same, but what they imply about the outcome has changed. That framing makes the limitation of label-free monitoring precise rather than merely suspected.

Any statistic computed from a frozen deployed model and unlabelled inputs is a function of the input distribution and a fixed set of trees. If the input distribution isn't moving, that statistic has nothing to move in response to. It cannot systematically reveal a change in the conditional relationship, because it never observes the conditional relationship at all.

Refitting on a recent window changes what is being measured. It stops describing the deployed model and starts describing the reliance structure the current concept supports. That is the instrument. It is also expensive, because it needs labels — which is the honest cost buried in the result.

§ 03 — Experimental design

Two arms: exact ground truth, and a real stream.

A single benchmark can't separate "the signal didn't move" from "the signal couldn't have moved." So the study runs two arms that answer different halves of the question.

Arm A — Harness
Boolean ground truth
A synthetic Boolean stream where all ten two-feature subsets are exhaustively enumerated at every timestep, so which features suffice to determine the label is known exactly, not estimated.
Arm B — Benchmark
Rotating hyperplane
200,000 instances × 10 features, cut into 200 windows of 1,000. The generator holds P(X) stationary by construction while P(y | X) rotates.
Signals
S1 – S4
Refitted SHAP departure, the same departure on the frozen model, ensemble vote dominance, and exact sufficient-subset structure (harness only).
Discipline
Null bands & controls
Every signal calibrated against a bootstrap null band, converted to alarms by a three-window persistence rule, and tested under permutation negative controls.

The null band matters more than it sounds. Without it, "the importance moved" is unfalsifiable — importance always moves a bit. Bootstrapping window 0 a hundred times gives a band for how much movement is just sampling noise: 0.1874 for the refitted signal, 0.2162 for the frozen one. Only sustained excursions above that band count as alarms.

§ 04 — Results

Seven windows of warning — and two silences.

On the rotating hyperplane, the refitted SHAP signal crossed its band at window 1 and stayed there. The deployed model's accuracy didn't fall measurably below its out-of-bag reference of 0.8330 until window 8. That is an observed lead of seven windows — roughly seven thousand instances of warning before the damage was visible in the error rate.

The frozen SHAP signal and vote dominance raised no sustained alarm at any window. That silence is the result, not a bug: it is exactly what § 02 predicts of a label-free statistic under a stationary input distribution.

7
Windows of lead — alarm at 1, degradation at 8
0.417
Largest refitted importance swing, vs 0.035 frozen
200k
Benchmark instances across 200 windows

The Boolean harness sharpened it into something stranger. As feature D became strictly necessary to determine the label, refitted attribution tracked it from 0.154 up to 0.500 — while frozen attribution on the same data fell to 0.025. The frozen explainer didn't merely fail to react. It moved in the opposite direction to the truth.

And throughout that reorganisation, a refitted model kept perfect accuracy. The set of sufficient feature pairs contracted from six to three, the reliance structure rebuilt itself underneath — and any accuracy-based detector watching would have seen a flat line the whole way.

The explanation stayed accurate about the model, and grew steadily less informative about the world.

§ 05 — What I refused to claim

The results that don't flatter the thesis.

It would have been easy to write this up as "SHAP beats error monitoring." It doesn't, and saying so was the more interesting piece of work.

§ 06 — Negative controls

Making sure the alarm meant something.

A detector that fires on a rotating hyperplane is only interesting if it stays quiet on the same data with the drift destroyed. Under permutation, the refitted SHAP alarm moved from window 1 to window 106 — the signal followed the structure, not the noise.

The controls also embarrassed a baseline, which is worth reporting. ADWIN was silent in all three permuted error streams, as it should be. DDM alarmed in two of three — so on this stream it is not cleanly separated from its own negative control. Because the permutation procedures differ between the candidate signals and the baselines, these outcomes order the methods qualitatively and estimate no false-positive rate. That limitation is stated rather than papered over.

§ 07 — What I'd do differently

Three things, next time.

§ 08 — The takeaway

Observability is a design decision.

The finding worth carrying out of this isn't that a SHAP-based signal gives seven windows of warning on one benchmark. It's that whether concept drift is observable through variable importance at all depends on what the statistic is computed from — and that choice is usually made implicitly, by whichever library is convenient.

If you monitor a frozen model's explanations and see nothing, that is not evidence your model is healthy. It may be evidence that you built an instrument which cannot detect the thing you are afraid of.