Class LAB<O>
- java.lang.Object
-
- elki.clustering.kmedoids.initialization.LAB<O>
-
- Type Parameters:
O- Object type for KMedoids initialization
- All Implemented Interfaces:
KMeansInitialization,KMedoidsInitialization<O>
@Reference(authors="Erich Schubert, Peter J. Rousseeuw", title="Faster k-Medoids Clustering: Improving the PAM, CLARA, and CLARANS Algorithms", booktitle="Proc. 12th Int. Conf. Similarity Search and Applications (SISAP\'2019)", url="https://doi.org/10.1007/978-3-030-32047-8_16", bibkey="DBLP:conf/sisap/SchubertR19") public class LAB<O> extends java.lang.Object implements KMeansInitialization, KMedoidsInitialization<O>Linear approximative BUILD (LAB) initialization for FastPAM (and k-means).This is a O(nk) aproximation of the original PAM BUILD. For performance, it uses an O(sqrt(n)) sample to achieve linear run time. The results will be worse than those of BUILD, but provide a good starting point for FastPAM optimization.
Reference:
Erich Schubert, Peter J. Rousseeuw
Faster k-Medoids Clustering: Improving the PAM, CLARA, and CLARANS Algorithms
Proc. 12th Int. Conf. Similarity Search and Applications (SISAP'2019)- Since:
- 0.7.5
- Author:
- Erich Schubert
-
-
Constructor Summary
Constructors Constructor Description LAB(elki.utilities.random.RandomFactory rnd)Constructor.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description double[][]chooseInitialMeans(elki.database.relation.Relation<? extends elki.data.NumberVector> relation, int k, elki.distance.NumberVectorDistance<?> distance)Choose initial meanselki.database.ids.DBIDschooseInitialMedoids(int k, elki.database.ids.DBIDs ids, elki.database.query.distance.DistanceQuery<? super O> distQ)Choose initial meansprotected static doublegetMinDist(elki.database.ids.DBIDArrayIter j, elki.database.query.distance.DistanceQuery<?> distQ, elki.database.ids.DBIDArrayIter mi, elki.database.datastore.WritableDoubleDataStore mindist)Get the minimum distance to previous medoids.private static voidshuffle(elki.database.ids.ArrayModifiableDBIDs ids, int ssize, int end, java.util.Random random)Partial Fisher-Yates shuffle.
-
-
-
Method Detail
-
chooseInitialMeans
public double[][] chooseInitialMeans(elki.database.relation.Relation<? extends elki.data.NumberVector> relation, int k, elki.distance.NumberVectorDistance<?> distance)Description copied from interface:KMeansInitializationChoose initial means- Specified by:
chooseInitialMeansin interfaceKMeansInitialization- Parameters:
relation- Relationk- Parameter kdistance- Distance function- Returns:
- List of chosen means for k-means
-
chooseInitialMedoids
public elki.database.ids.DBIDs chooseInitialMedoids(int k, elki.database.ids.DBIDs ids, elki.database.query.distance.DistanceQuery<? super O> distQ)Description copied from interface:KMedoidsInitializationChoose initial means- Specified by:
chooseInitialMedoidsin interfaceKMedoidsInitialization<O>- Parameters:
k- Parameter kids- Candidate IDs.distQ- Distance function- Returns:
- List of chosen means for k-means
-
getMinDist
protected static double getMinDist(elki.database.ids.DBIDArrayIter j, elki.database.query.distance.DistanceQuery<?> distQ, elki.database.ids.DBIDArrayIter mi, elki.database.datastore.WritableDoubleDataStore mindist)Get the minimum distance to previous medoids.- Parameters:
j- current objectdistQ- distance querymi- medoid iteratormindist- distance storage- Returns:
- minimum distance
-
shuffle
private static void shuffle(elki.database.ids.ArrayModifiableDBIDs ids, int ssize, int end, java.util.Random random)Partial Fisher-Yates shuffle.- Parameters:
ids- IDs to shufflessize- sample size to generateend- Valid rangerandom- Random generator
-
-