Class SigmoidOutlierScaling

  • 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 SigmoidOutlierScaling
    extends java.lang.Object
    implements OutlierScaling
    Tries to fit a sigmoid to the outlier scores and use it to convert the values to probability estimates in the range of 0.0 to 1.0

    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
      (package private) double Afinal
      Sigmoid parameter
      (package private) double Bfinal
      Sigmoid parameter
      private static Logging LOG
      The logger for this class.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      double getMax()
      Get maximum resulting value.
      double getMin()
      Get minimum resulting value.
      double getScaled​(double value)
      Transform a given value using the scaling function.
      private <A> double[] MStepLevenbergMarquardt​(double a, double b, long[] t, A array, NumberArrayAdapter<?,​A> adapter)
      M-Step using a modified Levenberg-Marquardt method.
      private double[] MStepLevenbergMarquardt​(double a, double b, ArrayDBIDs ids, long[] t, DoubleRelation scores)
      M-Step using a modified Levenberg-Marquardt method.
      <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.
      • Afinal

        double Afinal
        Sigmoid parameter
      • Bfinal

        double Bfinal
        Sigmoid parameter
    • Constructor Detail

      • SigmoidOutlierScaling

        public SigmoidOutlierScaling()
    • Method Detail

      • 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
      • MStepLevenbergMarquardt

        private double[] MStepLevenbergMarquardt​(double a,
                                                 double b,
                                                 ArrayDBIDs ids,
                                                 long[] t,
                                                 DoubleRelation scores)
        M-Step using a modified Levenberg-Marquardt method.

        Implementation based on:
        H.-T. Lin, C.-J. Lin, R. C. Weng:
        A Note on Platt’s Probabilistic Outputs for Support Vector Machines

        Parameters:
        a - A parameter
        b - B parameter
        ids - Ids to process
        t - Bitset containing the assignment
        scores - Scores
        Returns:
        new values for A and B.
      • MStepLevenbergMarquardt

        private <A> double[] MStepLevenbergMarquardt​(double a,
                                                     double b,
                                                     long[] t,
                                                     A array,
                                                     NumberArrayAdapter<?,​A> adapter)
        M-Step using a modified Levenberg-Marquardt method.

        Implementation based on:

        H.-T. Lin, C.-J. Lin, R. C. Weng:
        A Note on Platt’s Probabilistic Outputs for Support Vector Machines

        Parameters:
        a - A parameter
        b - B parameter
        t - Bitset containing the assignment
        array - Score array
        adapter - Array adapter
        Returns:
        new values for A and B.
      • 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