Overview
MOMENT is a versatile foundation model designed for multiple time series tasks including forecasting, imputation, anomaly detection, and classification.
Paper: MOMENT: A Family of Open Time-series Foundation Models
Configuration Parameters
config = {
"task_name": "forecasting", # Options: "forecasting", "imputation", "detection", "classification"
"forecast_horizon": 192, # Number of timesteps to forecast
"head_dropout": 0.1, # Dropout rate for the task head
"weight_decay": 0, # Weight decay for optimization
"freeze_encoder": True, # Freeze the patch embedding layer
"freeze_embedder": True, # Freeze the transformer encoder
"freeze_head": False, # The linear forecasting head must be trained
}
Loading the Model
from samay.model import MomentModel
repo = "AutonLab/MOMENT-1-large"
model = MomentModel(config=config, repo=repo)
MOMENT is available in different sizes: MOMENT-1-small, MOMENT-1-base, and MOMENT-1-large.
Loading Dataset
from samay.dataset import MomentDataset
train_dataset = MomentDataset(
name="ett",
datetime_col="date",
path="./data/ETTh1.csv",
mode="train",
horizon_len=192
)
val_dataset = MomentDataset(
name="ett",
datetime_col="date",
path="./data/ETTh1.csv",
mode="test",
horizon_len=192
)
Zero-Shot Forecasting
metrics = model.evaluate(
val_dataset,
task_name="forecasting",
metric_only=True
)
Fine-tuning
Forecasting
Imputation
Anomaly Detection
finetuned_model = model.finetune(
train_dataset,
task_name="forecasting"
)
# Evaluate after fine-tuning
metrics = model.evaluate(val_dataset, task_name="forecasting")
config["task_name"] = "imputation"
model = MomentModel(config=config, repo=repo)
finetuned_model = model.finetune(
train_dataset,
task_name="imputation",
mask_ratio=0.25 # Percentage of values to mask
)
config["task_name"] = "detection"
model = MomentModel(config=config, repo=repo)
finetuned_model = model.finetune(
train_dataset,
task_name="detection"
)
Visualization
model.plot(val_dataset, task_name="forecasting")
Available Tasks
MOMENT supports four different tasks:
- Forecasting: Predict future time series values
- Imputation: Fill in missing values in time series
- Detection: Detect anomalies in time series
- Classification: Classify time series into categories
See the example notebooks for task-specific examples:
moment_forecasting.ipynb
moment_imputation.ipynb
moment_anomaly_detection.ipynb
moment_classification.ipynb