This is the implementation of PatchAD: A Lightweight Patch-based MLP-Mixer for Time Series Anomaly Detection.
You can download the paper from arXiv.
Anomaly detection in time series analysis is a pivotal task, yet it poses the challenge of discerning normal and abnormal patterns in label-deficient scenarios. While prior studies have largely employed reconstruction-based approaches, which limits the models' representational capacities. Moreover, existing deep learning-based methods are often not sufficiently lightweight. Addressing these issues, we present PatchAD, our novel, highly efficient multi-scale patch-based MLP-Mixer architecture that utilizes contrastive learning for representation extraction and anomaly detection. With its four distinct MLP Mixers and innovative dual project constraint module, PatchAD mitigates potential model degradation and offers a lightweight solution, requiring only 3.2MB. Its efficacy is demonstrated by state-of-the-art results across nine datasets, outperforming over 30 comparative algorithms. PatchAD significantly improves the classical F1 score by 50.5%, the Aff-F1 score by 7.8%, and the AUC by 10.0%. The code is publicly available.
You can download all datasets here. (Thanks for DCdetector repo and its authors.)
You can refer to requirements.txt to install all the packages.
pip install -r requirements.txt
- You should download the datasets into ABSOLUTE/PATH/OF/DATASET.
- The dataset structure should be like 'dataset_struct.txt'
- Run the scripts below.
- Note that the most important is you should change the parameter of --data_path.
- We use --model_save_path and --res_pth for model and result saving.
- TODO
Train
python main_ad.py --anormly_ratio 0.9 -ep 3 --data_path ABSOLUTE/PATH/OF/DATASET --batch_size 128 --mode train --data_name PSM --win_size 105 --stride 1 --patch_size [3,5,7] --patch_mx 0.1 --d_model 60 --e_layer 3 -lr 0.0001
Test
python main_ad.py --anormly_ratio 0.9 -ep 3 --data_path ABSOLUTE/PATH/OF/DATASET --batch_size 128 --mode test --data_name PSM --win_size 105 --stride 1 --patch_size [3,5,7] --patch_mx 0.1 --d_model 60 --e_layer 3 -lr 0.0001
If you find this repo useful, please cite our paper.
@misc{zhong2024patchad,
<br>
title={PatchAD: A Lightweight Patch-based MLP-Mixer for Time Series Anomaly Detection},<br>
author={anonymous authors},<br>
year={2024},<br>
eprint={2401.09793},<br>
archivePrefix={arXiv},<br>
primaryClass={cs.LG}<br>
}