CircularBinarySegmentation
CircularBinarySegmentation
- class CircularBinarySegmentation(anomaly_score=None, penalty=None, min_segment_length=5, max_interval_length=1000, growth_factor=1.5)[source]
Circular binary segmentation for multiple segment anomaly detection.
Binary segmentation type changepoint detection algorithms recursively split the data into two segments, and test whether the two segments are different. Circular binary segmentation [1] is a variant of binary segmentation where the statistical test (anomaly score) is applied to compare the data behaviour of an inner interval subset with the surrounding data contained in an outer interval. In other words, the null hypothesis within each outer interval is that the data is stationary, while the alternative hypothesis is that there is a segment anomaly within the outer interval.
- Parameters:
- anomaly_scoreBaseIntervalScorer, optional, default=L2Cost()
The local anomaly score to use for anomaly detection. If a cost is given, it is converted to a local anomaly score using the
LocalAnomalyScoreclass.- penaltynp.ndarray or float, optional, default=None
The penalty to use for anomaly detection. If the anomaly score is penalised (
anomaly_score.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 penalty is created inpredictbased on the fitted score using themake_bic_penaltyfunction.
- min_segment_lengthint, default=5
Minimum length between two changepoints. Must be greater than or equal to 1.
- max_interval_lengthint, default=1000
The maximum length of an interval to estimate a changepoint in. Must be greater than or equal to
2 * min_segment_length.- growth_factorfloat, default=1.5
The growth factor for the seeded intervals. Intervals grow in size according to
interval_len = max(interval_len + 1, floor(growth_factor * interval_len)), starting atinterval_len = min_interval_length. It also governs the amount of overlap between intervals of the same length, as the start of each interval is shifted by a factor of1 + 1 / growth_factor. Must be a float in(1, 2].
- Attributes:
is_fittedWhether
fithas been called.
Notes
Using costs to generate local anomaly scores will be significantly slower than using anomaly scores that are implemented directly. This is because the local anomaly score requires evaluating the cost at disjoint subsets of the data (before and after an anomaly), which is not a natural operation for costs implemented as interval evaluators.
References
[1]Olshen, A. B., Venkatraman, E. S., Lucito, R., & Wigler, M. (2004). Circular binary segmentation for the analysis of array-based DNA copy number data. Biostatistics, 5(4), 557-572.
Examples
>>> from sktime.detection.circular_binseg import CircularBinarySegmentation >>> import numpy as np, pandas as pd >>> rng = np.random.default_rng(42) >>> X = pd.DataFrame(rng.standard_normal((75, 1))) >>> X.iloc[20:30] += 10.0 >>> X.iloc[50:55] += 20.0 >>> detector = CircularBinarySegmentation(penalty=20.0) >>> detector.fit_predict(X)
Methods
change_points_to_segments(y_sparse[, start, end])Convert an series of change point indexes to segments.
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.
dense_to_sparse(y_dense)Convert the dense output from an detector to a sparse format.
fit(X[, y])Fit to training data.
fit_predict(X[, y])Fit to data, then predict it.
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.
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.
predict(X)Create labels on test/deployment data.
predict_points(X)Predict changepoints/anomalies on test/deployment data.
predict_scores(X)Return scores for predicted labels on test/deployment data.
predict_segments(X)Predict segments on test/deployment data.
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.
segments_to_change_points(y_sparse)Convert segments to change points.
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.
sparse_to_dense(y_sparse, index)Convert the sparse output from an detector to a dense format.
transform(X)Create labels on test/deployment data.
transform_scores(X)Return scores for predicted labels on test/deployment data.
update(X[, y])Update model with new data and optional ground truth labels.
update_predict(X[, y])Update model with new data and create labels for it.

