Package elki.clustering.correlation
Class ERiC
- java.lang.Object
-
- elki.clustering.correlation.ERiC
-
- All Implemented Interfaces:
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
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
ERiC.Par
Parameterization class.static class
ERiC.Settings
Class to wrap the ERiC settings.-
Nested classes/interfaces inherited from interface elki.Algorithm
Algorithm.Utils
-
-
Field Summary
Fields Modifier and Type Field Description private static Logging
LOG
The logger for this class.private ERiC.Settings
settings
ERiC Settings.
-
Constructor Summary
Constructors Constructor Description ERiC(ERiC.Settings settings)
Constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private void
buildHierarchy(Clustering<CorrelationModel> clustering, java.util.List<java.util.List<Cluster<CorrelationModel>>> clusterMap, ERiCNeighborPredicate.Instance npred)
private java.util.List<java.util.List<Cluster<CorrelationModel>>>
extractCorrelationClusters(Clustering<Model> dbscanResult, Relation<? extends 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.TypeInformation[]
getInputTypeRestriction()
Get the input type restriction used for negotiating the data query.private boolean
isParent(ERiCNeighborPredicate.Instance npred, Cluster<CorrelationModel> parent, It<Cluster<CorrelationModel>> iter)
Returns true, if the specified parent cluster is a parent of one child of the children clusters.Clustering<CorrelationModel>
run(Database database, Relation<? extends NumberVector> relation)
Performs the ERiC algorithm on the given database.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface elki.clustering.ClusteringAlgorithm
autorun
-
-
-
-
Field Detail
-
LOG
private static final Logging LOG
The logger for this class.
-
settings
private ERiC.Settings settings
ERiC Settings.
-
-
Constructor Detail
-
ERiC
public ERiC(ERiC.Settings settings)
Constructor.- Parameters:
settings
- ERiC clustering settings
-
-
Method Detail
-
getInputTypeRestriction
public TypeInformation[] getInputTypeRestriction()
Description copied from interface:Algorithm
Get the input type restriction used for negotiating the data query.- Specified by:
getInputTypeRestriction
in interfaceAlgorithm
- Returns:
- Type restriction
-
run
public Clustering<CorrelationModel> run(Database database, Relation<? extends 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, Relation<? extends 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 userelation
- the database containing the objectsdimensionality
- the dimensionality of the feature spacenpred
- ERiC predicate- Returns:
- a list of clusters for each dimensionality
-
buildHierarchy
private void buildHierarchy(Clustering<CorrelationModel> clustering, java.util.List<java.util.List<Cluster<CorrelationModel>>> clusterMap, ERiCNeighborPredicate.Instance npred)
-
isParent
private boolean isParent(ERiCNeighborPredicate.Instance npred, Cluster<CorrelationModel> parent, It<Cluster<CorrelationModel>> iter)
Returns true, if the specified parent cluster is a parent of one child of the children clusters.- Parameters:
npred
- Neighborhood predicateparent
- the parent to be testediter
- 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
-
-