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_IDDISTANCE_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
|
getDistanceFunctionrunclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitrunprivate 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()
AbstractAlgorithmgetInputTypeRestriction in interface AlgorithmgetInputTypeRestriction in class AbstractAlgorithm<Clustering<Model>>protected Logging getLogger()
AbstractAlgorithmgetLogger in class AbstractAlgorithm<Clustering<Model>>Copyright © 2019 ELKI Development Team. License information.