@Title(value="OPTICS Xi Cluster Extraction") @Reference(authors="Mihael Ankerst, Markus M. Breunig, Hans-Peter Kriegel, J\u00f6rg Sander",title="OPTICS: Ordering Points to Identify the Clustering Structure",booktitle="Proc. ACM SIGMOD Int. Conf. on Management of Data (SIGMOD \'99)",url="https://doi.org/10.1145/304181.304187",bibkey="DBLP:conf/sigmod/AnkerstBKS99") @Reference(authors="Erich Schubert, Michael Gertz",title="Improving the Cluster Structure Extracted from OPTICS Plots",booktitle="Proc. Lernen, Wissen, Daten, Analysen (LWDA 2018)",url="http://ceur-ws.org/Vol-2191/paper37.pdf",bibkey="DBLP:conf/lwa/SchubertG18") @Alias(value="de.lmu.ifi.dbs.elki.algorithm.clustering.OPTICSXi") @Priority(value=200) public class OPTICSXi extends AbstractAlgorithm<Clustering<OPTICSModel>> implements ClusteringAlgorithm<Clustering<OPTICSModel>>
Note: this implementation includes an additional filter step that prunes elements from a steep up area that don't have the predecessor in the cluster. This removes a popular type of artifacts.
Reference:
Mihael Ankerst, Markus M. Breunig, Hans-Peter Kriegel, Jörg Sander
OPTICS: Ordering Points to Identify the Clustering Structure
Proc. ACM SIGMOD Int. Conf. on Management of Data (SIGMOD '99)
Filtering technique:
Erich Schubert, Michael Gertz
Improving the Cluster Structure Extracted from OPTICS Plots
Proc. Lernen, Wissen, Daten, Analysen (LWDA 2018)
Modifier and Type | Class and Description |
---|---|
static class |
OPTICSXi.Parameterizer
Parameterization class.
|
static class |
OPTICSXi.SteepArea
Data structure to represent a steep-down-area for the xi method.
|
static class |
OPTICSXi.SteepAreaResult
Result containing the chi-steep areas.
|
static class |
OPTICSXi.SteepDownArea
Data structure to represent a steep-down-area for the xi method.
|
private static class |
OPTICSXi.SteepScanPosition
Position when scanning for steep areas
|
static class |
OPTICSXi.SteepUpArea
Data structure to represent a steep-down-area for the xi method.
|
Modifier and Type | Field and Description |
---|---|
(package private) boolean |
keepsteep
Keep the steep areas, for visualization.
|
private static Logging |
LOG
The logger for this class.
|
(package private) boolean |
nocorrect
Disable the predecessor correction.
|
(package private) OPTICSTypeAlgorithm |
optics
The actual algorithm we use.
|
(package private) double |
xi
Xi parameter
|
ALGORITHM_ID
Constructor and Description |
---|
OPTICSXi(OPTICSTypeAlgorithm optics,
double xi)
Constructor.
|
OPTICSXi(OPTICSTypeAlgorithm optics,
double xi,
boolean nocorrect,
boolean keepsteep)
Constructor.
|
Modifier and Type | Method and Description |
---|---|
private Clustering<OPTICSModel> |
extractClusters(ClusterOrder clusterOrderResult,
Relation<?> relation,
double ixi,
int minpts)
Extract clusters from a cluster order result.
|
TypeInformation[] |
getInputTypeRestriction()
Get the input type restriction used for negotiating the data query.
|
protected Logging |
getLogger()
Get the (STATIC) logger for this class.
|
Clustering<OPTICSModel> |
run(Database database,
Relation<?> relation) |
private static void |
updateFilterSDASet(double mib,
java.util.List<OPTICSXi.SteepDownArea> sdaset,
double ixi)
Update the mib values of SteepDownAreas, and remove obsolete areas.
|
run
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
run
private static final Logging LOG
OPTICSTypeAlgorithm optics
double xi
boolean nocorrect
boolean keepsteep
public OPTICSXi(OPTICSTypeAlgorithm optics, double xi, boolean nocorrect, boolean keepsteep)
optics
- OPTICS algorithm to usexi
- Xi valuenocorrect
- Disable the predecessor correctionkeepsteep
- Keep the steep areas for visualizationpublic OPTICSXi(OPTICSTypeAlgorithm optics, double xi)
optics
- OPTICS algorithm to usexi
- Xi valuepublic Clustering<OPTICSModel> run(Database database, Relation<?> relation)
private Clustering<OPTICSModel> extractClusters(ClusterOrder clusterOrderResult, Relation<?> relation, double ixi, int minpts)
clusterOrderResult
- cluster order resultrelation
- Relationixi
- Parameter 1 - Ximinpts
- Parameter minPtsprivate static void updateFilterSDASet(double mib, java.util.List<OPTICSXi.SteepDownArea> sdaset, double ixi)
mib
- Maximum in-between valuesdaset
- Set of steep down areas.public TypeInformation[] getInputTypeRestriction()
AbstractAlgorithm
getInputTypeRestriction
in interface Algorithm
getInputTypeRestriction
in class AbstractAlgorithm<Clustering<OPTICSModel>>
protected Logging getLogger()
AbstractAlgorithm
getLogger
in class AbstractAlgorithm<Clustering<OPTICSModel>>
Copyright © 2019 ELKI Development Team. License information.