O
- Object type@Title(value="LSDBC: Locally Scaled Density Based Clustering") @Reference(authors="E. Bi\u00e7ici, D. Yuret", title="Locally Scaled Density Based Clustering", booktitle="Adaptive and Natural Computing Algorithms", url="https://doi.org/10.1007/978-3-540-71618-1_82", bibkey="DBLP:conf/icannga/BiciciY07") @Priority(value=100) public class LSDBC<O extends NumberVector> extends AbstractDistanceBasedAlgorithm<O,Clustering<Model>> implements ClusteringAlgorithm<Clustering<Model>>
This is a variant of DBSCAN which starts with the most dense point first, then expands clusters until density has dropped below a threshold.
Reference:
E. Biçici, D. Yuret
Locally Scaled Density Based Clustering
Adaptive and Natural Computing Algorithms
Modifier and Type | Class and Description |
---|---|
static class |
LSDBC.Parameterizer<O extends NumberVector>
Parameterization class
|
Modifier and Type | Field and Description |
---|---|
protected double |
alpha
Alpha parameter.
|
protected int |
k
kNN parameter.
|
private static Logging |
LOG
Class logger.
|
protected static int |
NOISE
Constants used internally.
|
protected static int |
UNPROCESSED
Constants used internally.
|
ALGORITHM_ID
DISTANCE_FUNCTION_ID
Constructor and Description |
---|
LSDBC(DistanceFunction<? super O> distanceFunction,
int k,
double alpha)
Constructor.
|
Modifier and Type | Method and Description |
---|---|
protected int |
expandCluster(int clusterid,
WritableIntegerDataStore clusterids,
KNNQuery<O> knnq,
DBIDs neighbors,
double maxkdist,
FiniteProgress progress)
Set-based expand cluster implementation.
|
private void |
fillDensities(KNNQuery<O> knnq,
DBIDs ids,
WritableDoubleDataStore dens)
Collect all densities into an array for sorting.
|
TypeInformation[] |
getInputTypeRestriction()
Get the input type restriction used for negotiating the data query.
|
protected Logging |
getLogger()
Get the (STATIC) logger for this class.
|
private boolean |
isLocalMaximum(double kdist,
DBIDs neighbors,
WritableDoubleDataStore kdists)
Test if a point is a local density maximum.
|
Clustering<Model> |
run(Database database,
Relation<O> relation)
Run the LSDBC algorithm
|
getDistanceFunction
run
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
run
private static Logging LOG
protected int k
protected double alpha
protected static int UNPROCESSED
protected static int NOISE
public LSDBC(DistanceFunction<? super O> distanceFunction, int k, double alpha)
distanceFunction
- Distance function to usek
- Neighborhood size parameteralpha
- Alpha parameterpublic Clustering<Model> run(Database database, Relation<O> relation)
database
- Database to processrelation
- Data relationprivate boolean isLocalMaximum(double kdist, DBIDs neighbors, WritableDoubleDataStore kdists)
kdist
- k-distance of currentneighbors
- Neighbor pointskdists
- kNN distancestrue
when the point is a local maximumprotected int expandCluster(int clusterid, WritableIntegerDataStore clusterids, KNNQuery<O> knnq, DBIDs neighbors, double maxkdist, FiniteProgress progress)
clusterid
- ID of the current cluster.clusterids
- Current object to cluster mapping.knnq
- kNNQueryneighbors
- Neighbors acquired by initial getNeighbors call.maxkdist
- Maximum k-distanceprogress
- Progress loggingprivate void fillDensities(KNNQuery<O> knnq, DBIDs ids, WritableDoubleDataStore dens)
knnq
- kNN queryids
- DBIDs to processdens
- Density storagepublic TypeInformation[] getInputTypeRestriction()
AbstractAlgorithm
getInputTypeRestriction
in interface Algorithm
getInputTypeRestriction
in class AbstractAlgorithm<Clustering<Model>>
protected Logging getLogger()
AbstractAlgorithm
getLogger
in class AbstractAlgorithm<Clustering<Model>>
Copyright © 2019 ELKI Development Team. License information.