dbscan算法中 参数的意义_DBSCAN详解(密度聚类算法开篇)

标签:

DBSCAN详解

第二十二次写博客,本人数学基础不是太好,如果有幸能得到读者指正,感激不尽,希望能借此机会向大家学习。这一篇作为密度聚类算法族的开篇,主要是介绍其中最流行的一种算法——DBSCAN,其他算法在后续会陆续更新,链接附在该篇文章的结尾处。

预备知识:

这一部分主要是谈一谈DBSCAN中一些概念的定义:ϵϵ-领域、核心对象、密度直达、密度可达以及密度相连。

ϵϵ-领域(ϵϵ-neighborhood)

与数据集DD中样本点xjxj的距离不大于ϵϵ的样本点所构成的集合Nϵ(xj)Nϵ(xj)被称为样本xjxj的ϵϵ-领域,即Nϵ(xj)={xj∈D|dist(xi,xj)≤ϵ}Nϵ(xj)={xj∈D|dist(xi,xj)≤ϵ}。

核心对象(core object)

如果样本点xjxj的ϵϵ-领域内所含的样本点数大于MinPtsMinPts,那么xjxj就被称为核心对象,即|Nϵ(xj)|≥MinPts|Nϵ(xj)|≥MinPts。

密度直达(directly density-reachable)

如果样本点xixi位于核心对象xjxj的ϵϵ-领域中,那么称样本点xixi由xjxj密度直达,即xi∈Nϵ(xj)xi∈Nϵ(xj)且|Nϵ(xj)|≥MinPts|Nϵ(xj)|≥MinPts。注:密度直达一般不满足对称性,即xixi由xjxj密度直达,但反之不一定成立。

密度可达(density-reachable)

存在样本点序列P1,P2,...,PnP1,P2,...,Pn,其中P1=xjP1=xj、Pn=xiPn=xi,且Pi+1Pi+1由PiPi密度直达,那么称样本点xixi由xjxj密度可达。注:密度可达同样不满足对称性,但是满足直递性,即若存在PiPi由PjPj密度可达,PjPj由PkPk密度可达,那么可以推出PiPi由PkPk密度可达。

密度相连(density-connected)

假设存在样本点xkxk,使得xixi和xjxj均由xkxk密度直达,那么就称xixi和xjxj密度相连。注:密度相连满足对称性。

推导过程

首先介绍被DBSCAN划分出来的三类点(核心点、边界点和噪声点)、DBSCAN中簇是如何定义的,然后给出该算法的伪代码,并对如何选择算法中影响聚类效果的“邻域参数”进行介绍,最后介绍该算法的优缺点。

核心点(core point)、边界点(border point)和噪声点(noise point)

DBSCAN是密度聚类中的代表性算法,他主要通过样本密度来考察样本间的可连接性,其中簇的形成主要基于样本间距离的定义以及“邻域参数”(ϵ,MinPts)(ϵ,MinPts)。根据以上条件,在DBSCAN中定义了这几个概念:ϵϵ-领域、核心对象、密度直达、密度可达和密度相连,并由此引出了三种点的定义,

a)核心点:核心点即核心对象;

b)边界点:位于核心对象的ϵϵ-领域上和领域中的点;

c)噪声点:既不是核心点又不是边界点的样本。

DBSCAN中的簇

DBSCAN中簇的定义为,样本集中由密度可达关系导出的最大的密度相连样本集合,这种类型的簇满足以下两条属性:

a)连接性:簇中任意两点均密度可达;

b)最大性:所有密度可达的点必定位于同一个簇中。

DBSCAN的伪代码

DBSCAN聚类的大体思路是,先将样本集中的核心点集提取出来,再随机选择一个核心点作为“种子”,通过密度可达性逐步向外发散,进而找到最大的密度相连区域,具体步骤如下所示

算法第1-7行:初始化核心对象集合ΩΩ,遍历整个数据集DD,找出核心对象并加入到该集合中;

算法第8-9行:初始化簇数目kk,并将未访问样本集合ΓΓ初始化为原始数据集DD;

算法第10行:只要核心对象集合ΩΩ中还有核心点存在,就要继续进行迭代;

算法第11行:将本次迭代中未访问的样本集合ΓΓ拷贝到ΓoldΓold中;

算法第12行:从ΩΩ随机提取出一个核心点作为本次迭代的种子,并将其加入到队列QQ中;

算法第13行:将取到的核心点从未访问样本集合ΓΓ中剔除;

算法第14-21行:只要队列QQ不为空集,那么每次从其中提取出首个元素,如果该元素为核心对象,那么就将同时存在在该核心对象ϵϵ-领域中的所有点和未访问样本集合ΓΓ中的样本点记录到队列QQ中,并且从ΓΓ中剔除这些点;

算法第22-23行:找到簇中所有的样本点后,簇数目增一,然后将那些出现在未访问的样本集合原始拷贝ΓoldΓold中,且未出现在当前未访问样本集合ΓΓ的点集合作为本次迭代生成的簇CkCk,最后从核心对象集合ΩΩ中剔除CkCk中出现的核心点;

算法第24行:当不满足第10行的迭代条件时,退出循环。

如何选择DBSCAN的参数

从上述讨论可知,“邻域参数”(ϵ,MinPts)(ϵ,MinPts)是影响该算法聚类质量的两个重要的因素。根据该算法的伪代码,那些没有被分配到任何簇中的样本点被作为噪声来处理,当ϵϵ设置的比较大而MinPtsMinPts设置的较小时,某些噪声点甚至会被选为核心点,而当ϵϵ设置的比较小而MinPtsMinPts设置的较大时,该算法甚至不会生成有效簇。举例来说,下图中存在4个被噪声点包围的簇,点的密度越大,图像越深。

如果ϵϵ设置的足够高,那么DBSCAN就会发现簇C和D,但是这时图中左侧的簇A、B及其周围的噪声点将被作为一个簇来处理,如果ϵϵ设置的足够低,那么DBSCAN就会发现簇A和B,但是会将图中右侧的所有样本点做为早噪声来处理,因此如何选择邻域参数非常重要。一种基本的方法是基于kk-距离的思想,选取某个kk值,并计算数据集中所有样本点距离其第kk(一般取4)个最近邻的距离,然后将这些距离进行排序,会得到类似于下图中的特性曲线

可以明显的看出图中某点处的kk-距离急剧上升,那么这个点所对应的kk-距离可以作为ϵϵ的值,此时的kk就是MinPtsMinPts。

DBSCAN的优缺点

DBSCAN的时间复杂度是O(m2)O(m2),其中mm是数据集的大小,因此对于大数据集来说,这种算法是非常耗时的,即使是使用类似kd树的处理方式,其时间复杂度也会达到O(mlogm)O(mlogm),但是由于DBSCAN只需要存储数据集中每个样本点的类型(核心点、边界点或噪声点),因此其空间复杂度是O(m)O(m),即便是对于高维数据也是O(m)O(m)。

DBSCAN与K-Means不同的是,他可以识别出任意类型的簇,不单单局限于椭圆类型,但是当样本集的密度变化较大时,邻域参数的选择非常困难,以至于无法找到一种合适的聚类模型,在处理高维数据时,距离度量的选择和密度的定义也越发困难。

以下是各原型聚类算法的链接

【1】DBSCAN《DBSCAN详解》

【2】未完待续…

标签:

来源: https://blog.csdn.net/qq_40793975/article/details/82734297

你可能感兴趣的:(dbscan算法中,参数的意义)