Class LSDBC<O extends elki.data.NumberVector>

  • Type Parameters:
    O - Object type
    All Implemented Interfaces:
    elki.Algorithm, ClusteringAlgorithm<Clustering<Model>>

    @Title("LSDBC: Locally Scaled Density Based Clustering")
    @Reference(authors="E. Bi\u00e7ici, D. Yuret",
               title="Locally Scaled Density Based Clustering",
               booktitle="Adaptive and Natural Computing Algorithms",
               url="https://doi.org/10.1007/978-3-540-71618-1_82",
               bibkey="DBLP:conf/icannga/BiciciY07")
    @Priority(100)
    public class LSDBC<O extends elki.data.NumberVector>
    extends java.lang.Object
    implements ClusteringAlgorithm<Clustering<Model>>
    Locally Scaled Density Based Clustering.

    This is a variant of DBSCAN which starts with the most dense point first, then expands clusters until density has dropped below a threshold.

    Reference:

    E. Biçici, D. Yuret
    Locally Scaled Density Based Clustering
    Adaptive and Natural Computing Algorithms

    Since:
    0.7.0
    Author:
    Erich Schubert
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      static class  LSDBC.Par<O extends elki.data.NumberVector>
      Parameterization class
      • Nested classes/interfaces inherited from interface elki.Algorithm

        elki.Algorithm.Utils
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected double alpha
      Alpha parameter.
      protected elki.distance.Distance<? super O> distance
      Distance function used.
      protected int kplus
      Number of neighbors (+ query point)
      private static elki.logging.Logging LOG
      Class logger.
      protected static int NOISE
      Constants used internally.
      protected static int UNPROCESSED
      Constants used internally.
    • Constructor Summary

      Constructors 
      Constructor Description
      LSDBC​(elki.distance.Distance<? super O> distance, int k, double alpha)
      Constructor.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected int expandCluster​(int clusterid, elki.database.datastore.WritableIntegerDataStore clusterids, elki.database.query.knn.KNNSearcher<elki.database.ids.DBIDRef> knnq, elki.database.ids.DBIDs neighbors, double maxkdist, elki.logging.progress.FiniteProgress progress)
      Set-based expand cluster implementation.
      private void fillDensities​(elki.database.query.knn.KNNSearcher<elki.database.ids.DBIDRef> knnq, elki.database.ids.DBIDs ids, elki.database.datastore.WritableDoubleDataStore dens)
      Collect all densities into an array for sorting.
      elki.data.type.TypeInformation[] getInputTypeRestriction()  
      private boolean isLocalMaximum​(double kdist, elki.database.ids.DBIDs neighbors, elki.database.datastore.WritableDoubleDataStore kdists)
      Test if a point is a local density maximum.
      Clustering<Model> run​(elki.database.relation.Relation<O> relation)
      Run the LSDBC algorithm
      • 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.
      • kplus

        protected int kplus
        Number of neighbors (+ query point)
      • alpha

        protected double alpha
        Alpha parameter.
      • distance

        protected elki.distance.Distance<? super O extends elki.data.NumberVector> distance
        Distance function used.
      • UNPROCESSED

        protected static int UNPROCESSED
        Constants used internally.
      • NOISE

        protected static int NOISE
        Constants used internally.
    • Constructor Detail

      • LSDBC

        public LSDBC​(elki.distance.Distance<? super O> distance,
                     int k,
                     double alpha)
        Constructor.
        Parameters:
        distance - Distance function to use
        k - Neighborhood size parameter
        alpha - Alpha parameter
    • 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)
        Run the LSDBC algorithm
        Parameters:
        relation - Data relation
        Returns:
        Clustering result
      • isLocalMaximum

        private boolean isLocalMaximum​(double kdist,
                                       elki.database.ids.DBIDs neighbors,
                                       elki.database.datastore.WritableDoubleDataStore kdists)
        Test if a point is a local density maximum.
        Parameters:
        kdist - k-distance of current
        neighbors - Neighbor points
        kdists - kNN distances
        Returns:
        true when the point is a local maximum
      • expandCluster

        protected int expandCluster​(int clusterid,
                                    elki.database.datastore.WritableIntegerDataStore clusterids,
                                    elki.database.query.knn.KNNSearcher<elki.database.ids.DBIDRef> knnq,
                                    elki.database.ids.DBIDs neighbors,
                                    double maxkdist,
                                    elki.logging.progress.FiniteProgress progress)
        Set-based expand cluster implementation.
        Parameters:
        clusterid - ID of the current cluster.
        clusterids - Current object to cluster mapping.
        knnq - kNNQuery
        neighbors - Neighbors acquired by initial getNeighbors call.
        maxkdist - Maximum k-distance
        progress - Progress logging
        Returns:
        cluster size
      • fillDensities

        private void fillDensities​(elki.database.query.knn.KNNSearcher<elki.database.ids.DBIDRef> knnq,
                                   elki.database.ids.DBIDs ids,
                                   elki.database.datastore.WritableDoubleDataStore dens)
        Collect all densities into an array for sorting.
        Parameters:
        knnq - kNN query
        ids - DBIDs to process
        dens - Density storage