@Reference(authors="M. R. Anderberg", title="Hierarchical Clustering Methods", booktitle="Cluster Analysis for Applications", bibkey="books/academic/Anderberg73/Ch6") @Priority(value=195) public class MiniMaxAnderberg<O> extends AbstractDistanceBasedAlgorithm<O,PointerHierarchyRepresentationResult> implements HierarchicalClusteringAlgorithm
This optimization is attributed to M. R. Anderberg.
This particular implementation is based on AnderbergHierarchicalClustering
Reference:
M. R. Anderberg
Hierarchical Clustering Methods
Cluster Analysis for Applications
ISBN: 0120576503
| Modifier and Type | Class and Description |
|---|---|
static class |
MiniMaxAnderberg.Parameterizer<O>
Parameterization class
|
| Modifier and Type | Field and Description |
|---|---|
private static Logging |
LOG
Class logger
|
ALGORITHM_IDDISTANCE_FUNCTION_ID| Constructor and Description |
|---|
MiniMaxAnderberg(DistanceFunction<? super O> distanceFunction)
Constructor.
|
| Modifier and Type | Method and Description |
|---|---|
protected void |
findBest(int size,
double[] scratch,
double[] bestd,
int[] besti,
int j) |
protected int |
findMerge(int size,
MatrixParadigm mat,
DBIDArrayMIter prots,
PointerHierarchyRepresentationBuilder builder,
it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap<ModifiableDBIDs> clusters,
double[] bestd,
int[] besti,
DistanceQuery<O> dq)
Perform the next merge step.
|
TypeInformation[] |
getInputTypeRestriction()
Get the input type restriction used for negotiating the data query.
|
protected Logging |
getLogger()
Get the (STATIC) logger for this class.
|
private static void |
initializeNNCache(double[] scratch,
double[] bestd,
int[] besti)
Initialize the NN cache.
|
protected void |
merge(int size,
MatrixParadigm mat,
DBIDArrayMIter prots,
PointerHierarchyRepresentationBuilder builder,
it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap<ModifiableDBIDs> clusters,
DistanceQuery<O> dq,
double[] bestd,
int[] besti,
int x,
int y)
Execute the cluster merge
|
PointerHierarchyRepresentationResult |
run(Database db,
Relation<O> relation)
Run the algorithm
|
private void |
updateCache(int size,
double[] scratch,
double[] bestd,
int[] besti,
int x,
int y,
int j,
double d)
Update the cache.
|
private void |
updateMatrices(int size,
MatrixParadigm mat,
DBIDArrayMIter prots,
PointerHierarchyRepresentationBuilder builder,
it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap<ModifiableDBIDs> clusters,
DistanceQuery<O> dq,
double[] bestd,
int[] besti,
int x,
int y)
Update the entries of the matrices that contain a distance to y, the newly
merged cluster.
|
getDistanceFunctionrunclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitrunprivate static final Logging LOG
public MiniMaxAnderberg(DistanceFunction<? super O> distanceFunction)
distanceFunction - Distance function to usepublic PointerHierarchyRepresentationResult run(Database db, Relation<O> relation)
db - Databaserelation - Relationprivate static void initializeNNCache(double[] scratch,
double[] bestd,
int[] besti)
scratch - Scratch spacebestd - Best distancebesti - Best indexprotected int findMerge(int size,
MatrixParadigm mat,
DBIDArrayMIter prots,
PointerHierarchyRepresentationBuilder builder,
it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap<ModifiableDBIDs> clusters,
double[] bestd,
int[] besti,
DistanceQuery<O> dq)
size - size of the data setmat - matrix viewprots - the prototypes of merges between clustersbuilder - Result builderclusters - the current clusteringbestd - the distances to the nearest neighboring clusterbesti - the nearest neighboring clusterdq - the range queryprotected void merge(int size,
MatrixParadigm mat,
DBIDArrayMIter prots,
PointerHierarchyRepresentationBuilder builder,
it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap<ModifiableDBIDs> clusters,
DistanceQuery<O> dq,
double[] bestd,
int[] besti,
int x,
int y)
size - size of data setmat - Matrix paradigmprots - the prototypes of merges between clustersbuilder - Result builderclusters - the current clusteringdq - the range querybestd - the distances to the nearest neighboring clusterbesti - the nearest neighboring clusterx - first cluster to merge, with x > yy - second cluster to merge, with y < xprivate void updateMatrices(int size,
MatrixParadigm mat,
DBIDArrayMIter prots,
PointerHierarchyRepresentationBuilder builder,
it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap<ModifiableDBIDs> clusters,
DistanceQuery<O> dq,
double[] bestd,
int[] besti,
int x,
int y)
size - size of data setmat - matrix viewprots - the prototypes of merges between clustersbuilder - Result builderclusters - the current clusteringdq - the range querybestd - the distances to the nearest neighboring clusterbesti - the nearest neighboring clusterx - first cluster to merge, with x > yy - second cluster to merge, with y < xprivate void updateCache(int size,
double[] scratch,
double[] bestd,
int[] besti,
int x,
int y,
int j,
double d)
size - Working set sizescratch - Scratch matrixbestd - Best distancebesti - Best indexx - First clustery - Second cluster, y < xj - Updated value d(y, j)d - New distanceprotected void findBest(int size,
double[] scratch,
double[] bestd,
int[] besti,
int j)
public TypeInformation[] getInputTypeRestriction()
AbstractAlgorithmgetInputTypeRestriction in interface AlgorithmgetInputTypeRestriction in class AbstractAlgorithm<PointerHierarchyRepresentationResult>protected Logging getLogger()
AbstractAlgorithmgetLogger in class AbstractAlgorithm<PointerHierarchyRepresentationResult>Copyright © 2019 ELKI Development Team. License information.