MomentFMAnomalyDetector
MomentFMAnomalyDetector
- class MomentFMAnomalyDetector(pretrained_model_name_or_path='AutonLab/MOMENT-1-large', freeze_encoder=True, freeze_embedder=True, freeze_head=False, dropout=0.1, head_dropout=0.1, batch_size=32, eval_batch_size=32, epochs=1, max_lr=0.0001, device='auto', pct_start=0.3, max_norm=5.0, train_val_split=0.2, mask_ratio=0.3, transformer_backbone='google/flan-t5-large', criterion=None, anomaly_criterion='mse', anomaly_percentile=95.0, config=None, return_model_to_cpu=False)[source]
Interface for anomaly detection with the deep learning time series model momentfm.
MomentFM is a collection of open source foundation models for the general purpose of time series analysis. The Moment Foundation Model is a pre-trained model that is capable of accomplishing various time series tasks, such as:
Anomaly Detection
This interface with MomentFM focuses on the anomaly detection task, in which the foundation model uses its pre-trained reconstruction head to reconstruct input time series. Anomalies are detected by computing the reconstruction error (e.g., MSE or MAE) between the observed and reconstructed values.
MOMENT supports both zero-shot anomaly detection (without fine-tuning) and fine-tuning for improved performance.
For zero-shot anomaly detection, set freeze_encoder=True, freeze_embedder=True, and freeze_head=True, which will use the pre-trained model. For fine-tuning, the default and recommended approach is to train a linear probing head by setting freeze_encoder=True, freeze_embedder=True, and freeze_head=False, which will train a reconstruction head while keeping the encoder & embedder frozen.
NOTE: This model can only handle time series with a sequence length of 512 or less.
For more information: see https://github.com/moment-timeseries-foundation-model/moment
For information regarding licensing and use of the momentfm model please visit: https://huggingface.co/AutonLab/MOMENT-1-large
- pretrained_model_name_or_pathstr
Path to the pretrained Momentfm model. Default is AutonLab/MOMENT-1-large
- freeze_encoderbool, default=True
Selection of whether or not to freeze the weights of the encoder during fine-tuning.
- freeze_embedderbool, default=True
Selection whether or not to freeze the patch embedding layer during fine-tuning.
- freeze_headbool, default=False
Selection whether or not to freeze the reconstruction head during fine-tuning. When freeze_encoder=True, freeze_embedder=True, and freeze_head=False, this enables linear probing.
- dropoutfloat, default=0.1
Dropout value of the model. Values range between [0.0, 1.0]
- head_dropoutfloat, default=0.1
Dropout value of the reconstruction head. Values range between [0.0, 1.0]
- batch_sizeint, default=32
Size of batches to use during inference. Also used during fine-tuning.
- eval_batch_sizeint or “all”, default=32
Size of batches for evaluation. If the string “all” is specified, the entire validation set is processed as a single batch.
- epochsint, default = 1
Number of epochs to fit tune the model on.
- max_lrfloat, default=1e-4
Maximum learning rate for the OneCycleLR scheduler during fine-tuning.
- devicestr, default=”auto”
Torch device to use. If “auto”, will automatically use the device that the accelerate library detects.
- pct_startfloat, default=0.3
Percentage of total iterations where the learning rate rises during one epoch of fine-tuning.
- max_normfloat, default=5.0
Maximum norm value used to clip gradients during fine-tuning.
- train_val_splitfloat, default=0.2
Float value between 0 and 1 to determine portions of training and validation splits during fine-tuning.
- mask_ratiofloat, default=0.3
Ratio of patches to mask during fine-tuning. During pre-training, MOMENT learns to reconstruct randomly masked patches, so continuing this approach during fine-tuning improves performance.
- transformer_backbonestr, default=’google/flan-t5-large’
d_model of a pre-trained transformer model to use.
- criterioncriterion, default=torch.nn.MSELoss
Criterion to use during fine-tuning.
- anomaly_criterionstr, default=’mse’
Metric used to compute anomaly scores. Options are ‘mse’ (mean squared error) or ‘mae’ (mean absolute error). The anomaly score is computed as the difference between observed and reconstructed time series values.
- anomaly_percentilefloat, default=95.0
Upper percentile of the anomaly score distribution used to define anomalies (e.g., 95 means top 5% highest scores are flagged).
- configdict, default={}
If desired, user can pass in a config detailing all momentfm parameters that they wish to set in dictionary form, so that parameters do not need to be individually set. If a parameter inside a config is a duplicate of one already passed in individually, it will be overwritten.
- return_model_to_cpubool, default=False
After fitting and training, will return the momentfm model to the cpu.
- Attributes:
is_fittedWhether
fithas been called.
References
Paper: https://arxiv.org/abs/2402.03885 Github: https://github.com/moment-timeseries-foundation-model/moment/tree/main
Examples
>>> from sktime.detection.momentfm import MomentFMAnomalyDetector >>> import pandas as pd >>> import numpy as np >>> # Create sample time series data >>> X = pd.DataFrame(np.random.randn(100, 1)) >>> detector = MomentFMAnomalyDetector() >>> detector.fit(X) >>> # Use .predict to get indices of detected anomalies >>> y_pred = detector.predict(X) >>> # Use .predict_scores to get anomaly scores >>> y_pred = detector.predict_scores(X) >>> # Use .transform_scores to get scores in a DataFrame format >>> y_pred = detector.transform_scores(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.

