Environment for
DeveLoping
KDD-Applications
Supported by Index-Structures

de.lmu.ifi.dbs.elki.algorithm.clustering.correlation
Class ERiC<V extends NumberVector<V,?>>

java.lang.Object
  extended by de.lmu.ifi.dbs.elki.logging.AbstractLoggable
      extended by de.lmu.ifi.dbs.elki.algorithm.AbstractAlgorithm<V,Clustering<CorrelationModel<V>>>
          extended by de.lmu.ifi.dbs.elki.algorithm.clustering.correlation.ERiC<V>
Type Parameters:
V - the type of NumberVector handled by this Algorithm
All Implemented Interfaces:
Algorithm<V,Clustering<CorrelationModel<V>>>, ClusteringAlgorithm<Clustering<CorrelationModel<V>>,V>, Parameterizable

@Title(value="ERiC: Exploring Relationships among Correlation Clusters")
@Description(value="Performs the DBSCAN algorithm on the data using a special distance function taking into account correlations among attributes and builds a hierarchy that allows multiple inheritance from the correlation clustering result.")
@Reference(authors="E. Achtert, C. B\u00f6hm, H.-P. Kriegel, P. Kr\u00f6ger, and A. Zimek",
           title="On Exploring Complex Relationships of Correlation Clusters",
           booktitle="Proc. 19th International Conference on Scientific and Statistical Database Management (SSDBM 2007), Banff, Canada, 2007",
           url="http://dx.doi.org/10.1109/SSDBM.2007.21")
public class ERiC<V extends NumberVector<V,?>>
extends AbstractAlgorithm<V,Clustering<CorrelationModel<V>>>
implements ClusteringAlgorithm<Clustering<CorrelationModel<V>>,V>

Performs correlation clustering on the data partitioned according to local correlation dimensionality and builds a hierarchy of correlation clusters that allows multiple inheritance from the clustering result.

Reference: E. Achtert, C. Böhm, H.-P. Kriegel, P. Kröger, and A. Zimek: On Exploring Complex Relationships of Correlation Clusters.
In Proc. 19th International Conference on Scientific and Statistical Database Management (SSDBM 2007), Banff, Canada, 2007.

Author:
Elke Achtert

Field Summary
private  COPAC<V> copacAlgorithm
          The COPAC clustering algorithm.
 
Fields inherited from class de.lmu.ifi.dbs.elki.logging.AbstractLoggable
debug, logger
 
Constructor Summary
ERiC(Parameterization config)
          Performs the COPAC algorithm on the data and builds a hierarchy of correlation clusters that allows multiple inheritance from the clustering result.
 
Method Summary
private  void buildHierarchy(SortedMap<Integer,List<Cluster<CorrelationModel<V>>>> clusterMap)
           
private  SortedMap<Integer,List<Cluster<CorrelationModel<V>>>> extractCorrelationClusters(Clustering<Model> copacResult, Database<V> database, int dimensionality)
          Extracts the correlation clusters and noise from the copac result and returns a mapping of correlation dimension to maps of clusters within this correlation dimension.
private  boolean isParent(ERiCDistanceFunction<V,?> distanceFunction, Cluster<CorrelationModel<V>> parent, List<Cluster<CorrelationModel<V>>> children)
          Returns true, if the specified parent cluster is a parent of one child of the children clusters.
private  ListParameterization pcaParameters(int correlationDimension)
          Returns the parameters for the PCA for the specified correlation dimension.
protected  Clustering<CorrelationModel<V>> runInTime(Database<V> database)
          Performs the ERiC algorithm on the given database.
 
Methods inherited from class de.lmu.ifi.dbs.elki.algorithm.AbstractAlgorithm
isTime, isVerbose, run, setTime, setVerbose
 
Methods inherited from class de.lmu.ifi.dbs.elki.logging.AbstractLoggable
debugFine, debugFiner, debugFinest, exception, progress, verbose, warning
 
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
 
Methods inherited from interface de.lmu.ifi.dbs.elki.algorithm.Algorithm
setTime, setVerbose
 

Field Detail

copacAlgorithm

private COPAC<V extends NumberVector<V,?>> copacAlgorithm
The COPAC clustering algorithm.

Constructor Detail

ERiC

public ERiC(Parameterization config)
Performs the COPAC algorithm on the data and builds a hierarchy of correlation clusters that allows multiple inheritance from the clustering result. Constructor, adhering to Parameterizable

Parameters:
config - Parameterization
Method Detail

runInTime

protected Clustering<CorrelationModel<V>> runInTime(Database<V> database)
                                                                       throws IllegalStateException
Performs the ERiC algorithm on the given database.

Specified by:
runInTime in class AbstractAlgorithm<V extends NumberVector<V,?>,Clustering<CorrelationModel<V extends NumberVector<V,?>>>>
Parameters:
database - the database to run the algorithm on
Returns:
the Result computed by this algorithm
Throws:
IllegalStateException - if the algorithm has not been initialized properly (e.g. the setParameters(String[]) method has been failed to be called).

extractCorrelationClusters

private SortedMap<Integer,List<Cluster<CorrelationModel<V>>>> extractCorrelationClusters(Clustering<Model> copacResult,
                                                                                         Database<V> database,
                                                                                         int dimensionality)
Extracts the correlation clusters and noise from the copac result and returns a mapping of correlation dimension to maps of clusters within this correlation dimension. Each cluster is defined by the basis vectors defining the subspace in which the cluster appears.

Parameters:
copacResult -
database - the database containing the objects
dimensionality - the dimensionality of the feature space
Returns:
a mapping of correlation dimension to maps of clusters

pcaParameters

private ListParameterization pcaParameters(int correlationDimension)
Returns the parameters for the PCA for the specified correlation dimension.

Parameters:
correlationDimension - the correlation dimension
Returns:
the parameters for the PCA for the specified correlation dimension

buildHierarchy

private void buildHierarchy(SortedMap<Integer,List<Cluster<CorrelationModel<V>>>> clusterMap)
                     throws IllegalStateException
Throws:
IllegalStateException

isParent

private boolean isParent(ERiCDistanceFunction<V,?> distanceFunction,
                         Cluster<CorrelationModel<V>> parent,
                         List<Cluster<CorrelationModel<V>>> children)
Returns true, if the specified parent cluster is a parent of one child of the children clusters.

Parameters:
distanceFunction - the distance function for distance computation between the clusters
parent - the parent to be tested
children - the list of children to be tested
Returns:
true, if the specified parent cluster is a parent of one child of the children clusters, false otherwise

Release 0.3 (2010-03-31_1612)