Skip to content

Commit

Permalink
Update README
Browse files Browse the repository at this point in the history
  • Loading branch information
demonzyj56 committed Jul 13, 2022
1 parent caaef03 commit e2fd640
Showing 1 changed file with 8 additions and 30 deletions.
38 changes: 8 additions & 30 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,9 @@
# Effective End-to-end Unsupervised Outlier Detection via Inlier Priority of Discriminative Network
By Siqi Wang, Yijie Zeng, Xinwang Liu, En Zhu, Jianping Yin, Chuanfu Xu, Marius Kloft. In [NeurIPS 2019](https://papers.nips.cc/paper/8830-effective-end-to-end-unsupervised-outlier-detection-via-inlier-priority-of-discriminative-network).

## Update
- 2020/07/13: Added multiple score refinement strategies (ensemble, re-weighting) which improve performance of E3Outlier. Added several recent unsupervised outlier detection implementations, including DSEBM, RSRAE, RSRAE+, MO-GAAL. Checkout the `extension` branch for more information.
# Demo implementation of E3Outlier for Unsupervised Outlier Detection

## Introduction
This is the official implementation of the E3Outlier framework presented by "Effective End-to-end Unsupervised Outlier Detection via Inlier Priority of Discriminative Network".
The codes are used to reproduce experimental results of E3Outlier and other unsupervised outlier detection (UOD) methods reported in the [paper](https://papers.nips.cc/paper/8830-effective-end-to-end-unsupervised-outlier-detection-via-inlier-priority-of-discriminative-network.pdf).
This repository provides the implementation of discriminative E3Outlier, an effective and end-to-end method for the unsupervised outlier detection (UOD) task. UOD aims to directly detect outliers from a contaminated unlabeled dataset in a transductive manner, without using any labeled data (e.g. a labeled training set with pure normal data/inliers).

## Requirements
## Requirements
- Python 3.6
- PyTorch 0.4.1 (GPU)
- Keras 2.2.0
Expand All @@ -18,39 +13,22 @@ The codes are used to reproduce experimental results of E3Outlier and other uns

## Usage

To obtain the results of E3Outlier and other UOD methods compared in the paper with default settings, simply run the following command:
To run E3Outlier with default settings, simply run the following command:

```bash
python outlier_experiments.py
```

This will automatically run all UOD methods reported in the manuscript. Please see ```outlier_experiments.py``` for more details.
This will automatically run UOD methods on all datasets (`MNIST`, `Fashion-MNIST`, `SVHN`, `CIFAR10` and `CIFAR100`). On each dataset the experiment will be conducted with 5 outlier ratios: 0.05, 0.1, 0.15, 0.2 and 0.25.

After training, to print UOD results for a specific algorithm in AUROC/AUPR, run:
After learning, the prediction scores and ground truth labels are saved to an `npz` file. To obtain the UOD result for a specific algorithm, run ```evaluate_roc_auc.py``` for evaluation using *Area under the ROC curve (AUROC)*, or ```evaluate_pr_auc.py``` for evaluation using *Area under the PR curve (AUPR)*. Example usage:

```bash
# AUROC of E3Outlier on CIFAR10 with outlier ratio 0.1
python evaluate_roc_auc.py --dataset cifar10 --algo_name e3outlier-0.1

# AUPR of CAE-IF on MNIST with outlier ratio 0.25 and inliers as the postive class
python evaluate_pr_auc.py --dataset mnist --algo_name cae-iforest-0.25 --postive inliers
```

The algorithm names are defined in ```outlier_experiments.py```.

## Citation

```
@incollection{NIPS2019_8830,
title = {Effective End-to-end Unsupervised Outlier Detection via Inlier Priority of Discriminative Network},
author = {Wang, Siqi and Zeng, Yijie and Liu, Xinwang and Zhu, En and Yin, Jianping and Xu, Chuanfu and Kloft, Marius},
booktitle = {Advances in Neural Information Processing Systems 32},
editor = {H. Wallach and H. Larochelle and A. Beygelzimer and F. d\textquotesingle Alch\'{e}-Buc and E. Fox and R. Garnett},
pages = {5960--5973},
year = {2019},
publisher = {Curran Associates, Inc.},
url = {http://papers.nips.cc/paper/8830-effective-end-to-end-unsupervised-outlier-detection-via-inlier-priority-of-discriminative-network.pdf}
}
# AUPR of E3Outlier on MNIST with outlier ratio 0.25 and inliers as the postive class
python evaluate_pr_auc.py --dataset mnist --algo_name e3outlier-0.25 --postive inliers
```

## License
Expand Down

0 comments on commit e2fd640

Please sign in to comment.