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 doublealphaMixing parameter alphaprivate static doubleDELTAConvergence parameterprotected doublelambdaParameter lambda of the exponential distribution (inliers)private static LoggingLOGThe logger for this class.protected doublemuParameter mu of the gaussian distribution (outliers)static doubleONEBYSQRT2PIPrecomputed static valueprotected doublesigmaParameter 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 doublecalcP_i(double f, double mu, double sigma)Compute p_i (Gaussian distribution, outliers)protected static doublecalcPosterior(double f, double alpha, double mu, double sigma, double lambda)Compute the a posterior probability for the given parameters.protected static doublecalcQ_i(double f, double lambda)Compute q_i (Exponential distribution, inliers)doublegetMax()Get maximum resulting value.doublegetMin()Get minimum resulting value.doublegetScaled(double value)Transform a given value using the scaling function.<A> voidprepare(A array, NumberArrayAdapter<?,A> adapter)Prepare is called once for each data set, before getScaled() will be called.voidprepare(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:OutlierScalingPrepare 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:
preparein interfaceOutlierScaling- Parameters:
or- Outlier result to use
-
prepare
public <A> void prepare(A array, NumberArrayAdapter<?,A> adapter)Description copied from interface:OutlierScalingPrepare 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 fullOutlierResultis preferred, as it will allow access to the metadata.- Specified by:
preparein interfaceOutlierScaling- Parameters:
array- Data to processadapter- Array adapter
-
getMax
public double getMax()
Description copied from interface:ScalingFunctionGet maximum resulting value. May beDouble.NaNorDouble.POSITIVE_INFINITY.- Specified by:
getMaxin interfaceScalingFunction- Returns:
- Maximum resulting value.
-
getMin
public double getMin()
Description copied from interface:ScalingFunctionGet minimum resulting value. May beDouble.NaNorDouble.NEGATIVE_INFINITY.- Specified by:
getMinin interfaceScalingFunction- Returns:
- Minimum resulting value.
-
getScaled
public double getScaled(double value)
Description copied from interface:ScalingFunctionTransform a given value using the scaling function.- Specified by:
getScaledin interfaceScalingFunction- Parameters:
value- Original value- Returns:
- Scaled value
-
-