OPTICS聚类算法详解

DBSCAN算法对于邻域半径eps和最小样本数minPoints这两个参数比较敏感,不同的参数取值会产生不同的聚类效果。为了降低参数设置对聚类结果造成的不稳定性,在DBSCAN算法的基础上,提出了OPTICS算法,全称如下

Ordering Points to identify the clustering structure

通过对样本点排序来识别聚类结构,为了搞清楚该算法,首先要理解以下两个基本概念

1. core distance,核心距离是使一个样本点成为core points的最小半径,在给定邻域半径eps和minPoints参数的前提下,核心距离可以比给定的eps更小

2. reachability distance,可达距离指的是样本与core point的距离

上述两种距离的定义可以参考下图来理解

核心距离的作用用于判断一个样本是否为core points, 如果核心距离小于等于eps, 则样本为核心样本点;如果核心距离大于eps, 则样本点不是核心样本点,图示如下

可达距离则用于对样本点进行排序,这也是OPTICS算法中Ordering Points的由来。该算法的具体过程如下

1. 定义两个队列,有序队列和结果队列,有序队列用于存储core points及其密度直达points, 并按照可达距离升序排列;结果队列用于存储样本点的输出次序;有序队列中的points为待处理样本,结果队列中的points为处理之后的样本;

2. 选取一个未处理的core point, 将其放入结果队列,同时计算邻域内样本点的可达距离,按照可达距离升序将样本点依次放入有序队列;

3. 从有序队列中提取第一个样本,如果为core point, 则计算可达距离,将可达距离最小的点放入结果队列,如果不是core point, 则跳过该点,选取新的core point, 重复步骤2

4. 不断迭代第二步和第三步,直到所有样本点都处理完毕,然后输出结果队列中的样本点及其可达距离

处理完毕之后,根据样本的输出顺序和可达距离,可以绘制如下所示的柱状图,其中不同的峰谷对应不同不同的cluster, 红色表示噪声点

在scikit-learn中,使用OPTICS聚类的代码如下

>>> from sklearn.cluster import OPTICS
>>> import numpy as np
>>> X = np.array([[1, 2], [2, 5], [3, 6],[8, 7], [8, 8], [7, 3]])
>>> clustering = OPTICS(min_samples=2).fit(X)
>>> clustering.labels_
array([0, 0, 0, 1, 1, 1])

该算法继承了DBSCAN算法的优点,同时增强了其稳定性。

·end·
(0)

相关推荐

  • 表达分析哪家强?层次聚类、k-means、mfuzz、WGCNA?

    表达分析是转录组数据分析中占比很大的一部分内容,可以说是转录组文章的半壁江山了.什么层次聚类.k-mean聚类.mfuzz聚类.WGCNA,什么热图.折线图.网络图,看起来花团锦簇.今天,我们就来点评 ...

  • spectral-cluster聚类算法详解

    spectral clustering,称之为谱聚类算法,和近邻传播AP算法一样,也是基于图论的算法,都是将样本点两两相连,构成图这一数据结构,不同的是,谱聚类是通过切图的方式来划分不同的cluste ...

  • Affinity Propagation聚类算法详解

    Affinity Propagation简称AP, 称之为近邻传播算法, 是一种基于图论的聚类算法.将所有样本点看做是一个网络中的节点,图示如下 在样本点构成的网络中,每个样本点都是潜在的聚类中心,同 ...

  • DBSCAN聚类算法详解

    DBSCAN全称如下 Density-Based Spatial Clustering of Applications with Noise 是一种基于密度的聚类算法,所谓密度,就是说样本的紧密程度对 ...

  • BIRCH聚类算法详解

    BIRCH算法全称如下 Balanced Iterative Reducing and Clustering Using Hierarchies 属于树状结构的层次聚类算法的一种,其树状结构的构建是自 ...

  • Kmeans聚类算法详解

    输入:样本集 D = { x 1 , x 2 , x 3 , . . . , x m } D=\left \{ x_{1},x_{2},x_{3},...,x_{m} \right \} D={x1​ ...

  • CTC算法详解

    和其它文章初衷一样,网上解释很多,但是讲的不是很明白,在看完几篇参考博客后特此记录 简介 先拿语音识别任务来说,如果现在有一个包含剪辑语音和对应的文本,我们不知道如何将语音片段与文本进行对应,这样对于 ...

  • 十大排序算法详解,基本思想+动画演示+C语言实现,太肝了!

    下面的99%的代码都是手动敲出来的,参考了诸多资料,已经经过测试,可以放心食用. 1.冒泡排序 基本思想 冒泡排序基本思想是依次比较两个相邻的元素,如果顺序(如从大到小.首字母从Z到A)错误就把他们交 ...

  • 道路识别算法详解

    本文详细描述了当前代码中(git 版本: 16b521b12d2e3bdc00bd996acafe4526f1d1cb9a)道路识别的算法. 如果没有特殊说明,下文中所说的"算法" ...

  • 木工、架子工、材料用量算法详解,干货满满

    建筑工程人 11篇原创内容 公众号 一模板的计算 一.根据混凝土量快速估算模板用量 1.适用情况:一般用于工程开工前期,在已知混凝土用量的情况下估算模板用量,以初步估算工程周转材料成本投入数量,为筹措 ...