|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object de.lmu.ifi.dbs.elki.algorithm.AbstractAlgorithm<Clustering<SubspaceModel<V>>> de.lmu.ifi.dbs.elki.algorithm.clustering.subspace.CLIQUE<V>
V
- the type of NumberVector handled by this Algorithm@Title(value="CLIQUE: Automatic Subspace Clustering of High Dimensional Data for Data Mining Applications") @Description(value="Grid-based algorithm to identify dense clusters in subspaces of maximum dimensionality.") @Reference(authors="R. Agrawal, J. Gehrke, D. Gunopulos, P. Raghavan", title="Automatic Subspace Clustering of High Dimensional Data for Data Mining Applications", booktitle="Proc. SIGMOD Conference, Seattle, WA, 1998", url="http://dx.doi.org/10.1145/276304.276314") public class CLIQUE<V extends NumberVector<V,?>>
Implementation of the CLIQUE algorithm, a grid-based algorithm to identify dense clusters in subspaces of maximum dimensionality. The implementation consists of two steps:
Reference:
R. Agrawal, J. Gehrke, D. Gunopulos, P. Raghavan: Automatic Subspace
Clustering of High Dimensional Data for Data Mining Applications.
In Proc. ACM SIGMOD Int. Conf. on Management of Data, Seattle, WA, 1998.
Nested Class Summary | |
---|---|
static class |
CLIQUE.Parameterizer<V extends NumberVector<V,?>>
Parameterization class. |
Field Summary | |
---|---|
private static Logging |
logger
The logger for this class. |
private boolean |
prune
Holds the value of PRUNE_ID . |
static OptionID |
PRUNE_ID
Flag to indicate that only subspaces with large coverage (i.e. the fraction of the database that is covered by the dense units) are selected, the rest will be pruned. |
private double |
tau
Holds the value of TAU_ID . |
static OptionID |
TAU_ID
Parameter to specify the density threshold for the selectivity of a unit, where the selectivity is the fraction of total feature vectors contained in this unit, must be a double greater than 0 and less than 1. |
private int |
xsi
Holds the value of XSI_ID . |
static OptionID |
XSI_ID
Parameter to specify the number of intervals (units) in each dimension, must be an integer greater than 0. |
Constructor Summary | |
---|---|
CLIQUE(int xsi,
double tau,
boolean prune)
Constructor. |
Method Summary | |
---|---|
private double[][] |
computeDiffs(List<CLIQUESubspace<V>> denseSubspaces,
int[] mi,
int[] mp)
The specified sorted list of dense subspaces is divided into the selected set I and the pruned set P. |
private int[][] |
computeMeans(List<CLIQUESubspace<V>> denseSubspaces)
The specified sorted list of dense subspaces is divided into the selected set I and the pruned set P. |
private List<Pair<Subspace<V>,ModifiableDBIDs>> |
determineClusters(List<CLIQUESubspace<V>> denseSubspaces)
Determines the clusters in the specified dense subspaces. |
private List<CLIQUESubspace<V>> |
findDenseSubspaceCandidates(Relation<V> database,
List<CLIQUESubspace<V>> denseSubspaces)
Determines the k -dimensional dense subspace candidates from the
specified (k-1) -dimensional dense subspaces. |
private List<CLIQUESubspace<V>> |
findDenseSubspaces(Relation<V> database,
List<CLIQUESubspace<V>> denseSubspaces)
Determines the k -dimensional dense subspaces and performs a pruning
if this option is chosen. |
private List<CLIQUESubspace<V>> |
findOneDimensionalDenseSubspaceCandidates(Relation<V> database)
Determines the one-dimensional dense subspace candidates by making a pass over the database. |
private List<CLIQUESubspace<V>> |
findOneDimensionalDenseSubspaces(Relation<V> database)
Determines the one dimensional dense subspaces and performs a pruning if this option is chosen. |
TypeInformation[] |
getInputTypeRestriction()
Get the input type restriction used for negotiating the data query. |
protected Logging |
getLogger()
Get the (STATIC) logger for this class. |
private Collection<CLIQUEUnit<V>> |
initOneDimensionalUnits(Relation<V> database)
Initializes and returns the one dimensional units. |
private List<CLIQUESubspace<V>> |
pruneDenseSubspaces(List<CLIQUESubspace<V>> denseSubspaces)
Performs a MDL-based pruning of the specified dense subspaces as described in the CLIQUE algorithm. |
Clustering<SubspaceModel<V>> |
run(Relation<V> relation)
Performs the CLIQUE algorithm on the given database. |
private void |
updateMinMax(V featureVector,
double[] minima,
double[] maxima)
Updates the minima and maxima array according to the specified feature vector. |
Methods inherited from class de.lmu.ifi.dbs.elki.algorithm.AbstractAlgorithm |
---|
makeParameterDistanceFunction, run |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Methods inherited from interface de.lmu.ifi.dbs.elki.algorithm.clustering.ClusteringAlgorithm |
---|
run |
Field Detail |
---|
private static final Logging logger
public static final OptionID XSI_ID
Key: -clique.xsi
public static final OptionID TAU_ID
Key: -clique.tau
public static final OptionID PRUNE_ID
Key: -clique.prune
private int xsi
XSI_ID
.
private double tau
TAU_ID
.
private boolean prune
PRUNE_ID
.
Constructor Detail |
---|
public CLIQUE(int xsi, double tau, boolean prune)
xsi
- Xsi valuetau
- Tau valueprune
- Prune flagMethod Detail |
---|
public Clustering<SubspaceModel<V>> run(Relation<V> relation)
relation
- Data relation to process
private List<Pair<Subspace<V>,ModifiableDBIDs>> determineClusters(List<CLIQUESubspace<V>> denseSubspaces)
denseSubspaces
- the dense subspaces in reverse order by their
coverage
private List<CLIQUESubspace<V>> findOneDimensionalDenseSubspaces(Relation<V> database)
database
- the database to run the algorithm on
private List<CLIQUESubspace<V>> findDenseSubspaces(Relation<V> database, List<CLIQUESubspace<V>> denseSubspaces)
k
-dimensional dense subspaces and performs a pruning
if this option is chosen.
database
- the database to run the algorithm ondenseSubspaces
- the (k-1)
-dimensional dense subspaces
k
-dimensional dense subspaces sorted in
reverse order by their coverageprivate Collection<CLIQUEUnit<V>> initOneDimensionalUnits(Relation<V> database)
database
- the database to run the algorithm on
private void updateMinMax(V featureVector, double[] minima, double[] maxima)
featureVector
- the feature vectorminima
- the array of minimamaxima
- the array of maximaprivate List<CLIQUESubspace<V>> findOneDimensionalDenseSubspaceCandidates(Relation<V> database)
database
- the database to run the algorithm on
private List<CLIQUESubspace<V>> findDenseSubspaceCandidates(Relation<V> database, List<CLIQUESubspace<V>> denseSubspaces)
k
-dimensional dense subspace candidates from the
specified (k-1)
-dimensional dense subspaces.
database
- the database to run the algorithm ondenseSubspaces
- the (k-1)
-dimensional dense subspaces
k
-dimensional dense subspace candidates
reverse ordered by their coverageprivate List<CLIQUESubspace<V>> pruneDenseSubspaces(List<CLIQUESubspace<V>> denseSubspaces)
denseSubspaces
- the subspaces to be pruned sorted in reverse order by
their coverage
private int[][] computeMeans(List<CLIQUESubspace<V>> denseSubspaces)
denseSubspaces
- the dense subspaces in reverse order by their
coverage
private double[][] computeDiffs(List<CLIQUESubspace<V>> denseSubspaces, int[] mi, int[] mp)
denseSubspaces
- denseSubspaces the dense subspaces in reverse order
by their coveragemi
- the mean of the selected sets Imp
- the mean of the pruned sets P
public TypeInformation[] getInputTypeRestriction()
AbstractAlgorithm
getInputTypeRestriction
in interface Algorithm
getInputTypeRestriction
in class AbstractAlgorithm<Clustering<SubspaceModel<V extends NumberVector<V,?>>>>
protected Logging getLogger()
AbstractAlgorithm
getLogger
in class AbstractAlgorithm<Clustering<SubspaceModel<V extends NumberVector<V,?>>>>
|
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |