Top AI Repos — open-source AI, indexed and scored
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Repository of the paper "A Systematic Evaluation of Deep Anomaly Detection Methods for Time Series".
| Date | Stars |
|---|---|
| 2026-07-24 | 599 |
| 2026-07-25 | 599 |
| 2026-07-28 | 599 |
| 2026-07-30 | 599 |
| 2026-08-06 | 599 |
Today
— stars today
This week
— stars this week
This month
— stars this month
Momentum
0.0
growth rate 0.00%/day
# Anomaly Detection on Time Series: An Evaluation of Deep Learning Methods. [](https://circleci.com/gh/KDD-OpenSource/DeepADoTS/tree/master)
The goal of this repository is to provide a benchmarking pipeline for anomaly detection on time series data for multiple state-of-the-art deep learning methods.
## Implemented Algorithms
| Name | Paper |
|--------------------|---------------------|
| LSTM-AD | [Long short term memory networks for anomaly detection in time series](https://www.elen.ucl.ac.be/Proceedings/esann/esannpdf/es2015-56), ESANN 2015 |
| LSTM-ED |[LSTM-based encoder-decoder for multi-sensor anomaly detection](https://arxiv.org/pdf/1607.00148.pdf), ICML 2016|
| Autoencoder | [Outlier detection using replicator neural networks](https://link.springer.com/content/pdf/10.1007%2F3-540-46145-0_17.pdf), DaWaK 2002 |
| Donut| [Unsupervised Anomaly Detection via Variational Auto-Encoder for Seasonal KPIs in Web Applications](https://arxiv.org/pdf/1802.03903.pdf), WWW 2018 |
| REBM | [Deep structured energy based models for anomaly detection](http://proceedings.mlr.press/v48/zhai16.pdf), ICML 2016|
|DAGMM| [Deep autoencoding gaussian mixture model for unsupervised anomaly detection](https://openreview.net/pdf?id=BJJLHbb0-), ICLR 2018|
|LSTM-DAGMM | Extension of [DAGMM](https://openreview.net/pdf?id=BJJLHbb0-) using an [LSTM](https://www.bioinf.jku.at/publications/older/2604.pdf)-Autoencoder instead of a Neural Network Autoencoder|
## Usage
```bash
git clone git://github.com/KDD-OpenSource/DeepADoTS.git
virtualenv venv -p /usr/bin/python3
source venv/bin/activate
pip install -r requirements.txt
python3 main.py
```
## Example
We follow the [scikit-learn API](http://scikit-learn.org/dev/developers/contributing.html#different-objects) by offering the interface methods `fit(X)` and `predict(X)`. The former estimates the data distribution in an unsupervised way while the latter returns an anomaly score for each instance - the higher, the more certain is the model that the instance is an anomaly. To compare the performance of methods, we use the [ROC AUC](http://scikit-learn.org/stable/modules/generated/sklearn.metrics.roc_auc_score.html) value.
We use MNIST to demonstrate the usage of a model since it is already available in TensorFlow and does not require downloading external data (even though the data has no temporal aspect).
```python
import pandas as pd
import tensorflow as tf
from sklearn.metrics import roc_auc_score
from src.algorithms import AutoEncoder
from src.datasets import Dataset
class MNIST(Dataset):
"""0 is the outlier class. The training set is free of outliers."""
def __init__(self, seed):
super().__init__(name="MNIST", file_name='') # We do not need to load data from a file
self.seed = seed
def load(self):
# 0 is the outlier, all other digits are normal
OUTLIER_CLASS = 0
mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
# Label outliers with 1 and normal digits with 0
y_train, y_test = (y_train == OUTLIER_CLASS), (y_test == OUTLIER_CLASS)
x_train = x_train[~y_train] # Remove outliers from the training set
x_train, x_test = x_train / 255, x_test / 255
x_train, x_test = x_train.reshape(-1, 784), x_test.reshape(-1, 784)
self._data = tuple(pd.DataFrame(data=data) for data in [x_train, y_train, x_test, y_test])
x_train, y_train, x_test, y_test = MNIST(seed=0).data()
# Use fewer instances for demonstration purposes
x_train, y_train = x_train[:1000], y_train[:1000]
x_test, y_test = x_test[:100], y_test[:100]
model = AutoEncoder(sequence_length=1, num_epochs=40, hidden_size=10, lr=1e-4)
model.fit(x_train)
error = model.predict(x_test)
print(roc_auc_score(y_test, error)) # e.g. 0.8Excerpt of 6,395 characters
Read on GitHubWilli Gierke · Google · Switzerland
40
24
21
18
14
1
Would you bet a product on this? Bounded 0–100 and slow moving.
matched fp:1144a77c297f8caa, topic:deep-learning, topic:pytorch, topic:tensorflow