Class FasterPAM<O>

  • Type Parameters:
    O - object datatype
    All Implemented Interfaces:
    Algorithm, ClusteringAlgorithm<Clustering<MedoidModel>>, KMedoidsClustering<O>
    Direct Known Subclasses:
    FasterCLARA

    @Reference(authors="Erich Schubert and Peter J. Rousseeuw",
               title="Fast and Eager k-Medoids Clustering: O(k) Runtime Improvement of the PAM, CLARA, and CLARANS Algorithms",
               booktitle="arXiv preprint",
               url="https://arxiv.org/abs/2008.05171",
               bibkey="DBLP:journals/corr/abs-2008-05171")
    public class FasterPAM<O>
    extends FastPAM<O>
    Variation of FastPAM that eagerly performs any swap that yields an improvement during an iteration. Compared to EagerPAM it considers all current medoids together, and chooses the best of these; hence apart from computing candidate swaps O(k) times faster, it will also be able to sometimes choose better swaps.

    Reference:

    Erich Schubert and Peter J. Rousseeuw
    Fast and Eager k-Medoids Clustering: O(k) Runtime Improvement of the PAM, CLARA, and CLARANS Algorithms
    Preprint

    Since:
    0.8.0
    Author:
    Erich Schubert
    • Field Detail

      • LOG

        private static final Logging LOG
        The logger for this class.
      • KEY

        private static final java.lang.String KEY
        Key for statistics logging.
    • Constructor Detail

      • FasterPAM

        public FasterPAM​(Distance<? super O> distance,
                         int k,
                         int maxiter,
                         KMedoidsInitialization<O> initializer)
        Constructor.
        Parameters:
        distance - distance function
        k - k parameter
        maxiter - Maxiter parameter
        initializer - Function to generate the initial means
    • Method Detail

      • run

        public Clustering<MedoidModel> run​(Relation<O> relation,
                                           int k,
                                           DistanceQuery<? super O> distQ)
        Description copied from interface: KMedoidsClustering
        Run k-medoids clustering with a given distance query.
        Not a very elegant API, but needed for some types of nested k-medoids.
        Specified by:
        run in interface KMedoidsClustering<O>
        Overrides:
        run in class FastPAM<O>
        Parameters:
        relation - relation to use
        k - Number of clusters
        distQ - Distance query to use
        Returns:
        result
      • getLogger

        protected Logging getLogger()
        Description copied from class: PAM
        Get the static class logger.
        Overrides:
        getLogger in class FastPAM<O>