Class KDTreeFilteringKMeans<V extends elki.data.NumberVector>

  • Type Parameters:
    V - vector datatype
    All Implemented Interfaces:
    elki.Algorithm, ClusteringAlgorithm<Clustering<KMeansModel>>, KMeans<V,​KMeansModel>

    @Title("K-d-tree K-means with Filtering")
    @Reference(authors="D. Pelleg, A. Moore",title="Accelerating Exact k-means Algorithms with Geometric Reasoning",booktitle="Proc. ACM SIGKDD Int. Conf. Knowledge Discovery and Data Mining",url="https://doi.org/10.1145/312129.312248",bibkey="DBLP:conf/kdd/PellegM99") @Reference(authors="T. Kanungo, D. M. Mount, N. S. Netanyahu, C. D. Piatko, R. Silverman, A. Y. Wu",title="Computing Nearest Neighbors for Moving Points and Applications to Clustering",booktitle="Proc. 10th ACM-SIAM Symposium on Discrete Algorithms (SODA\'99)",url="http://dl.acm.org/citation.cfm?id=314500.315095",bibkey="DBLP:conf/soda/KanungoMNPSW99") @Reference(authors="T. Kanungo, D. M. Mount, N. S. Netanyahu, C. D. Piatko, R. Silverman, A. Y. Wu",title="An Efficient k-Means Clustering Algorithm: Analysis and Implementation",booktitle="IEEE Transactions on Pattern Analysis and Machine Intelligence 24(7)",url="https://doi.org/10.1109/TPAMI.2002.1017616",bibkey="DBLP:journals/pami/KanungoMNPSW02")
    public class KDTreeFilteringKMeans<V extends elki.data.NumberVector>
    extends KDTreePruningKMeans<V>
    Filtering or "blacklisting" K-means with k-d-tree acceleration.

    This is an implementation of the slightly later (1999) variant of Pelleg and Moore respectively Kanungo et al. using hyperplanes for filtering instead of a similar approach using minimum and maximum distances published in 1997 by Alsabti et al., see KDTreePruningKMeans.

    References:

    D. Pelleg and A. Moore
    Accelerating Exact k-means Algorithms with Geometric Reasoning
    Proc. ACM SIGKDD Int. Conf. Knowledge Discovery and Data Mining

    T. Kanungo, D. M. Mount, N. S. Netanyahu, C. D. Piatko, R. Silverman, A. Y. Wu
    Computing Nearest Neighbors for Moving Points and Applications to Clustering
    Proc. 10th ACM-SIAM Symposium on Discrete Algorithms (SODA'99)

    A more detailed analysis appeared later in:

    T. Kanungo, D. M. Mount, N. S. Netanyahu, C. D. Piatko, R. Silverman, A. Y. Wu
    An Efficient k-Means Clustering Algorithm: Analysis and Implementation
    IEEE Transactions on Pattern Analysis and Machine Intelligence 24(7)

    Since:
    0.8.0
    Author:
    Cedrik Lüdicke (initial version), Erich Schubert (optimizations, rewrite)
    • Field Detail

      • LOG

        private static final elki.logging.Logging LOG
        The logger for this class.
    • Constructor Detail

      • KDTreeFilteringKMeans

        public KDTreeFilteringKMeans​(elki.distance.NumberVectorDistance<? super V> distance,
                                     int k,
                                     int maxiter,
                                     KMeansInitialization initializer,
                                     KDTreePruningKMeans.Split split,
                                     int leafsize)
        Constructor.
        Parameters:
        distance - distance function
        k - k parameter
        maxiter - Maxiter parameter
        initializer - Initialization method
        split - Splitting strategy
        leafsize - Leaf size
    • Method Detail

      • run

        public Clustering<KMeansModel> run​(elki.database.relation.Relation<V> relation)
        Description copied from interface: KMeans
        Run the clustering algorithm.
        Specified by:
        run in interface KMeans<V extends elki.data.NumberVector,​KMeansModel>
        Overrides:
        run in class KDTreePruningKMeans<V extends elki.data.NumberVector>
        Parameters:
        relation - Relation to process.
        Returns:
        Clustering result
      • getLogger

        protected elki.logging.Logging getLogger()
        Description copied from class: AbstractKMeans
        Get the (STATIC) logger for this class.
        Overrides:
        getLogger in class KDTreePruningKMeans<V extends elki.data.NumberVector>
        Returns:
        the static logger