CAPA
The collective and point anomaly (CAPA) detection algorithm.
Quickstart
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 elementiof the array is the penalty fori+1variables 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 inpredictbased on the fitted score using themake_chi2_penaltyfunction.
- 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_penaltyfor details. ForNoneinput, the default is set using themake_linear_chi2_penaltyfunction.- min_segment_lengthint, optional, default=2
Minimum length of a segment. This may be overridden by the
min_sizeof the fittedsegment_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 bypredict. I.e., only segment anomalies are returned. IfFalse, 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 thepredictoutput. 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 ] 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.