MomentFMAnomalyDetector
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.
Schnellstart
from sktime.detection.momentfm import MomentFMAnomalyDetector
estimator = 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)Beispiele
>>> 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)