Class ISOS<O>

  • Type Parameters:
    O - Object type.
    All Implemented Interfaces:
    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
    • Field Detail

      • LOG

        private static final Logging LOG
        Class logger.
      • distance

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

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

        protected double phi
        Expected outlier rate.
    • Method Detail

      • getInputTypeRestriction

        public TypeInformation[] getInputTypeRestriction()
        Description copied from interface: Algorithm
        Get the input type restriction used for negotiating the data query.
        Specified by:
        getInputTypeRestriction in interface Algorithm
        Returns:
        Type restriction
      • run

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

        protected double estimateID​(DBIDRef ignore,
                                    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​(DBIDIter ignore,
                                             DBIDArrayIter di,
                                             double[] p,
                                             double norm,
                                             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 DoubleMinMax transformScores​(WritableDoubleDataStore scores,
                                                   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