DeepOD is an open-source Python framework for deep learning-based anomaly detection on multivariate/time-series data. DeepOD provides a unified implementation of different detection models based on PyTorch.
DeepOD includes 13 deep outlier detection / anomaly detection algorithms (in unsupervised/weakly-supervised paradigm) for now. More baseline algorithms will be included later.
🔭 We are working on a new feature -- by simply setting a few parameters, different deep anomaly detection models can handle different data types.
- We have finished some attempts on partial models like Deep SVDD, DevNet, Deep SAD, PReNet, and DIF. These models can use temporal networks like LSTM, GRU, TCN, Conv, and Transformer to handle time series data.
- Future work: we also want to implement several network structures, so as to process more data types like graphs and images by simply plugging in corresponding network architecture.
The DeepOD framework can be installed via:
pip install deepod
install a developing version (strongly recommend)
git clone https://github.com/xuhongzuo/DeepOD.git
cd DeepOD
pip install .
Detection models:
Model | Venue | Year | Type | Title |
---|---|---|---|---|
Deep SVDD | ICML | 2018 | unsupervised | Deep One-Class Classification |
REPEN | KDD | 2018 | unsupervised | Learning Representations of Ultrahigh-dimensional Data for Random Distance-based Outlier Detection |
RDP | IJCAI | 2020 | unsupervised | Unsupervised Representation Learning by Predicting Random Distances |
RCA | IJCAI | 2021 | unsupervised | RCA: A Deep Collaborative Autoencoder Approach for Anomaly Detection |
GOAD | ICLR | 2020 | unsupervised | Classification-Based Anomaly Detection for General Data |
NeuTraL | ICML | 2021 | unsupervised | Neural Transformation Learning for Deep Anomaly Detection Beyond Images |
ICL | ICLR | 2022 | unsupervised | Anomaly Detection for Tabular Data with Internal Contrastive Learning |
DIF | TKDE | 2023 | unsupervised | Deep Isolation Forest for Anomaly Detection |
SLAD | ICML | 2023 | unsupervised | Fascinating Supervisory Signals and Where to Find Them: Deep Anomaly Detection with Scale Learning |
DevNet | KDD | 2019 | weakly-supervised | Deep Anomaly Detection with Deviation Networks |
PReNet | KDD | 2023 | weakly-supervised | Deep Weakly-supervised Anomaly Detection |
Deep SAD | ICLR | 2020 | weakly-supervised | Deep Semi-Supervised Anomaly Detection |
FeaWAD | TNNLS | 2021 | weakly-supervised | Feature Encoding with AutoEncoders for Weakly-supervised Anomaly Detection |
DeepOD can be used in a few lines of code. This API style is the same with sklearn and PyOD.
# unsupervised methods
from deepod.models.dsvdd import DeepSVDD
clf = DeepSVDD()
clf.fit(X_train, y=None)
scores = clf.decision_function(X_test)
# weakly-supervised methods
from deepod.models.devnet import DevNet
clf = DevNet()
clf.fit(X_train, y=semi_y) # semi_y uses 1 for known anomalies, and 0 for unlabeled data
scores = clf.decision_function(X_test)
If you use this library in your work, please use the BibTex entry below for citation.
@misc{deepod,
author = {{Xu, Hongzuo}},
title = {{DeepOD: Python Deep Outlier/Anomaly Detection}},
url = {https://github.com/xuhongzuo/DeepOD}
}