一、定义
DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一个比较有代表性的基于密度的聚类算法。与划分和层次聚类方法不同,它将簇定义为密度相连的点的最大集合,能够把具有足够高密度的区域划分为簇,并可在噪声的空间数据库中发现任意形状的聚类。
二、算法过程
算法的过程要提到几个概念:
核心点:指的是在数据指定半径内周围存在>=n个数据,那么这个数据就是核心点
边缘点:指的是在数据指定半径内周围存在<n个数据,那么这个数据就是边缘点
离群点:指的是在数据指定半径内周围没有数据,那么这个数据就是离群点
即设定的半径和最小包含点数(minpoints)是这个算法的2个参数
第一步,先按照上述的概念将所有的数据标记为核心点、边缘点和离群点
第二步,删除离群点
第三步,为距离在半径之内的所有核心点之间赋予一条边
第四步,每组连通的核心点形成一个簇
第五步,将每个边界点指派到一个与之关联的核心点的簇中(哪一个核心点的半径范围之内)
大功告成!
以下是DBSCAN的动画展示,--->传送门
三、优点与缺点
1、优点
1)与K-means方法相比,DBSCAN不需要事先知道要形成的簇类的数量
2) 与K-means方法相比,DBSCAN可以发现任意形状的簇类
3)DBSCAN能够识别出噪声点
4)DBSCAN对于数据库中样本的顺序不敏感,即Pattern的输入顺序对结果的影响不大。但是,对于处于簇类之间边界样本,可能会根据哪个簇类优先被探测到而其归属有所摆动
2、缺点
1)DBScan不能很好反映高维数据
2)DBScan不能很好反映数据集以变化的密度
3)如果样本集的密度不均匀、聚类间距差相差很大时,聚类质量较差