Class ERiC

  • All Implemented Interfaces:
    elki.Algorithm, ClusteringAlgorithm<Clustering<CorrelationModel>>

    @Title("ERiC: Exploring Relationships among Correlation Clusters")
    @Description("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="Elke Achtert, Christian B\u00f6hm, Hans-Peter Kriegel, Peer Kr\u00f6ger, Arthur Zimek",
               title="On Exploring Complex Relationships of Correlation Clusters",
               booktitle="Proc. 19th Int. Conf. Scientific and Statistical Database Management (SSDBM 2007)",
               url="https://doi.org/10.1109/SSDBM.2007.21",
               bibkey="DBLP:conf/ssdbm/AchtertBKKZ07")
    public class ERiC
    extends java.lang.Object
    implements ClusteringAlgorithm<Clustering<CorrelationModel>>
    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:

    Elke Achtert, Christian Böhm, Hans-Peter Kriegel, Peer Kröger, Arthur Zimek
    On Exploring Complex Relationships of Correlation Clusters
    Proc. 19th Int. Conf. Scientific and Statistical Database Management (SSDBM 2007)

    Since:
    0.1
    Author:
    Elke Achtert
    • Field Detail

      • LOG

        private static final elki.logging.Logging LOG
        The logger for this class.
    • Constructor Detail

      • ERiC

        public ERiC​(ERiC.Settings settings)
        Constructor.
        Parameters:
        settings - ERiC clustering settings
    • Method Detail

      • getInputTypeRestriction

        public elki.data.type.TypeInformation[] getInputTypeRestriction()
        Specified by:
        getInputTypeRestriction in interface elki.Algorithm
      • run

        public Clustering<CorrelationModel> run​(elki.database.Database database,
                                                elki.database.relation.Relation<? extends elki.data.NumberVector> relation)
        Performs the ERiC algorithm on the given database.
        Parameters:
        relation - Relation to process
        Returns:
        Clustering result
      • extractCorrelationClusters

        private java.util.List<java.util.List<Cluster<CorrelationModel>>> extractCorrelationClusters​(Clustering<Model> dbscanResult,
                                                                                                     elki.database.relation.Relation<? extends elki.data.NumberVector> relation,
                                                                                                     int dimensionality,
                                                                                                     ERiCNeighborPredicate.Instance npred)
        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:
        dbscanResult - DBSCAN clustering to use
        relation - the database containing the objects
        dimensionality - the dimensionality of the feature space
        npred - ERiC predicate
        Returns:
        a list of clusters for each dimensionality
      • isParent

        private boolean isParent​(ERiCNeighborPredicate.Instance npred,
                                 Cluster<CorrelationModel> parent,
                                 elki.utilities.datastructures.iterator.It<Cluster<CorrelationModel>> iter)
        Returns true, if the specified parent cluster is a parent of one child of the children clusters.
        Parameters:
        npred - Neighborhood predicate
        parent - the parent to be tested
        iter - 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