ts-anomaly-detection

Time SeriesTime-Series-Library

Description

Time Series Anomaly Detection: Custom Model Design

Objective

Design and implement a custom deep learning model for unsupervised time series anomaly detection via reconstruction. Your code goes in the Model class in models/Custom.py. Three reference implementations (DLinear, TimesNet, PatchTST) are provided as read-only.

Evaluation

Trained and evaluated on three anomaly detection datasets:

  • PSM (25 variables, server machine dataset)
  • MSL (55 variables, Mars Science Laboratory)
  • SMAP (25 variables, Soil Moisture Active Passive satellite)

All use seq_len=100, anomaly_ratio=1. Metric: F-score (higher is better).

Code

Custom.py
EditableRead-only
1import torch
2import torch.nn as nn
3
4
5class Model(nn.Module):
6 """
7 Custom model for time series anomaly detection.
8
9 Forward signature: forward(x_enc, x_mark_enc, x_dec, x_mark_dec, mask=None)
10 - x_enc: [batch, seq_len, enc_in] — input time series
11 - x_mark_enc: not used for anomaly detection (None)
12 - x_dec: not used for anomaly detection (None)
13 - x_mark_dec: not used for anomaly detection (None)
14
15 Must return: [batch, seq_len, c_out] — reconstructed sequence

Additional context files (read-only):

  • Time-Series-Library/models/DLinear.py
  • Time-Series-Library/models/TimesNet.py
  • Time-Series-Library/models/PatchTST.py
  • Time-Series-Library/layers/AutoCorrelation.py
  • Time-Series-Library/layers/Autoformer_EncDec.py
  • Time-Series-Library/layers/Conv_Blocks.py
  • Time-Series-Library/layers/Crossformer_EncDec.py
  • Time-Series-Library/layers/Embed.py
  • Time-Series-Library/layers/FourierCorrelation.py
  • Time-Series-Library/layers/SelfAttention_Family.py
  • Time-Series-Library/layers/StandardNorm.py
  • Time-Series-Library/layers/Transformer_EncDec.py

Results

ModelTypef score PSM precision PSM recall PSM f score MSL precision MSL recall MSL f score SMAP precision SMAP recall SMAP
dlinearbaseline0.9660.9870.9470.8190.8970.7530.6730.8990.538
patchtstbaseline0.9620.9890.9360.7900.8870.7130.6880.9040.556
timesnetbaseline0.9740.9850.9620.8040.8880.7360.6940.8990.565
timesnetbaseline0.9740.9850.9630.8180.8950.7530.6940.9010.565
timesnetbaseline0.9730.9850.9620.8040.8830.7380.6930.8980.564
timesnetbaseline0.9730.9840.9620.8100.8920.7420.6950.8980.566
anthropic/claude-opus-4.6vanilla0.9370.9820.8970.7750.8770.6940.6710.8990.535
deepseek-reasonervanilla0.9220.9800.8710.7760.8920.6870.6850.8930.556
google/gemini-3.1-pro-previewvanilla0.9370.9900.8890.7390.8710.6420.6830.9000.550
gpt-5.4-provanilla0.9680.9850.9500.7810.8800.7020.6880.9040.555
openai/gpt-5.4-provanilla0.9690.9860.9530.8010.8620.7480.6870.8950.557
qwen/qwen3.6-plus:freevanilla0.9330.9820.8880.3170.6360.2110.6850.9000.553
anthropic/claude-opus-4.6agent0.9640.9860.9430.7910.8850.7160.6730.8960.538
deepseek-reasoneragent0.9280.9930.8720.7900.8940.7070.6840.8940.554
google/gemini-3.1-pro-previewagent0.9540.9860.9230.7340.8630.6390.6750.9020.539
gpt-5.4-proagent0.9680.9850.9500.7810.8800.7020.6880.9040.555
openai/gpt-5.4-proagent0.9690.9860.9530.8010.8620.7480.6870.8950.557
qwen/qwen3.6-plus:freeagent0.9320.9900.881------

Agent Conversations