Local Outlier Factor

class dtaianomaly.anomaly_detection.LocalOutlierFactor(window_size: int, stride: int = 1, **kwargs)[source]

Anomaly detector based on the Local Outlier Factor.

The local outlier factor [Breunig2000LOF] compares the density of each sample to the density of the neighboring samples. If the neighbors of a sample have a much higher density that the sample itself, the sample is considered anomalous. By looking at the local density (i.e., only comparing with the neighbors of a sample), the local outlier factor takes into account varying densities across the sample space.

Parameters:
  • window_size (int) – The window size to use for extracting sliding windows from the time series.

  • stride (int, default=1) – The stride, i.e., the step size for extracting sliding windows from the time series.

  • **kwargs – Arguments to be passed to scikit-learns local outlier factor

detector_

A LOF-detector of Sklearn. Only available upon fitting

Type:

SklearnLocalOutlierFactor

Notes

This is a wrapper for scikit-learn’s LocalOutlierFactor <https://scikit-learn.org/stable/modules/generated/sklearn.neighbors.LocalOutlierFactor.html>. The constructor allows additional keyword arguments that will be passed to the underlying scikit-learn Local Outlier Factor model.

Examples

>>> from dtaianomaly.anomaly_detection import LocalOutlierFactor
>>> from dtaianomaly.data import demonstration_time_series
>>> x, y = demonstration_time_series()
>>> local_outlier_factor = LocalOutlierFactor(10).fit(x)
>>> local_outlier_factor.decision_function(x)
array([0.98505735, 0.9894939 , 0.99214303, ..., 1.02445672, 1.02723816,
       1.01699908])

References

[Breunig2000LOF]

Markus M. Breunig, Hans-Peter Kriegel, Raymond T. Ng, and Jörg Sander. 2000. LOF: identifying density-based local outliers. In Proceedings of the 2000 ACM SIGMOD international conference on Management of data (SIGMOD ‘00). Association for Computing Machinery, New York, NY, USA, 93–104. doi: 10.1145/342009.335388

decision_function(X: ndarray) ndarray[source]

Compute anomaly scores. If the detector has not been fitted prior to calling this function, it will be fitted on the input X.

Parameters:

X (array-like of shape (n_samples, n_attributes)) – Input time series.

Returns:

anomaly_scores – Local density scores. Higher is more anomalous.

Return type:

array-like of shape (n_samples)

Raises:
  • ValueError – If X is not a valid array.

  • NotFittedError – If this method is called before fitting the anomaly detector.

fit(X: ndarray, y: ndarray | None = None) LocalOutlierFactor[source]

Fit this detector to the given data.

Parameters:
  • X (array-like of shape (n_samples, n_attributes)) – Input time series.

  • y (ignored) – Not used, present for API consistency by convention.

Returns:

self – Returns the instance itself

Return type:

LocalOutlierFactor

Raises:

ValueError – If X is not a valid array.