Concept Drift Detection
Concept-drift monitors detect when the relationship a model learned between inputs and outputs stops holding, even if the inputs themselves look familiar.
When the mapping changes, not the inputs
Covariate shift is a change in what inputs arrive; concept drift is a change in what those inputs mean. A breeder disruption-precursor model may see familiar-looking magnetics yet the precursor-to-disruption mapping shifts as first-wall conditioning changes. A burner plug model's inputs may look nominal while the potential-to-confinement relationship moves as coil performance ages. Concept drift is the more dangerous of the two because the inputs give no warning.
Detecting it requires labels, which arrive late: the outcome of a pulse is known only after the pulse. Kronos therefore runs concept-drift detection as a backward-looking process on the L0 archive, comparing rolling model error against a stable baseline error rather than comparing input distributions.
Methods
- DDM / EDDM style error-rate trackers with warning and drift thresholds
- ADWIN adaptive windowing over the residual stream
- Page-Hinkley test on cumulative prediction error
- Sliding-window AUC / calibration decay for classifiers
class PageHinkley:
def __init__(self, delta=0.005, lam=50):
self.delta, self.lam = delta, lam
self.mean = 0.0; self.n = 0; self.mT = 0.0
def update(self, error):
self.n += 1
self.mean += (error - self.mean)/self.n
self.mT += error - self.mean - self.delta
return self.mT > self.lam # True -> concept drift
A confirmed concept-drift event is high priority: it means a deployed model's core assumption is stale. It triggers immediate cross-checking against covariate shift, a confidence downgrade in the twin, and a prioritized L0 retrain. If the drifting model holds actuation authority, the rollback path is armed so control can fall back to the last certified artifact.