Created by: DrewNow
All Submissions Basics:
- Have you followed the guidelines in our Contributing document?
- Have you checked to ensure there aren't other open Pull Requests for the same update/change?
- Have you checked all Issues to tie the PR to a specific one?
All Submissions Cores:
- Have you added an explanation of what your changes do and why you'd like us to include them?
- Have you written new tests for your core changes, as applicable?
- Have you successfully ran tests with your changes locally?
- Does your submission pass tests, including CircleCI, Travis CI, and AppVeyor?
- Does your submission have appropriate code coverage? The cutoff threshold is 95% by Coversall.
New Model Submissions:
- created a vae.py in ~/pyod/models/
- created a vae_example.py in ~/examples/
- created a test_vae.py in ~/pyod/test/
- lint code locally prior to submission
Variational Auto Encoder for outlier detection
By compressing input features into a latent space, this technique similarly to a simple autoencoder, enables one to learn features representation. The main difference between the two approaches is in sampling of the latent space: variational auto encoder (VAE) samples from a normal distribution of the parameters, forming latent variables. Hence by decoding from the latent space VAE also reproduces the underlying distribution of the input data. Technically, this is realized by introducing a change to a loss function that aims to maximize Evidence Lower Bound (equivalent to minimization of Kullback-Leibler divergence between true and approximate data distribution). Additionally, VAE can be readily adapted to account for semi-supervised mode, should input data be partially labelled.