Skip to content

STRAY

STRAY

class STRAY(alpha: float = 0.01, k: int = 10, knn_algorithm: str = 'brute', p: float = 0.5, size_threshold: int = 50, outlier_tail: str = 'max')[source]

STRAY: robust anomaly detection in data streams with concept drift.

This is based on STRAY (Search TRace AnomalY) _[1], which is a modification of HDoutliers _[2]. HDoutliers is a powerful algorithm for the detection of anomalous observations in a dataset, which has (among other advantages) the ability to detect clusters of outliers in multi-dimensional data without requiring a model of the typical behavior of the system. However, it suffers from some limitations that affect its accuracy. STRAY is an extension of HDoutliers that uses extreme value theory for the anomalous threshold calculation, to deal with data streams that exhibit non-stationary behavior.

Parameters:
alphafloat, optional (default=0.01)

Threshold for determining the cutoff for outliers. Observations are considered outliers if they fall in the (1 - alpha) tail of the distribution of the nearest-neighbor distances between exemplars.

kint, optional (default=10)

Number of neighbours considered.

knn_algorithmstr {“auto”, “ball_tree”, “kd_tree”, “brute”}, optional

(default=”brute”) Algorithm used to compute the nearest neighbors, from sklearn.neighbors.NearestNeighbors

pfloat, optional (default=0.5)

Proportion of possible candidates for outliers. This defines the starting point for the bottom up searching algorithm.

size_thresholdint, optional (default=50)

Sample size to calculate an empirical threshold.

outlier_tailstr {“min”, “max”}, optional (default=”max”)

Direction of the outlier tail.

Attributes:
score_pd.Series

Outlier score of each data point in X.

y_pd.Series

Outlier boolean flag for each data point in X.

References

[1]

Talagala, Priyanga Dilini, Rob J. Hyndman, and Kate Smith-Miles.

“Anomaly detection in high-dimensional data.” Journal of Computational and Graphical Statistics 30.2 (2021): 360-374. .. [R3e8206faf7f3-2] Wilkinson, Leland. “Visualizing big data outliers through distributed aggregation.” IEEE transactions on visualization and computer graphics 24.1 (2017): 256-266.

Examples

>>> from sktime.detection.stray import STRAY
>>> from sktime.datasets import load_airline
>>> from sklearn.preprocessing import MinMaxScaler
>>> import numpy as np
>>> X = load_airline().to_frame().to_numpy()
>>> scaler = MinMaxScaler()
>>> X = scaler.fit_transform(X)
>>> model = STRAY(k=3)
>>> y = model.fit_transform(X)
>>> y[:5]
array([False, False, False, False, False])

Methods

check_is_fitted([method_name])

Check if the estimator has been fitted.

clone()

Obtain a clone of the object with same hyper-parameters and config.

clone_tags(estimator[, tag_names])

Clone tags from another object as dynamic override.

create_test_instance([parameter_set])

Construct an instance of the class, using first test parameter set.

create_test_instances_and_names([parameter_set])

Create list of all test instances and a list of names for them.

fit(X[, y])

Fit transformer to X, optionally to y.

fit_transform(X[, y])

Fit to data, then transform it.

get_class_tag(tag_name[, tag_value_default])

Get class tag value from class, with tag level inheritance from parents.

get_class_tags()

Get class tags from class, with tag level inheritance from parent classes.

get_config()

Get config flags for self.

get_fitted_params([deep])

Get fitted parameters.

get_param_defaults()

Get object's parameter defaults.

get_param_names([sort])

Get object's parameter names.

get_params([deep])

Get a dict of parameters values for this object.

get_tag(tag_name[, tag_value_default, ...])

Get tag value from instance, with tag level inheritance and overrides.

get_tags()

Get tags from instance, with tag level inheritance and overrides.

get_test_params([parameter_set])

Return testing parameter settings for the estimator.

inverse_transform(X[, y])

Inverse transform X and return an inverse transformed version.

is_composite()

Check if the object is composed of other BaseObjects.

load_from_path(serial)

Load object from file location.

load_from_serial(serial)

Load object from serialized memory container.

reset()

Reset the object to a clean post-init state.

save([path, serialization_format])

Save serialized self to bytes-like object or to (.zip) file.

set_config(**config_dict)

Set config flags to given values.

set_params(**params)

Set the parameters of this object.

set_random_state([random_state, deep, ...])

Set random_state pseudo-random seed parameters for self.

set_tags(**tag_dict)

Set instance level tag overrides to given values.

transform(X[, y])

Transform X and return a transformed version.

update(X[, y, update_params])

Update transformer with X, optionally y.