The other strategies say how far the process is from its threshold; this one says where it is heading. It watches the curves they draw and raises the same category early when a curve keeps rising, before it reaches 1. Two classic change detection tests are offered: CUSUM and Page-Hinkley.
Computed last — the strategy declares itself computed after the others. It receives the values they found now and the history of the points, rebuilt from the values per strategy without the strategies computed last: a drift never feeds on its own warnings.
The window — only the points of the last minutes (10 by default) count, so a curve which stopped rising long ago no longer warns. A curve which already reached 1 has raised its own alert: the drift says nothing more on it and does not cover its real value.
02 · Tests
CUSUM and Page-Hinkley
CUSUM S = max(0, S + (xᵢ − xᵢ₋₁) − δ × minutes between the points) Page-Hinkley m = Σ (xᵢ − mean of x₁…xᵢ − δ × minutes), statistic = m − min(m) category = statistic / alarm level (1 at the alarm level)
CUSUM sums the rises of the curve, each one less the drift allowed for the time between the points, and never goes below 0: it warns when the curve keeps climbing step after step, and forgets the rises when the curve goes down.
Page-Hinkley measures how far the curve went above its running mean: it reacts to a shift of level. The allowed drift is per minute, so the result does not depend on how often the supervision computes.
Example: a Wrong curve rising by 0.2 per minute (a projected end slipping away) gives, with δ = 0.05, a CUSUM of 0.15 per minute: the alarm level 0.5 is reached after about 3.5 minutes, while the curve is still at 0.7. Rises slower than 0.05 per minute are noise.
The method chosen, with the explanation of its row.
04 · Watch points
Good to know
Jumps are not drifts
A curve which jumps from 0 to 1 in one point is caught by its own strategy; the drift is for curves which slide towards their threshold.
Points on change
The history keeps a point only when a value changes: a flat curve has few points, which is why the minimal number of points is small.
Foreseen is not watched
The strategy feeds Uncovered, Failing, Obsolete, Wrong and Improvable only: the Foreseen curve of the prospective distance is not among the curves watched.
gind-detection-engine-drift-detection-strategy/…/DriftDetectionStrategy.javaSeries of the window, CUSUM, Page-Hinkley.
gind-webapp-r-iota/…/supervision/SupervisionEngine.javaStrategies computed after the others, history without their own values.
Les autres stratégies disent à quelle distance du seuil se trouve le processus ; celle-ci dit vers où il va. Elle observe les courbes qu’elles dessinent et lève la même catégorie en avance quand une courbe monte sans cesse, avant qu’elle atteigne 1. Deux tests classiques de détection de changement sont proposés : CUSUM et Page-Hinkley.
Calculée en dernier — la stratégie se déclare calculée après les autres. Elle reçoit les valeurs qu’elles viennent de trouver et l’historique des points, reconstruit à partir des valeurs par stratégie sans les stratégies calculées en dernier : une dérive ne se nourrit jamais de ses propres alertes.
La fenêtre — seuls les points des dernières minutes (10 par défaut) comptent : une courbe qui a cessé de monter depuis longtemps ne prévient plus. Une courbe qui a déjà atteint 1 a levé sa propre alerte : la dérive ne dit plus rien sur elle et ne masque pas sa vraie valeur.
02 · Tests
CUSUM et Page-Hinkley
CUSUM S = max(0, S + (xᵢ − xᵢ₋₁) − δ × minutes entre les points) Page-Hinkley m = Σ (xᵢ − moyenne de x₁…xᵢ − δ × minutes), statistique = m − min(m) catégorie = statistique / niveau d’alarme (1 au niveau d’alarme)
CUSUM additionne les montées de la courbe, chacune diminuée de la dérive permise pour le temps écoulé entre les points, et ne descend jamais sous 0 : il prévient quand la courbe grimpe pas à pas, et oublie les montées quand la courbe redescend.
Page-Hinkley mesure de combien la courbe est montée au-dessus de sa moyenne courante : il réagit à un changement de niveau. La dérive permise est par minute : le résultat ne dépend pas de la fréquence des calculs de la supervision.
Exemple : une courbe Wrong qui monte de 0,2 par minute (une fin projetée qui recule) donne, avec δ = 0,05, un CUSUM de 0,15 par minute : le niveau d’alarme 0,5 est atteint au bout d’environ 3,5 minutes, alors que la courbe n’est qu’à 0,7. Les montées plus lentes que 0,05 par minute sont du bruit.
La méthode choisie, avec l’explication de sa ligne.
04 · Points d’attention
Bon à savoir
Un saut n’est pas une dérive
Une courbe qui saute de 0 à 1 en un point est prise par sa propre stratégie ; la dérive est faite pour les courbes qui glissent vers leur seuil.
Des points au changement
L’historique ne garde un point que quand une valeur change : une courbe plate a peu de points, d’où un nombre minimal de points faible.
Foreseen n’est pas observée
La stratégie n’alimente que Uncovered, Failing, Obsolete, Wrong et Improvable : la courbe Foreseen de la distance prospective ne fait pas partie des courbes observées.
gind-detection-engine-drift-detection-strategy/…/DriftDetectionStrategy.javaSérie de la fenêtre, CUSUM, Page-Hinkley.
gind-webapp-r-iota/…/supervision/SupervisionEngine.javaStratégies calculées après les autres, historique sans leurs propres valeurs.