Back to models
Detector

CAPA

The collective and point anomaly (CAPA) detection algorithm.

Quickstart

python
from sktime.detection.capa import CAPA

estimator = CAPA(segment_saving=None, segment_penalty=None, point_saving=None, point_penalty=None, min_segment_length=2, max_segment_length=1000, ignore_point_anomalies=False, find_affected_components=False)

Parameters(8)

segment_savingBaseIntervalScorer, optional, default=L2Saving()

The saving to use for segment anomaly detection. If a cost is given, the saving is constructed from the cost. The cost must have a fixed parameter that represents the baseline cost. If a penalised saving is given, it must be constructed from PenalisedScore.

segment_penaltynp.ndarray or float, optional, default=None

The penalty to use for segment anomaly detection. If the segment saving is penalised (segment_saving.get_tag("is_penalised")) the penalty will be ignored. The different types of penalties are:

  • float: A constant penalty applied to the sum of scores across all variables in the data.

  • np.ndarray: A penalty array of the same length as the number of columns in the data, where element i of the array is the penalty for i+1 variables being affected by an anomaly. The penalty array must be positive and increasing (not strictly). A penalised score with a linear penalty array is faster to evaluate than a nonlinear penalty array.

  • None: A default constant penalty is created in predict based on the fitted score using the make_chi2_penalty function.

point_savingBaseIntervalScorer, optional, default=L2Saving()

The saving to use for point anomaly detection. Only savings with a minimum size of 1 are permitted. If a cost is given, the saving is constructed from the cost. The cost must have a fixed parameter that represents the baseline cost. If a penalised saving is given, it must be constructed from PenalisedScore.

point_penaltynp.ndarray or float, optional, default=None

The penalty to use for point anomaly detection. See the documentation for segment_penalty for details. For None input, the default is set using the make_linear_chi2_penalty function.

min_segment_lengthint, optional, default=2

Minimum length of a segment. This may be overridden by the min_size of the fitted segment_saving.

max_segment_lengthint, optional, default=1000
Maximum length of a segment.
ignore_point_anomaliesbool, optional, default=False

If True, detected point anomalies are not returned by predict. I.e., only segment anomalies are returned. If False, point anomalies are included in the output as segment anomalies of length 1.

find_affected_componentsbool, optional, default=False

If True, the affected components for each segment anomaly are returned in the "icolumns" key of the predict output. Only relevant for multivariate data in combination with a penalty array. The affected components are sorted from the highest to lowest evidence of an anomaly being present in the variable.

Examples

>>> from sktime.detection.capa import CAPA
>>> import numpy as np, pandas as pd
>>> rng = np. random. default_rng (42)
>>> X = pd. DataFrame (rng. standard_normal ((200, 1)))
>>> X. iloc [80: 100 ] += 10.0
>>> detector = CAPA (min_segment_length = 5, max_segment_length = 100)
>>> detector. fit_predict (X)

References

  1. [1 ] Fisch, A. T., Eckley, I. A., & Fearnhead, P. (2022). A linear time method for the detection of collective and point anomalies. Statistical Analysis and Data Mining: The ASA Data Science Journal, 15(4), 494-508. [2 ] (1, 2) Fisch, A. T., Eckley, I. A., & Fearnhead, P. (2022). Subset multivariate collective and point anomaly detection. Journal of Computational and Graphical Statistics, 31(2), 574-585. [3 ] Tveten, M., Eckley, I. A., & Fearnhead, P. (2022). Scalable change-point and anomaly detection in cross-correlated data with an application to condition monitoring. The Annals of Applied Statistics, 16(2), 721-743.