DBSCAN是基于密度空间的聚类算法,与KMeans算法不同,它不需要确定聚类的数量,而是基于数据推测聚类的数目,它能够针对任意形状产生聚类。
1.epsilon-neighborhood
epsoiln-neighborhood(简称e-nbhd)可理解为密度空间,表示半径为e且含有若干个点的nbhd,密度等于包含点的个数/空间大小。图中中心点是(3,2),半径epsilon是0.5
根据式子密度=点的个数/面积,可以计算得到上图中密度=31/2pi(0.5)*(0.5)=62/pi,这个数字本身意义不大,但通过计算某一小区域的密度,横向对比可以得知整个区域的密度分布,由此相近的点可聚类到同一区域内。
2.DBSCAN
DBSCAN算法需要首先确定两个参数:
(1)epsilon:在一个点周围邻近区域的半径
(2)minPts:邻近区域内至少包含点的个数
根据以上两个参数,结合epsilon-neighborhood的特征,可以把样本中的点分成三类:
核点(core point):满足NBHD(p,epsilon)>=minPts,则为核样本点
边缘点(border point):NBHD(p,epsilon)<minPts,但是该点可由一些核点获得(density-reachable或者directly-reachable)
离群点(Outlier):既不是核点也不是边缘点,则是不属于这一类的点
注:边缘点density-reachable是指存在当前类中其他点作为核点所在的类中。例如,朋友的朋友(可以是n多个)也是朋友。如下图,黄圈右下角的点即为density-reachable,directly-reachable的点即为NBHD中的点。
3.DBSCAN步骤
结合2中内容,DBSCAN的一般步骤是:(在已知epsilon和minPts的前提下)
任意选择一个点(既没有指定到一个类也没有特定为外围点),计算它的NBHD(p,epsilon)判断是否为核点。如果是,在该点周围建立一个类,否则,设定为外围点。
遍历其他点,直到建立一个类。把directly-reachable的点加入到类中,接着把density-reachable的点也加进来。如果标记为外围的点被加进来,修改状态为边缘点。