泛统计理论初探——DBSCAN方法简介

数据挖掘-聚类算法之DBSCAN

DBSCAN算法简介
在之前的文章里,我们探讨了最常见的一种聚类算法,即Kmeans算法,在本文中,我们将简要介绍DBSCAN算法,同时将比较DBSCAN方法相对于Kmeans的优缺点。
DBSCAN全称是Density-Based Spatial Clustering of Applications with Noise
从英文的释义就可以明确,该算法是基于密度进行聚类的算法。该算法的核心思想是基于密度进行分类,即某个样本的周围一定有相同类别的样本。基于这个思想,我们自然会相到首先要确定邻域距离,即在多少半径范围之内的点算作一类,即该算法所谓的E-邻域。同时还需要明确在E-邻域范围之内包含多少个点才能算作密集(同一个类),即该算法所谓的minPoints参数。实际在使用该算法的时候只需要设置E-邻域和minPoints参数即可以使用,但是除了这个E-邻域和minPoints参数,下面还有几个重要的概念需要理解:
1、核心对象,核心对象指的是,如果在E-邻域之内对应的邻居点的数量大于minPoints参数,那么这个点就称之为核心对象,也称为核心点。
2、密度直达,密度直达指的是,在核心对象A点的邻域范围之内,比如有个点是B,那么称之为B点由A点密度直达。
3、密度可达,密度可达这个概念指的是一种可达的路径传递性,即给一系列的样本点A、B、C、D、E、F,如果A点到B点是密度直达的,B点到C点是密度直达的,C-D、D-E、E-F均是密度直达的,那么点F就是从点A密度可达,也就是说密度可达的概念是将密度直达的概念进行延伸,造成了一种路径传递特性。
4、密度相连,密度相连指的是对于两个点B和C之间存在一个核心对象点A,使得点B和点C都通过点A密度可达,那么就称为点B和点C密度相连。
5、边界点,边界点指的是在核心对象的E邻域范围内的点数量小于minPoints参数,但是也是在核心点邻域内的点。
6、噪音点,即不属于核心对象和边界点的那一类点。
经过上述的概念的理解,下面来对DBSCAN算法的流程进行梳理,主要有以下3个步骤:
1)初始化所有点,全部进行标记,即设置操作标识为0
2)从所有操作标识为0的点进行抽取和计算,对得到的点进行判别,如果该点是核心点,那么就找出和该核心点密度可达的对象,并形成一个簇;如果该点不是核心点,就不做处理。将抽取的点的操作标识设为1,然后进行下一次点的抽取。
3)以此进行循环,直到所有的点都被处理,得到所有的簇就是聚类的结果。
在这里插入图片描述
其实算法的目的就是找到上述的红点,和红点移动的圆圈的区域,即为簇,而在图里的右上角的黑点其实可以算作噪音点,在上图的结果里很明显的可以发现,有两个簇,即红色点移动的两个路径,最终会形成两个簇,也就是会聚类出2个类。
DBSCAN的优点其实很明显,它不需要像Kmeans一样去设置K的大小,因为K的大小不是很直观,使用者很难进行设置,而且DBSCAN的算法可以处理不同形状的聚类情况,比Kmeans方法要更通用一些(Kmeans方法只能对凸的球形样本进行聚类),在这个基础上DBSCAN还可以发现样本集合里的噪音点,可以用于异常点的检测和剔除。与此同时,我们还发现DBSCAN的稳健性比较强,该方法对异常点不敏感(Kmeans方法由于计算距离,会受到异常点的影响),该方法同时对初始值点不敏感(Kmeans方法会受到初始点的设置的影响)。
DBSCAN方法其实也有缺点,如果数据分布的比较稀疏的时候,使用DBSCAN效果一般,同时它的超参数有2个,即E邻域的大小和minPoints的数量,调整参数的步骤相对于Kmeans要复杂一些,因为是2个超参数的组合。
总的来说,初学者首先要对数据的分布有个大致的理解,要区分使用Kmeans和DBSCAN的场合,一般来说数据比较稀疏或是凸的球形分布,那么使用Kmeans方法,如果数据的分布不是凸的球形或是比较稠密,那么使用DBSCAN方法。并且在调参的步骤要尽量细心观察结果进行比较,这样才能得到最优的聚类结果。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章