Class ISOS<O>

  • Type Parameters:
    O - Object type.
    All Implemented Interfaces:
    elki.Algorithm, OutlierAlgorithm

    @Title("ISOS: Intrinsic Stochastic Outlier Selection")
    @Reference(authors="Erich Schubert, Michael Gertz",
               title="Intrinsic t-Stochastic Neighbor Embedding for Visualization and Outlier Detection: A Remedy Against the Curse of Dimensionality?",
               booktitle="Proc. Int. Conf. Similarity Search and Applications, SISAP 2017",
               url="https://doi.org/10.1007/978-3-319-68474-1_13",
               bibkey="DBLP:conf/sisap/SchubertG17")
    public class ISOS<O>
    extends java.lang.Object
    implements OutlierAlgorithm
    Intrinsic Stochastic Outlier Selection.

    Reference:

    Erich Schubert, Michael Gertz
    Intrinsic t-Stochastic Neighbor Embedding for Visualization and Outlier Detection: A Remedy Against the Curse of Dimensionality?
    Proc. Int. Conf. Similarity Search and Applications, SISAP 2017

    Since:
    0.7.5
    Author:
    Erich Schubert
    • Nested Class Summary

      • Nested classes/interfaces inherited from interface elki.Algorithm

        elki.Algorithm.Utils
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected elki.distance.Distance<? super O> distance
      Distance function used.
      protected elki.math.statistics.intrinsicdimensionality.DistanceBasedIntrinsicDimensionalityEstimator estimator
      Estimator of intrinsic dimensionality.
      protected int k
      Number of neighbors (not including query point).
      private static elki.logging.Logging LOG
      Class logger.
      protected double phi
      Expected outlier rate.
    • Constructor Summary

      Constructors 
      Constructor Description
      ISOS​(elki.distance.Distance<? super O> distance, int k, elki.math.statistics.intrinsicdimensionality.DistanceBasedIntrinsicDimensionalityEstimator estimator)
      Constructor.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected static void adjustDistances​(elki.database.ids.DBIDRef ignore, elki.database.ids.DoubleDBIDListIter ki, double max, double id, elki.database.ids.ModifiableDoubleDBIDList dists)  
      protected double estimateID​(elki.database.ids.DBIDRef ignore, elki.database.ids.DoubleDBIDListIter it, double[] p)
      Estimate the local intrinsic dimensionality.
      elki.data.type.TypeInformation[] getInputTypeRestriction()  
      static void nominateNeighbors​(elki.database.ids.DBIDIter ignore, elki.database.ids.DBIDArrayIter di, double[] p, double norm, elki.database.datastore.WritableDoubleDataStore scores)
      Vote for neighbors not being outliers.
      OutlierResult run​(elki.database.relation.Relation<O> relation)
      Run the algorithm.
      static elki.math.DoubleMinMax transformScores​(elki.database.datastore.WritableDoubleDataStore scores, elki.database.ids.DBIDs ids, double logPerp, double phi)
      Transform scores
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • LOG

        private static final elki.logging.Logging LOG
        Class logger.
      • distance

        protected elki.distance.Distance<? super O> distance
        Distance function used.
      • k

        protected int k
        Number of neighbors (not including query point).
      • estimator

        protected elki.math.statistics.intrinsicdimensionality.DistanceBasedIntrinsicDimensionalityEstimator estimator
        Estimator of intrinsic dimensionality.
      • phi

        protected double phi
        Expected outlier rate.
    • Constructor Detail

      • ISOS

        public ISOS​(elki.distance.Distance<? super O> distance,
                    int k,
                    elki.math.statistics.intrinsicdimensionality.DistanceBasedIntrinsicDimensionalityEstimator estimator)
        Constructor.
        Parameters:
        distance - Distance function
        k - Number of neighbors to consider
        estimator - Estimator of intrinsic dimensionality.
    • Method Detail

      • getInputTypeRestriction

        public elki.data.type.TypeInformation[] getInputTypeRestriction()
        Specified by:
        getInputTypeRestriction in interface elki.Algorithm
      • run

        public OutlierResult run​(elki.database.relation.Relation<O> relation)
        Run the algorithm.
        Parameters:
        relation - data relation.
        Returns:
        outlier detection result
      • adjustDistances

        protected static void adjustDistances​(elki.database.ids.DBIDRef ignore,
                                              elki.database.ids.DoubleDBIDListIter ki,
                                              double max,
                                              double id,
                                              elki.database.ids.ModifiableDoubleDBIDList dists)
      • estimateID

        protected double estimateID​(elki.database.ids.DBIDRef ignore,
                                    elki.database.ids.DoubleDBIDListIter it,
                                    double[] p)
        Estimate the local intrinsic dimensionality.
        Parameters:
        ignore - Object to ignore
        it - Iterator
        p - Scratch array
        Returns:
        ID estimate
      • nominateNeighbors

        public static void nominateNeighbors​(elki.database.ids.DBIDIter ignore,
                                             elki.database.ids.DBIDArrayIter di,
                                             double[] p,
                                             double norm,
                                             elki.database.datastore.WritableDoubleDataStore scores)
        Vote for neighbors not being outliers. The key method of SOS.
        Parameters:
        ignore - Object to ignore
        di - Neighbor object IDs.
        p - Probabilities
        norm - Normalization factor (1/sum)
        scores - Output score storage
      • transformScores

        public static elki.math.DoubleMinMax transformScores​(elki.database.datastore.WritableDoubleDataStore scores,
                                                             elki.database.ids.DBIDs ids,
                                                             double logPerp,
                                                             double phi)
        Transform scores
        Parameters:
        scores - Scores to transform
        ids - DBIDs to process
        logPerp - log perplexity
        phi - Expected outlier rate
        Returns:
        Minimum and maximum scores