1 简介
带噪空间基于密度的聚类方法(Density-Based Spatial Clustering of Applications with Noise,DBSCAN)是一种比较有代表性的基于密度的聚类算法。与划分和层次聚类方法不同,它将簇定义为密度相连的点的最大集合,能够把具有足够高密度的区域划分为簇,并可在带噪声的数据集空间中发现任意形状的类别簇。和K-Means,BIRCH这些一般只适用于凸样本集的聚类相比,DBSCAN既可以适用于凸样本集,也可以适用于非凸样本集。
2 算法
DBSCAN是一种基于密度的聚类算法,这类密度聚类算法一般假定类别可以通过样本分布的紧密程度决定。同一类别的样本,他们之间应该是紧密相连的,算法将这样的关系成为密度相连的。算法通过将密度相连的样本划为一类,这样就得到了一个聚类类别。再将所有样本划为多个密度相连的不同类别,就得到了最终的聚类结果。
2.1 定义
定义1:(点的Eps-邻域)点的Eps-邻域 表示样本集合中于点的距离小于的所有样本点的集合,用表示,定义为
定义2:(核心点)样本点的Eps-邻域 的样本点个数用表示,若其样本点数,则称样本点为核心点。其余的样本点成为边界点。如下图所示,点为核心点,点为边界点。
定义3:(直接密度可达)若样本点与点满足如下条件:
- (核心点条件)
则称点可由点直接密度可达,反之不一定成立。如下图所示,因为点不是核心点,点是核心点,而点又在点的Eps-邻域 内,因此点可由点直接密度可达,点不能由点直接密度可达。
定义4:(密度可达)若有一串点、、…、,其中,,而可由直接密度可达(),则称点可由点密度可达。
密度可达性是密度直接可达性的扩展,这是一种传递的关系,但不是对称可逆的,只有核心点对之间的密度可达性是对称的。如下图所示,点可由点密度可达,而点不能由点密度可达。
定义5(密度相连)若有点,使得点和点都由密度可达,那么称点和点是密度相连的。
密度相连性是一种对称可逆的关系。如下图所示,点和点是密度相连的。
定义6:(簇)设样本集为,那么参数为和的簇C是的非空子集,它满足以下条件:
- ,如果,而且点由点密度可达,那么点也属于簇C(极大性);
- :和点是密度相连的(连接性)。
定义7:(噪声点)设是样本集的所有的簇,那么噪声点就是数据集中,不属于以上所有簇的样本点。即
引理1:设点是样本集中的样本点,而且,即点是核心点,那么集合是一个簇。
簇中的每一个点有种的任意一个核心点密度可达的,所以簇刚好包含了所有由它的核心点密度可达的点。
引理2:设是一个簇,是簇中的任意一点且,那么等价于集合,其中
2.2 算法实现步骤
输入:样本集,邻域参数(,)
输出:簇的划分
1) 初始化核心点集 ,初始化聚类簇的序号 ,初始化未访问的样本点集 ,簇的划分
2) 对于,按照下列步骤找出所有的核心点:
- 通过距离度量的方式,找到样本点的Eps-邻域
- 如果Eps-邻域 的点数,则将加入到核心点集中:
3) 如果核心点集 ,则算法结束,否则转入步骤4)
4)在核心点集中,随机选择一个核心点,初始化当前簇的核心点队列,更新类别序号,初始化当前簇样本集合,更新未访问样本集合
5)如果当前簇的核心点队列,则当前聚类簇生成完毕,更新簇的划分,更新核心点集,转入步骤3)
6)在当前簇的核心点队列中随机取出一个核心点,通过邻域距离阈值划出所有Eps-邻域 ,令,更新当前簇的样本集合,更新未访问样本集合,更新核心点队列,转入步骤5)
最终程序执行完成后将输出簇的划分结果。
3 伪代码
根据以上算法,写出如下伪代码的形式:
其中ExpandCluster函数的伪代码形式如下:
4 实验结果
利用 SEQUOIA 2000 的部分测试样本,测试DBSCAN算法以及CLARANS算法的聚类效果,并做对比。
以下是CLARANS算法的聚类结果:
以下是DBSCAN的聚类结果:
由实验结果可以看出,DBSCAN对任意形状的样本集都具有较好的更符合人类直观的聚类效果,并在聚类的同时可以找出噪声点并排除噪声点。
下表展示了DBSCAN算法与CLARANS算法的聚类效率的对比(单位 秒):
由表可以看出,DBSCAN的聚类效率更高,比CLARANS能快出1到2个数量级。
5 优缺点
DBSCAN具有以下优点:
- 可以对任意形状的稠密数据集进行聚类;
- 可以在聚类的同时发现异常点,对数据集中的异常点不敏感;
- 相对于K-Means等聚类方法,DBSCAN对结果没有偏倚,其初始值的设置几乎不会影响聚类结果
DBSCAN也有它的缺点:
- 如果样本集的密度不均匀、聚类间距差相差很大时,聚类质量较差,这时用DBSCAN聚类一般不适合;
- 如果样本集较大时,聚类收敛时间较长,此时可以对搜索最近邻时建立的KD树或者球树进行规模限制来改进;
- 调参相对于传统的K-Means之类的聚类算法较为复杂,主要需要对距离阈值和邻域样本数阈值联合调参,不同的参数组合对最后的聚类效果有较大影响。
6 小结
和传统的K-Means算法相比,DBSCAN最大的不同就是不需要输入类别数,当然它最大的优势是可以发现任意形状的聚类簇,也就是说它可以用于非凸数据集的聚类,而不只是像K-Means等算法仅仅局限于凸样本集的聚类。同时它在聚类的同时还可以找出异常点,这点和BIRCH算法类似。当数据集不是稠密的类型,就不适合采用DBSCAN算法。
7 参考文献
[1] Ester, Martin & Kriegel, Hans-Peter & Sander, Joerg & Xu, Xiaowei. (1996). A Density-Based Algorithm for Discovering Clusters in Large Spatial Databases with Noise. KDD. 96. 226-231.
[2] DBSCAN密度聚类算法
[3] 聚类分析常用算法原理:KMeans,DBSCAN, 层次聚类
原创性声明:本文属于作者原创性文章,小弟码字辛苦,转载还请注明出处。谢谢~
如果有哪些地方表述的不够得体和清晰,有存在的任何问题,欢迎评论和指正,谢谢各路大佬。
有需要相关技术支持的可咨询QQ:297461921