DBSCAN与kmeans,OPTICS区别?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DBSCAN与kmeans,OPTICS区别?相关的知识,希望对你有一定的参考价值。
参考技术A DBSCAN和Kmeans的区别:1)K均值和DBSCAN都是将每个对象指派到单个簇的划分聚类算法,但是K均值一般聚类所有对象,而DBSCAN丢弃被它识别为噪声的对象。
2)K均值使用簇的基于原型的概念,而DBSCAN使用基于密度的概念。
3)K均值很难处理非球形的簇和不同大小的簇。DBSCAN可以处理不同大小或形状的簇,并且不太受噪声和离群点的影响。当簇具有很不相同的密度时,两种算法的性能都很差。
4)K均值只能用于具有明确定义的质心(比如均值或中位数)的数据。DBSCAN要求密度定义(基于传统的欧几里得密度概念)对于数据是有意义的。
5)K均值可以用于稀疏的高维数据,如文档数据。DBSCAN通常在这类数据上的性能很差,因为对于高维数据,传统的欧几里得密度定义不能很好处理它们。
6)K均值和DBSCAN的最初版本都是针对欧几里得数据设计的,但是它们都被扩展,以便处理其他类型的数据。
7)基本K均值算法等价于一种统计聚类方法(混合模型),假定所有的簇都来自球形高斯分布,具有不同的均值,但具有相同的协方差矩阵。DBSCAN不对数据的分布做任何假定。
8)K均值DBSCAN和都寻找使用所有属性的簇,即它们都不寻找可能只涉及某个属性子集的簇。
9)K均值可以发现不是明显分离的簇,即便簇有重叠也可以发现,但是DBSCAN会合并有重叠的簇。
10)K均值算法的时间复杂度是O(m),而DBSCAN的时间复杂度是O(m^2),除非用于诸如低维欧几里得数据这样的特殊情况。
11)DBSCAN多次运行产生相同的结果,而K均值通常使用随机初始化质心,不会产生相同的结果。
12)DBSCAN自动地确定簇个数,对于K均值,簇个数需要作为参数指定。然而,DBSCAN必须指定另外两个参数:Eps(邻域半径)和MinPts(最少点数)。
13)K均值聚类可以看作优化问题,即最小化每个点到最近质心的误差平方和,并且可以看作一种统计聚类(混合模型)的特例。DBSCAN不基于任何形式化模型。
DBSCAN与OPTICS的区别:
DBSCAN算法,有两个初始参数E(邻域半径)和minPts(E邻域最小点数)需要用户手动设置输入,并且聚类的类簇结果对这两个参数的取值非常敏感,不同的取值将产生不同的聚类结果,其实这也是大多数其他需要初始化参数聚类算法的弊端。
为了克服DBSCAN算法这一缺点,提出了OPTICS算法(Ordering Points to identify the clustering structure)。OPTICS并 不显示的产生结果类簇,而是为聚类分析生成一个增广的簇排序(比如,以可达距离为纵轴,样本点输出次序为横轴的坐标图),这个排序代表了各样本点基于密度 的聚类结构。它包含的信息等价于从一个广泛的参数设置所获得的基于密度的聚类,换句话说,从这个排序中可以得到基于任何参数E和minPts的DBSCAN算法的聚类结果。
第二节1:OPTICS算法思想和算法流程
文章目录
OPTICS算法是从DBSCAN算法演化而来的基于层次密度的聚类算法,它可以解决DBSCAN算法中的参数敏感问题和不能很好处理数据中带有非均匀密度簇的问题,且OPTICS对参数不是十分敏感
一:OPTICS算法相关定义
(1)相关定义
由于OPTICS算法基于DBSCAN算法,所以以下定义是共用的,这里不再给出具体描述(详见:【数据聚类】第四章第一节1:基于密度算法概述、DBSCAN算法相关概念、定义和算法流程)
- Eps邻域
- 核心对象
- 直接密度可达
- 密度可达
- 密度相连
在OPTICS算法中需要额外引入以下两个定义
- 核心距离(core-distance):对于 ∀ x p ∈ D \\forall x_p \\in D ∀xp∈D,若 x p x_p xp为核心对象,那么核心距离可以定义为
c o r e _ d i s t a n c e ( x p ) = 未 定 义 ( 如 果 x p 不 是 核 心 对 象 ) 使 得 x p 为 核 心 对 象 的 最 小 半 径 ( 其 他 ) core\\_distance(x_p)=\\begincases \\mathop未定义(如果x_p不是核心对象)\\limits_\\\\ \\mathop使得x_p为核心对象的最小半径(其他)\\limits_\\\\ \\endcases core_distance(xp)=⎩⎨⎧未定义(如果xp不是核心对象)使得xp为核心对象的最小半径(其他)
- 可达距离(reachability-distance):对于 ∀ x p , x q ∈ D \\forall x_p ,x_q\\in D ∀xp,xq∈D, x q x_q xq对 x p x_p xp的可达距离可定义为
r e a c h a b i l i t y _ d i s t a n c e ( x q , x p ) = 未 定 义 ( 如 果 x p 不 是 核 心 对 象 ) m a x ( c o r e _ d i s t a n c e ( x p ) , d i s t a n c e ( x p , x q ) ) ) ( 其 他 ) reachability\\_distance(x_q,x_p)=\\begincases \\mathop未定义(如果x_p不是核心对象)\\limits_\\\\ \\mathopmax(core\\_distance(x_p),distance(x_p,x_q)))(其他)\\limits_\\\\ \\endcases reachability_distance(xq,xp)=⎩⎪⎨⎪⎧未定义(如果xp不是核心对象)max(core_distance(xp),distance(xp,xq)))(其他)
如下图,MinPts
设置为5
- x p x_p xp是一个核心对象
- x p x_p xp的核心距离为core_distance( x p x_p xp)
- 点 x q 1 x_q1 xq1到点 x p x_p xp的可达距离是core_distance( x p x_p xp)
- 点 x q 2 x_q2 xq2到点 x p x_p xp的可达距离是 r 2 r_2 r2
(2)簇结构可视化
基于上述定义,OPTICS算法在执行过程中可以生成一个以可达距离为纵轴,以数据点输出次序为横轴的坐标图,从中可以清晰观察到各个数据点基于密度的聚簇结构
如下图所示,可以通过寻找每个陡峭下降区域和陡峭上升区域所构成的凹陷来发现各个簇的对应结果
- 例如左图数据集中
×
形簇对应右图第一个陡峭下降区域和陡峭上升区域所构成的凹陷处
二:算法流程
OTTICS算法和DBSCAN算法一样,仍然需要用户输入Eps和MinPts,但是它们仅仅起到辅助作用,其变化并不会对最终结果造成大的影响。算法流程如下
如下,OPTICS算法首先会进行初始化,然后进入主循环,在循环过程中
- 对于任意一个未标记的数据点
x
p
x_p
xp,OPTICS将其标记为已访问,然后将它输出到序列
order
中,清空当前的种子序列seeds
,确定 x p x_p xp的 ξ \\xi ξ邻域 - 如果 x p x_p xp是一个核心对象,这时OPTICS会计算 x p x_p xp的核心距离,并利用Update函数对种子序列及可达距离进行更新
- 接着OPTICS会依次从种子序列中拿出一个未访问的数据点 x q x_q xq,将其标记为已访问,把它放到输出序列中,确定其 ξ \\xi ξ邻域,如果 x q x_q xq为核心对象,OPTICS就会再次利用Update函数对种子序列和可达距离进行更新
- 这个过程会不断循环直到所有数据点都被访问完为止
Update函数是OPTICS中用来更新种子序列和各个数据点可达距离的函数,对于任意一个未访问数据点 x j ∈ N ξ ( x i ) x_j \\in N_\\xi(x_i) xj∈Nξ(xi),首先计算 x j x_j xj到 x i x_i xi的可达距离
- 如果 x j x_j xj的可达距离没有定义:那么就将 x j x_j xj到 x i x_i xi的可达距离定义为 x j x_j xj的可达距离,并按照可达距离的大小将 x j x_j xj插入到种子序列中
- 如果 x j x_j xj的可达距离已经存在且 x j x_j xj到 x i x_i xi的可达距离小于 x j x_j xKMeans聚类