一、概述
- 前篇:聚类算法之密度聚类(DBSCAN):
- 在DBSCAN算法中,有两个初始参数(邻域半径)和(邻域最小样本数)需要手动设置,并且聚类的结果对这两个参数的取值非常敏感,不同的取值将产生不同的聚类结果。
- 为了克服DBSCAN算法这一缺点,提出了OPTICS算法(Ordering Points to identify the clustering structure)对点排序以此来确定簇结构。
- OPTICS是DBSCAN的一个扩展算法。该算法可以让算法对半径不再敏感。只要确定的值,半径的轻微变化,并不会影响聚类结果。
- OPTICS并不显示的产生结果类簇,而是为聚类分析生成一个排序,这个排序代表了各样本点基于密度的聚类结构。换句话说,从这个排序中可以得到基于任何参数和的DBSCAN算法的聚类结果
二、核心距离与可达距离
- 核心距离:样本点的核心距离是使得其成为核心点的最小半径,即是样本点距离其第minPts个最近的点之的距离:
- 可达距离:对于样本点x的邻点而言,如果他们到点的距离大于核心距离,则其可达距离为该点到点的实际距离;如果小于核心距离,则其可达距离就是点的核心距离
- 如下图所示:其中,中心点为,那么点的核心距离是,点2的可达距离是,点3的可达距离也是,点4的可达距离则是的距离
三、OPTICS算法:
-
两个队列:种子队列和结果队列。
- 种子队列用来存储当前所有没用被访问过的样本点的最小可达距离
- 结果队列用来存储样本点的输出次序。
- 你可以把种子队列里面放的理解为待处理的数据,而结果队列里放的是已经处理完的数据
-
算法步骤:
- 输入:样本集,邻域半径,与
- 输出:具有可达距离信息的样本点输出排序
-
第一步:构建结果队列(训练)
- 这一步可以假设,来构建结果队列:
- 第一步:计算每个样本点的核心距离,并根据核心距离与(输入的常量不是)的关系得到核心点的队列
- 第二步:任取一个核心点作为开始节点。将其标为以访问并加入结果队列,并将其可达距离记为其核心距离。可达距离队列记为
- 第三步:计算其余各点相对起始节点的可达距离。并将未访问过点的可打距离放入种子队列中
- 第四部:循环执行下面操作,直到种子队列为空:
- 从中取出一个可达距离最小的样本点
- 将标记访问,并加入结果队列
- 计算每个没用访问过点相对q的可达距离,如果距离变小则更新和,用小的可达距离代替大的可达距离。
-
第二步:输出标签(预测)
- 按照结果队列的输出顺序,变量整个样本集。
- 如果当前样本的可达距离不大于给定半径,则该点属于当前类别
- 如果当前样本的可达距离大于给定半径,则有两种情况:
- 如果该点的核心距离大于给定半径,则该点为噪声
- 如果该点的核心距离不大于给定半径,则点属于新的类
-
将上面得到的结果队列和可达距离队列进行可视化。我们以可达距离为纵轴,样本点输出次序为横轴进行可视化:
- 簇在坐标轴中表述为山谷,并且山谷越深,簇越紧密
- 黄色代表的是噪声。