Class CFKPlusPlusTree
- java.lang.Object
-
- elki.clustering.kmeans.initialization.betula.AbstractCFKMeansInitialization
-
- elki.clustering.kmeans.initialization.betula.CFKPlusPlusTree
-
@Alias("tree") @Reference(authors="Andreas Lang and Erich Schubert", title="BETULA: Fast Clustering of Large Data with Improved BIRCH CF-Trees", booktitle="Information Systems", url="https://doi.org/10.1016/j.is.2021.101918", bibkey="DBLP:journals/is/LangS22") public class CFKPlusPlusTree extends AbstractCFKMeansInitialization
Initialize K-means by following tree paths weighted by their variance contribution. This is the strategy denoted "tree" in the reference.References:
Andreas Lang and Erich Schubert
BETULA: Fast Clustering of Large Data with Improved BIRCH CF-Trees
Information Systems- Since:
- 0.8.0
- Author:
- Andreas Lang
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classCFKPlusPlusTree.ParParameterization class.
-
Field Summary
Fields Modifier and Type Field Description (package private) CFInitWeightdistDistance function to use for initial means(package private) booleanfirstUniformChoose the first center uniformly from the cluster features.(package private) intmaxdepthMaximum depth to choose at.-
Fields inherited from class elki.clustering.kmeans.initialization.betula.AbstractCFKMeansInitialization
rf
-
-
Constructor Summary
Constructors Constructor Description CFKPlusPlusTree(CFInitWeight dist, boolean firstUniform, int maxdepth, RandomFactory rf)Constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description double[][]chooseInitialMeans(CFTree<?> tree, java.util.List<? extends ClusterFeature> cfs, int k)Build the initial models.private AsClusterFeaturechooseNextNode(CFNode<?> current, java.util.List<? extends ClusterFeature> ccs, java.util.Random rnd)Choose a child of the current node.
-
-
-
Field Detail
-
dist
CFInitWeight dist
Distance function to use for initial means
-
firstUniform
boolean firstUniform
Choose the first center uniformly from the cluster features.
-
maxdepth
int maxdepth
Maximum depth to choose at.
-
-
Constructor Detail
-
CFKPlusPlusTree
public CFKPlusPlusTree(CFInitWeight dist, boolean firstUniform, int maxdepth, RandomFactory rf)
Constructor.- Parameters:
dist- distance functionfirstUniform- choose first center uniformly from the leavesmaxdepth- maximum depthrf- random generator
-
-
Method Detail
-
chooseInitialMeans
public double[][] chooseInitialMeans(CFTree<?> tree, java.util.List<? extends ClusterFeature> cfs, int k)
Description copied from class:AbstractCFKMeansInitializationBuild the initial models.- Specified by:
chooseInitialMeansin classAbstractCFKMeansInitialization- Parameters:
tree- CF treecfs- Cluster features of the tree (may be ignored for tree-based initializations, should be an array list for efficiency)k- Number of clusters.- Returns:
- initial cluster means
-
chooseNextNode
private AsClusterFeature chooseNextNode(CFNode<?> current, java.util.List<? extends ClusterFeature> ccs, java.util.Random rnd)
Choose a child of the current node.- Parameters:
current- Current nodeccs- Currently chosen cluster centersrnd- Random generator- Returns:
- New cluster center
-
-