Package elki.utilities.scaling.outlier
Class MixtureModelOutlierScaling
- java.lang.Object
-
- elki.utilities.scaling.outlier.MixtureModelOutlierScaling
-
- All Implemented Interfaces:
OutlierScaling
,ScalingFunction
@Reference(authors="J. Gao, P.-N. Tan", title="Converting Output Scores from Outlier Detection Algorithms into Probability Estimates", booktitle="Proc. Sixth International Conference on Data Mining, 2006. ICDM\'06.", url="https://doi.org/10.1109/ICDM.2006.43", bibkey="DBLP:conf/icdm/GaoT06") public class MixtureModelOutlierScaling extends java.lang.Object implements OutlierScaling
Tries to fit a mixture model (exponential for inliers and gaussian for outliers) to the outlier score distribution.Note: we found this method to often fail, and fit the normal distribution to the inliers instead of the outliers, yielding reversed results.
Reference:
J. Gao, P.-N. Tan
Converting Output Scores from Outlier Detection Algorithms into Probability Estimates
Proc. Sixth International Conference on Data Mining, 2006. ICDM'06.- Since:
- 0.4.0
- Author:
- Erich Schubert
-
-
Field Summary
Fields Modifier and Type Field Description protected double
alpha
Mixing parameter alphaprivate static double
DELTA
Convergence parameterprotected double
lambda
Parameter lambda of the exponential distribution (inliers)private static Logging
LOG
The logger for this class.protected double
mu
Parameter mu of the gaussian distribution (outliers)static double
ONEBYSQRT2PI
Precomputed static valueprotected double
sigma
Parameter sigma of the gaussian distribution (outliers)
-
Constructor Summary
Constructors Constructor Description MixtureModelOutlierScaling()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected static double
calcP_i(double f, double mu, double sigma)
Compute p_i (Gaussian distribution, outliers)protected static double
calcPosterior(double f, double alpha, double mu, double sigma, double lambda)
Compute the a posterior probability for the given parameters.protected static double
calcQ_i(double f, double lambda)
Compute q_i (Exponential distribution, inliers)double
getMax()
Get maximum resulting value.double
getMin()
Get minimum resulting value.double
getScaled(double value)
Transform a given value using the scaling function.<A> void
prepare(A array, NumberArrayAdapter<?,A> adapter)
Prepare is called once for each data set, before getScaled() will be called.void
prepare(OutlierResult or)
Prepare is called once for each data set, before getScaled() will be called.
-
-
-
Field Detail
-
LOG
private static final Logging LOG
The logger for this class.
-
mu
protected double mu
Parameter mu of the gaussian distribution (outliers)
-
sigma
protected double sigma
Parameter sigma of the gaussian distribution (outliers)
-
lambda
protected double lambda
Parameter lambda of the exponential distribution (inliers)
-
alpha
protected double alpha
Mixing parameter alpha
-
ONEBYSQRT2PI
public static final double ONEBYSQRT2PI
Precomputed static value
-
DELTA
private static final double DELTA
Convergence parameter- See Also:
- Constant Field Values
-
-
Method Detail
-
calcP_i
protected static double calcP_i(double f, double mu, double sigma)
Compute p_i (Gaussian distribution, outliers)- Parameters:
f
- valuemu
- Mu parametersigma
- Sigma parameter- Returns:
- probability
-
calcQ_i
protected static double calcQ_i(double f, double lambda)
Compute q_i (Exponential distribution, inliers)- Parameters:
f
- valuelambda
- Lambda parameter- Returns:
- probability
-
calcPosterior
protected static double calcPosterior(double f, double alpha, double mu, double sigma, double lambda)
Compute the a posterior probability for the given parameters.- Parameters:
f
- valuealpha
- Alpha (mixing) parametermu
- Mu (for gaussian)sigma
- Sigma (for gaussian)lambda
- Lambda (for exponential)- Returns:
- Probability
-
prepare
public void prepare(OutlierResult or)
Description copied from interface:OutlierScaling
Prepare is called once for each data set, before getScaled() will be called. This function can be used to extract global parameters such as means, minimums or maximums from the outlier scores.- Specified by:
prepare
in interfaceOutlierScaling
- Parameters:
or
- Outlier result to use
-
prepare
public <A> void prepare(A array, NumberArrayAdapter<?,A> adapter)
Description copied from interface:OutlierScaling
Prepare is called once for each data set, before getScaled() will be called. This function can be used to extract global parameters such as means, minimums or maximums from the score array. The method using a fullOutlierResult
is preferred, as it will allow access to the metadata.- Specified by:
prepare
in interfaceOutlierScaling
- Parameters:
array
- Data to processadapter
- Array adapter
-
getMax
public double getMax()
Description copied from interface:ScalingFunction
Get maximum resulting value. May beDouble.NaN
orDouble.POSITIVE_INFINITY
.- Specified by:
getMax
in interfaceScalingFunction
- Returns:
- Maximum resulting value.
-
getMin
public double getMin()
Description copied from interface:ScalingFunction
Get minimum resulting value. May beDouble.NaN
orDouble.NEGATIVE_INFINITY
.- Specified by:
getMin
in interfaceScalingFunction
- Returns:
- Minimum resulting value.
-
getScaled
public double getScaled(double value)
Description copied from interface:ScalingFunction
Transform a given value using the scaling function.- Specified by:
getScaled
in interfaceScalingFunction
- Parameters:
value
- Original value- Returns:
- Scaled value
-
-