DBSCAN(基于高密度聚类的)算法

DBSCAN(Density-Based Spatial Clustering of Applications with Noise)聚类算法,它是一种基于高密度连通区域的、基于密度的聚类算法,能够将具有足够高密度的区域划分为簇,并在具有噪声的数据中发现任意形状的簇。

DBSCAN算法的思想其实很简单,粗俗点说就是一圈套一圈套一圈套一圈………………然而,要搞清楚它,首先要弄清楚几个基本概念。

基本概念
1、对象o是一个核心对象。对象o的 ε -领域是与o为中心,以 ε 为半径的空间。
2、MinPts指定稠密区域的密度阀值。如果一个对象的 ε -区域至少包含MinPts个对象,则该对象是核心对象。
3、直接密度可达:如果对象p在核心对象q的 ε -领域内,则p是从q直接密度可达的。
4、密度可达:如果存在一个对象链p1,p2,……,pn,使得p1=q,pn=p,并且对于pi属于D,pi+1是从pi关于 ε 和MinPts直接密度可达的。
5、密度相连:如果存在对象q ε D,使得p1和p2都是从q关于MinPts密度可达的,则称p1和p2是关于 ε 和MinPts密度相连的。

来个图说明一下:
这里写图片描述

由上图可看出m,p,o.r 都是核心对象,因为他们的内都只是包含3个对象。

1.对象q是从m直接密度可达的。对象m从p直接密度可达的。
2.对象q是从p(间接)密度可达的,因为q从m直接密度可达,m从p直接密度可达。
3.r和s是从o密度可达的,而o是从r密度可达的,所有o,r和s都是密度相连的。

算法执行流程


这里写图片描述

如果,仔细研究这个算法,相信你会对我之前说的是一圈套一圈套一圈套一圈(实际上是密度可达的含义),会有所体会,哈哈^_^

OK,看一下伪代码吧。


这里写图片描述

这里写图片描述

到这里,Jiawei书上关于DBSCAN的部分就讲解完了,然而看过西瓜书的同学可能会发现,这里的做法与西瓜书上,会有些许不同


这里写图片描述


这里写图片描述

实际上,对比Jiawei和周志华老师的算法,你会发现差别并不大。只是在起始的时候会有一些区别,而算法推进策略是完全一样的。

OK,至此,DBSCAN算法结束了。
下面给几点需要注意的。
1、大家在看到上面的那个图的时候,容易过分具象化簇了。为什么这么说呢?因为一般的讲义都是把簇画成圆形,并且给出了核心点和半径。这样便于大家理解算法的思想。但实际上,大家要注意。DBSCAN是可以发现任意形状的簇的,因为它是基于密度的呀。因此这个簇基本上都不是圆形了,而且这个半径实际上是一个阀值。判断一个点是否在它的半径内,实际上还是通过计算距离来判断的。

2、DBSCAN算法需要选择一种距离度量,对于待聚类的数据集中,任意两个点之间的距离,反映了点之间的密度,说明了点与点是否能够聚到同一类中。由于DBSCAN算法对高维数据定义密度很困难,所以对于二维空间中的点,可以使用欧几里德距离来进行度量。
3、DBSCAN算法需要用户输入半径和阀值。前面也提到过,要求用户输入参数基本上都是不靠谱的,这里DBSCAN算法经过反复的实验,给出了一般的标准化参数,即半径=4,阀值=4。
具体,参数值是如何确定的,DBSCAN也是采用了一般的处理方法。而具体是什么,因为该处理方法是比较通用的,所以以后再说吧。

参考文章
DBSCAN聚类原理
数据挖掘(概念与技术)-第三版-Jiawei Han-P307

猜你喜欢

转载自blog.csdn.net/u014593570/article/details/77742748