Class SNNClustering<O>

  • Type Parameters:
    O - the type of Object the algorithm is applied on
    All Implemented Interfaces:
    elki.Algorithm, ClusteringAlgorithm<Clustering<Model>>

    @Title("SNN: Shared Nearest Neighbor Clustering")
    @Description("Algorithm to find shared-nearest-neighbors-density-connected sets in a database based on the parameters \'minPts\' and \'epsilon\' (specifying a volume). These two parameters determine a density threshold for clustering.")
    @Reference(authors="L. Ert\u00f6z, M. Steinbach, V. Kumar",
               title="Finding Clusters of Different Sizes, Shapes, and Densities in Noisy, High Dimensional Data",
               booktitle="Proc. of SIAM Data Mining (SDM\'03)",
               url="https://doi.org/10.1137/1.9781611972733.5",
               bibkey="DBLP:conf/sdm/ErtozSK03")
    public class SNNClustering<O>
    extends java.lang.Object
    implements ClusteringAlgorithm<Clustering<Model>>
    Shared nearest neighbor clustering.

    Reference:

    L. Ertöz, M. Steinbach, V. Kumar
    Finding Clusters of Different Sizes, Shapes, and Densities in Noisy, High Dimensional Data
    Proc. of SIAM Data Mining (SDM'03)

    Since:
    0.1
    Author:
    Arthur Zimek
    • Nested Class Summary

      • Nested classes/interfaces inherited from interface elki.Algorithm

        elki.Algorithm.Utils
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private int epsilon
      Epsilon radius threshold.
      private static elki.logging.Logging LOG
      The logger for this class.
      private int minpts
      Minimum number of clusters for connectedness.
      protected elki.database.ids.ModifiableDBIDs noise
      Holds a set of noise.
      protected elki.database.ids.ModifiableDBIDs processedIDs
      Holds a set of processed ids.
      protected java.util.List<elki.database.ids.ModifiableDBIDs> resultList
      Holds a list of clusters found.
      private elki.similarity.SharedNearestNeighborSimilarity<O> similarityFunction
      The similarity function for the shared nearest neighbor similarity.
    • Constructor Summary

      Constructors 
      Constructor Description
      SNNClustering​(elki.similarity.SharedNearestNeighborSimilarity<O> similarityFunction, int epsilon, int minpts)
      Constructor.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected void expandCluster​(elki.database.query.similarity.SimilarityQuery<O> snnInstance, elki.database.ids.DBIDRef startObjectID, elki.logging.progress.FiniteProgress objprog, elki.logging.progress.IndefiniteProgress clusprog)
      DBSCAN-function expandCluster adapted to SNN criterion.
      protected elki.database.ids.ArrayModifiableDBIDs findSNNNeighbors​(elki.database.query.similarity.SimilarityQuery<O> snnInstance, elki.database.ids.DBIDRef queryObject)
      Returns the shared nearest neighbors of the specified query object in the given database.
      elki.data.type.TypeInformation[] getInputTypeRestriction()  
      Clustering<Model> run​(elki.database.relation.Relation<O> relation)
      Perform SNN clustering
      • 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
        The logger for this class.
      • epsilon

        private int epsilon
        Epsilon radius threshold.
      • minpts

        private int minpts
        Minimum number of clusters for connectedness.
      • resultList

        protected java.util.List<elki.database.ids.ModifiableDBIDs> resultList
        Holds a list of clusters found.
      • noise

        protected elki.database.ids.ModifiableDBIDs noise
        Holds a set of noise.
      • processedIDs

        protected elki.database.ids.ModifiableDBIDs processedIDs
        Holds a set of processed ids.
      • similarityFunction

        private elki.similarity.SharedNearestNeighborSimilarity<O> similarityFunction
        The similarity function for the shared nearest neighbor similarity.
    • Constructor Detail

      • SNNClustering

        public SNNClustering​(elki.similarity.SharedNearestNeighborSimilarity<O> similarityFunction,
                             int epsilon,
                             int minpts)
        Constructor.
        Parameters:
        similarityFunction - Similarity function
        epsilon - Epsilon
        minpts - Minpts
    • Method Detail

      • getInputTypeRestriction

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

        public Clustering<Model> run​(elki.database.relation.Relation<O> relation)
        Perform SNN clustering
        Parameters:
        relation - Relation
        Returns:
        Result
      • findSNNNeighbors

        protected elki.database.ids.ArrayModifiableDBIDs findSNNNeighbors​(elki.database.query.similarity.SimilarityQuery<O> snnInstance,
                                                                          elki.database.ids.DBIDRef queryObject)
        Returns the shared nearest neighbors of the specified query object in the given database.
        Parameters:
        snnInstance - shared nearest neighbors
        queryObject - the query object
        Returns:
        the shared nearest neighbors of the specified query object in the given database
      • expandCluster

        protected void expandCluster​(elki.database.query.similarity.SimilarityQuery<O> snnInstance,
                                     elki.database.ids.DBIDRef startObjectID,
                                     elki.logging.progress.FiniteProgress objprog,
                                     elki.logging.progress.IndefiniteProgress clusprog)
        DBSCAN-function expandCluster adapted to SNN criterion.

        Border-Objects become members of the first possible cluster.

        Parameters:
        snnInstance - shared nearest neighbors
        startObjectID - potential seed of a new potential cluster
        objprog - the progress object to report about the progress of clustering