此條目可参照英語維基百科相應條目来扩充。 (2018年12月)若您熟悉来源语言和主题,请协助参考外语维基百科扩充条目。请勿直接提交机械翻译,也不要翻译不可靠、低品质内容。依版权协议,译文需在编辑摘要注明来源,或于讨论页顶部标记((Translated page))标签。

OPTICS(英語:Ordering points to identify the clustering structure)是由米哈伊爾·安克斯特(Mihael Ankerst)、馬庫斯·M·布呂尼希(Markus M. Breunig)、漢斯-彼得·克里戈爾和約爾格·桑德(Jörg Sander)提出的基于密度的聚类分析算法[1]OPTICS并不依赖全局变量来确定聚类,而是将空间上最接近的点相邻排列,以得到数据集合中的对象的线性排序。[2]排序后生成的序列存储了与相邻点之间的距离,并最终生成了一个 dendrogram 。OPTICS算法的思路与DBSCAN类似,但是解决了DBSCAN的一个主要弱点,即如何在密度变化的数据中取得有效的聚类。同时 OPTICS也避免了多数聚类算法中对输入参数敏感的问题。

复杂度

类似于DBSCAN,OPTICS处理数据集中的每个点,在这个过程中进行-邻域查询。如果保证给定空间坐标时候,邻域查询可以以的复杂度完成,可以得到总时间复杂度为。OPTICS原始论文的作者表明OPTICS算法比DBSCAN算法慢常数1.6倍。由于值过大可能会使邻域查询的的时间复杂度降至线性,这个数值可能会显著变化。

实践中,选择(大于数据集中的最大距离)是可能的,但由于每此领域查询会在整个数据集中进行,时间复杂度会降至平方。即使没有可用的空间索引,也会产生额外的堆管理成本。 因此应当被仔细选择。

软件实现

ELKI数据挖掘框架英语ELKI提供了OPTICS、OPTICS-OF、DeLi-Clu、HiSC、HiCO和DiSH的Java实现。

R语言中,dbscan包提供了OPTICS的C++实现。

Python中,PyClustering库和Scikit-learn库实现了OPTICS;hdbscan库提供了HDBSCAN*实现。

参考资料

  1. ^ Ankerst, Mihael; Breunig, Markus M.; Kriegel, Hans-Peter; Sander, Jörg. OPTICS. ACM SIGMOD Record. 1999-06-01, 28 (2): 49–60. ISSN 0163-5808. doi:10.1145/304181.304187. 
  2. ^ OPTICS聚类算法. 知乎专栏. [2018-12-09]. (原始内容存档于2018-12-10) (中文).