DBSCAN(Density-Based Spatial Clustering of Applications with Noise)
DBSCAN(Density-Based Spatial Clustering of Applications with Noise,具有噪声的基于密度的聚类方法)是一种很典型的密度聚类算法,和K-Means,BIRCH这些一般只适用于凸样本集的聚类相比,DBSCAN既可以适用于凸样本集,也可以适用于非凸样本集。
该算法将具有足够密度的区域划分为簇,并在具有噪声的空间数据库中发现任意形状的簇,它将簇定义为密度相连的点的最大集合。
算法的目标:
相比基于划分的聚类方法和层次聚类方法,需要更少的领域知识来确定输入参数;
发现任意形状的聚簇;
在大规模数据库上更好的效率。
1、什么是密度聚类
密度聚类算法一般假定类别可以通过样本分布的紧密程度决定。同一类别的样本,他们之间的紧密相连的,也就是说,在该类别任意样本周围不远处一定有同类别的样本存在。
通过将紧密相连的样本划为一类,这样就得到了一个聚类类别。通过将所有各组紧密相连的样本划为各个不同的类别,则我们就得到了最终的所有聚类类别结果。
2、一些基本概念
DBSCAN是基于一组邻域来描述样本集的紧密程度的,参数(ϵ, MinPts)用来描述邻域的样本分布紧密程度。其中,ϵ描述了某一样本的邻域距离阈值,MinPts描述了某一样本的距离为ϵ的邻域中样本个数的阈值。
假设我的样本集是 D = ( x 1 , x 2 , . . . , x m ) D=(x_1,x_2,...,x_m) D=(x1,x2,...,xm),则DBSCAN具体的密度描述定义如下:
ϵ-邻域:对于xj∈D,其ϵ-邻域包含样本集D中与xj的距离不大于ϵ的子样本集,即Nϵ(xj)={xi∈D|distance(xi,xj)≤ϵ}, 这个子样本集的个数记为|Nϵ(xj)|
核心对象:对于任一样本xj∈D,如果其ϵ-邻域对应的Nϵ(xj)至少包含MinPts个样本,即如果|Nϵ(xj)|≥MinPts,则xj是核心对象。
边界点:设 x ϵ D x \epsilon D xϵD,且x落在某个核心点的 ϵ \epsilon ϵ 邻域内。一个边界点可能落在多个核心点的 ϵ \epsilon ϵ 邻域内。
密度直达:如果 x i 位 于 x j x_i位于x_j xi位于xj的ϵ-邻域中,且 x j x_j xj是核心对象,则称 x i 由 x j x_i由x_j xi由x