@Reference(authors="J. Schneider, M. Vlachos", title="Fast parameterless density-based clustering via random projections", booktitle="Proc. 22nd ACM Int. Conf. on Information & Knowledge Management (CIKM 2013)", url="https://doi.org/10.1145/2505515.2505590", bibkey="DBLP:conf/cikm/SchneiderV13") public class RandomProjectedNeighborsAndDensities<V extends NumberVector> extends java.lang.Object
This index is specialized for the algorithm
FastOPTICS
Reference:
J. Schneider, M. Vlachos
Fast parameterless density-based clustering via random projections
Proc. 22nd ACM Int. Conf. on Information and Knowledge Management (CIKM 2013)
This is based on the original code provided by Johannes Schneider, with ELKIfications and optimizations by Erich Schubert.
TODO: implement one of the Index APIs?
Modifier and Type | Class and Description |
---|---|
static class |
RandomProjectedNeighborsAndDensities.Parameterizer
Parameterization class.
|
Modifier and Type | Field and Description |
---|---|
(package private) long |
distanceComputations
Count the number of distance computations.
|
private static Logging |
LOG
Class logger.
|
private static int |
logOProjectionConst
Default constant used to compute number of projections as well as number of
splits of point set, ie. constant *log N*d
|
(package private) int |
minSplitSize
minimum size for which a point set is further partitioned (roughly
corresponds to minPts in OPTICS)
|
(package private) Relation<V> |
points
entire point set
|
private static java.lang.String |
PREFIX
Statistics logging prefix.
|
(package private) DoubleDataStore[] |
projectedPoints
all projected points
|
(package private) RandomFactory |
rnd
Random factory.
|
private static float |
sizeTolerance
Sets used for neighborhood computation should be about minSplitSize Sets
are still used if they deviate by less (1+/- sizeTolerance)
|
(package private) java.util.ArrayList<ArrayDBIDs> |
splitsets
sets that resulted from recursive split of entire point set
|
Constructor and Description |
---|
RandomProjectedNeighborsAndDensities(RandomFactory rnd)
Constructor.
|
Modifier and Type | Method and Description |
---|---|
DoubleDataStore |
computeAverageDistInSet()
Compute for each point a density estimate as inverse of average distance to
a point in a projected set
|
void |
computeSetsBounds(Relation<V> points,
int minSplitSize,
DBIDs ptList)
Create random projections, project points and put points into sets of size
about minSplitSize/2
|
DataStore<? extends DBIDs> |
getNeighs()
Compute list of neighbors for each point from sets resulting from
projection
|
void |
logStatistics()
Log some statistics.
|
int |
splitByDistance(ArrayModifiableDBIDs ind,
int begin,
int end,
DoubleDataStore tpro,
java.util.Random rand)
Split the data set by distances.
|
int |
splitRandomly(ArrayModifiableDBIDs ind,
int begin,
int end,
DoubleDataStore tpro,
java.util.Random rand)
Split the data set randomly.
|
void |
splitupNoSort(ArrayModifiableDBIDs ind,
int begin,
int end,
int dim,
java.util.Random rand)
Recursively splits entire point set until the set is below a threshold
|
private static final Logging LOG
private static final java.lang.String PREFIX
private static final int logOProjectionConst
private static final float sizeTolerance
int minSplitSize
Relation<V extends NumberVector> points
java.util.ArrayList<ArrayDBIDs> splitsets
DoubleDataStore[] projectedPoints
RandomFactory rnd
long distanceComputations
public RandomProjectedNeighborsAndDensities(RandomFactory rnd)
rnd
- Random factory.public void computeSetsBounds(Relation<V> points, int minSplitSize, DBIDs ptList)
points
- points to processminSplitSize
- minimum size for which a point set is further
partitioned (roughly corresponds to minPts in OPTICS)ptList
- Points that are to be projectedpublic void splitupNoSort(ArrayModifiableDBIDs ind, int begin, int end, int dim, java.util.Random rand)
ind
- points that are in the current setbegin
- Interval begin in the ind arrayend
- Interval end in the ind arraydim
- depth of projection (how many times point set has been split
already)rand
- Random generatorpublic int splitRandomly(ArrayModifiableDBIDs ind, int begin, int end, DoubleDataStore tpro, java.util.Random rand)
ind
- Object indexbegin
- Interval beginend
- Interval endtpro
- Projectionrand
- Random generatorpublic int splitByDistance(ArrayModifiableDBIDs ind, int begin, int end, DoubleDataStore tpro, java.util.Random rand)
ind
- Object indexbegin
- Interval beginend
- Interval endtpro
- Projectionrand
- Random generatorpublic DataStore<? extends DBIDs> getNeighs()
public DoubleDataStore computeAverageDistInSet()
public void logStatistics()
Copyright © 2019 ELKI Development Team. License information.