Skip to content

GaussianScorer

Univariate Gaussian anomaly detector.

This is a supervised anomaly detector. It fits a Gaussian distribution to the target values. The anomaly score is then computed as so:

\[score = 2 * \mid CDF(y) - 0.5 \mid\]

This makes it so that the anomaly score is between 0 and 1.

Parameters

  • window_size – defaults to None

    Set this to fit the Gaussian distribution over a window of recent values.

  • grace_period – defaults to 100

    Number of samples before which a 0 is always returned. This is handy because the Gaussian distribution needs time to stabilize, and will likely produce overly high anomaly score for the first samples.

Examples

>>> import random
>>> from river import anomaly

>>> rng = random.Random(42)
>>> detector = anomaly.GaussianScorer()

>>> for y in (rng.gauss(0, 1) for _ in range(100)):
...     detector = detector.learn_one(None, y)

>>> detector.score_one(None, -3)
0.999477...

>>> detector.score_one(None, 3)
0.999153...

>>> detector.score_one(None, 0)
0.052665...

>>> detector.score_one(None, 0.5)
0.383717...

Methods

learn_one

Update the model.

Parameters

  • _
  • y (Union[bool, str, int, numbers.Number])

Returns

SupervisedAnomalyDetector: self

score_one

Return an outlier score.

A high score is indicative of an anomaly. A low score corresponds a normal observation.

Parameters

  • _
  • y (Union[bool, str, int, numbers.Number])

Returns

float: An anomaly score. A high score is indicative of an anomaly. A low score corresponds a