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

java.lang.Object
  extended by de.lmu.ifi.dbs.elki.algorithm.AbstractAlgorithm<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, ClusteringAlgorithm<Clustering<CorrelationModel<V>>>, InspectionUtilFrequentlyScanned, 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<Clustering<CorrelationModel<V>>>
implements ClusteringAlgorithm<Clustering<CorrelationModel<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.


Nested Class Summary
static class ERiC.Parameterizer<V extends NumberVector<V,?>>
          Parameterization class.
 
Field Summary
private  COPAC<V,IntegerDistance> copacAlgorithm
          The COPAC clustering algorithm.
private static Logging logger
          The logger for this class.
 
Constructor Summary
ERiC(COPAC<V,IntegerDistance> copacAlgorithm)
          Constructor.
 
Method Summary
private  void buildHierarchy(SortedMap<Integer,List<Cluster<CorrelationModel<V>>>> clusterMap, DistanceQuery<V,IntegerDistance> query)
           
private  SortedMap<Integer,List<Cluster<CorrelationModel<V>>>> extractCorrelationClusters(Clustering<Model> copacResult, Relation<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.
 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 isParent(ERiCDistanceFunction 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.
 Clustering<CorrelationModel<V>> run(Relation<V> relation)
          Performs the ERiC algorithm on the given database.
 
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

logger

private static final Logging logger
The logger for this class.


copacAlgorithm

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

Constructor Detail

ERiC

public ERiC(COPAC<V,IntegerDistance> copacAlgorithm)
Constructor.

Parameters:
copacAlgorithm - COPAC to use
Method Detail

run

public Clustering<CorrelationModel<V>> run(Relation<V> relation)
                                                              throws IllegalStateException
Performs the ERiC algorithm on the given database.

Parameters:
relation - Relation to process
Returns:
Clustering result
Throws:
IllegalStateException

extractCorrelationClusters

private SortedMap<Integer,List<Cluster<CorrelationModel<V>>>> extractCorrelationClusters(Clustering<Model> copacResult,
                                                                                         Relation<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,
                            DistanceQuery<V,IntegerDistance> query)
                     throws IllegalStateException
Throws:
IllegalStateException

isParent

private boolean isParent(ERiCDistanceFunction 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

getInputTypeRestriction

public TypeInformation[] getInputTypeRestriction()
Description copied from class: AbstractAlgorithm
Get the input type restriction used for negotiating the data query.

Specified by:
getInputTypeRestriction in interface Algorithm
Specified by:
getInputTypeRestriction in class AbstractAlgorithm<Clustering<CorrelationModel<V extends NumberVector<V,?>>>>
Returns:
Type restriction

getLogger

protected Logging getLogger()
Description copied from class: AbstractAlgorithm
Get the (STATIC) logger for this class.

Specified by:
getLogger in class AbstractAlgorithm<Clustering<CorrelationModel<V extends NumberVector<V,?>>>>
Returns:
the static logger

Release 0.4.0 (2011-09-20_1324)