Class 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 alpha
      private static double DELTA
      Convergence parameter
      protected 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 value
      protected double sigma
      Parameter sigma of the gaussian distribution (outliers)
    • 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.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • 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
    • Constructor Detail

      • MixtureModelOutlierScaling

        public MixtureModelOutlierScaling()
    • Method Detail

      • calcP_i

        protected static double calcP_i​(double f,
                                        double mu,
                                        double sigma)
        Compute p_i (Gaussian distribution, outliers)
        Parameters:
        f - value
        mu - Mu parameter
        sigma - Sigma parameter
        Returns:
        probability
      • calcQ_i

        protected static double calcQ_i​(double f,
                                        double lambda)
        Compute q_i (Exponential distribution, inliers)
        Parameters:
        f - value
        lambda - 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 - value
        alpha - Alpha (mixing) parameter
        mu - 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 interface OutlierScaling
        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 full OutlierResult is preferred, as it will allow access to the metadata.
        Specified by:
        prepare in interface OutlierScaling
        Parameters:
        array - Data to process
        adapter - Array adapter
      • getMax

        public double getMax()
        Description copied from interface: ScalingFunction
        Get maximum resulting value. May be Double.NaN or Double.POSITIVE_INFINITY.
        Specified by:
        getMax in interface ScalingFunction
        Returns:
        Maximum resulting value.
      • getMin

        public double getMin()
        Description copied from interface: ScalingFunction
        Get minimum resulting value. May be Double.NaN or Double.NEGATIVE_INFINITY.
        Specified by:
        getMin in interface ScalingFunction
        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 interface ScalingFunction
        Parameters:
        value - Original value
        Returns:
        Scaled value