de.lmu.ifi.dbs.elki.algorithm.outlier
Class GaussianUniformMixture<V extends NumberVector<V,?>>

java.lang.Object
  extended by de.lmu.ifi.dbs.elki.algorithm.AbstractAlgorithm<OutlierResult>
      extended by de.lmu.ifi.dbs.elki.algorithm.outlier.GaussianUniformMixture<V>
Type Parameters:
V - Vector Type
All Implemented Interfaces:
Algorithm, OutlierAlgorithm, InspectionUtilFrequentlyScanned, Parameterizable

@Title(value="Gaussian-Uniform Mixture Model Outlier Detection")
@Description(value="Fits a mixture model consisting of a Gaussian and a uniform distribution to the data.")
@Reference(prefix="Generalization using the likelihood gain as outlier score of",
           authors="Eskin, Eleazar",
           title="Anomaly detection over noisy data using learned probability distributions",
           booktitle="Proc. of the Seventeenth International Conference on Machine Learning (ICML-2000)")
public class GaussianUniformMixture<V extends NumberVector<V,?>>
extends AbstractAlgorithm<OutlierResult>
implements OutlierAlgorithm

Outlier detection algorithm using a mixture model approach. The data is modeled as a mixture of two distributions, a Gaussian distribution for ordinary data and a uniform distribution for outliers. At first all Objects are in the set of normal objects and the set of anomalous objects is empty. An iterative procedure then transfers objects from the ordinary set to the anomalous set if the transfer increases the overall likelihood of the data.

Reference:
Eskin, Eleazar: Anomaly detection over noisy data using learned probability distributions. In Proc. of the Seventeenth International Conference on Machine Learning (ICML-2000).


Nested Class Summary
static class GaussianUniformMixture.Parameterizer<V extends NumberVector<V,?>>
          Parameterization class.
 
Field Summary
private  double c
          Holds the value of C_ID.
static OptionID C_ID
          Parameter to specify the cutoff.
static OptionID L_ID
          Parameter to specify the fraction of expected outliers.
private static Logging logger
          The logger for this class.
private  double logl
          log(l) precomputed
private  double logml
          log(1-l) precomputed
private static double SINGULARITY_CHEAT
          Small value to increment diagonally of a matrix in order to avoid singularity before building the inverse.
 
Constructor Summary
GaussianUniformMixture(double l, double c)
          Constructor with parameters.
 
Method Summary
 TypeInformation[] getInputTypeRestriction()
          Get the input type restriction used for negotiating the data query.
protected  Logging getLogger()
          Get the (STATIC) logger for this class.
private  double loglikelihoodAnomalous(DBIDs anomalousObjs)
          Loglikelihood anomalous objects.
private  double loglikelihoodNormal(DBIDs objids, Relation<V> database)
          Computes the loglikelihood of all normal objects.
 OutlierResult run(Relation<V> relation)
           
 
Methods inherited from class de.lmu.ifi.dbs.elki.algorithm.AbstractAlgorithm
makeParameterDistanceFunction, run
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface de.lmu.ifi.dbs.elki.algorithm.outlier.OutlierAlgorithm
run
 

Field Detail

logger

private static final Logging logger
The logger for this class.


L_ID

public static final OptionID L_ID
Parameter to specify the fraction of expected outliers.


C_ID

public static final OptionID C_ID
Parameter to specify the cutoff.


SINGULARITY_CHEAT

private static final double SINGULARITY_CHEAT
Small value to increment diagonally of a matrix in order to avoid singularity before building the inverse.

See Also:
Constant Field Values

c

private double c
Holds the value of C_ID.


logl

private double logl
log(l) precomputed


logml

private double logml
log(1-l) precomputed

Constructor Detail

GaussianUniformMixture

public GaussianUniformMixture(double l,
                              double c)
Constructor with parameters.

Parameters:
l - l value
c - c value
Method Detail

run

public OutlierResult run(Relation<V> relation)
                  throws IllegalStateException
Throws:
IllegalStateException

loglikelihoodAnomalous

private double loglikelihoodAnomalous(DBIDs anomalousObjs)
Loglikelihood anomalous objects. Uniform distribution

Parameters:
anomalousObjs -
Returns:
loglikelihood for anomalous objects

loglikelihoodNormal

private double loglikelihoodNormal(DBIDs objids,
                                   Relation<V> database)
Computes the loglikelihood of all normal objects. Gaussian model

Parameters:
objids - Object IDs for 'normal' objects.
database - Database
Returns:
loglikelihood for normal objects

getInputTypeRestriction

public TypeInformation[] getInputTypeRestriction()
Description copied from class: AbstractAlgorithm
Get the input type restriction used for negotiating the data query.

Specified by:
getInputTypeRestriction in interface Algorithm
Specified by:
getInputTypeRestriction in class AbstractAlgorithm<OutlierResult>
Returns:
Type restriction

getLogger

protected Logging getLogger()
Description copied from class: AbstractAlgorithm
Get the (STATIC) logger for this class.

Specified by:
getLogger in class AbstractAlgorithm<OutlierResult>
Returns:
the static logger

Release 0.4.0 (2011-09-20_1324)