3. DBSCAN

DBSCAN——一种基于密度的聚类算法

(Density Based Spatial Clustering of Applications with Noise)
可以在带有“噪音”的空间数据库中发现任意形状的聚类。

基于密度的聚类寻找被低密度区域分离的高密度区域。DBSCAN是一种简单的、有效的基于密度的聚类算法。
3. DBSCAN_第1张图片
核心点(core point):这些点在基于密度的簇内部,点的邻域由距离函数和用户指定的距离参数 Eps 决定。核心点的定义:如果该点的给定邻域内的点的个数超过给定的阈值 Minpts,其中 Minpts 也是一个用户指定的参数。 Eps是给定的半径内的点数,Minpts是基于密度的簇内部点的数量阈值。

边界点(border point):不是核心点,但它落在某个核心点的邻域内。

噪声点(noise point):噪声点既不是核心点也不是边界点。3. DBSCAN_第2张图片
DBSCAN 围绕 核心点、边界点、噪声点三个实体

  • 将所有的点标记成核心点、边界点、噪声点,
  • 删除噪声点
  • 为距离在 Eps 之内的所有核心点之间赋予一条边
  • 每组连通的核心点形成一个簇。
  • 将每个边界点指派到一个与之关联的核心点的簇中

(与下面实例结合理解)

DBSCAN的复杂度
DBSCAN 的基本时间复杂度是 O(m * 找出 Eps 邻域中的点所需要的时间),m 是点的个数。最坏情况下,时间复杂度是O(m2),用 kd 树 可以降到 O(m log m),即使对于高维数据,DBSCAN 的空间仍然是 O(m),因为对每个点,它只需要维持少量数据,即簇标号和每个点是核心点、边界点还是噪声点的标识。

选择DBSCAN的参数
如何确定参数 Eps 和 MinPts ?
基本方法是观察点到它的 k 个最邻近的距离(称为 k- 距离)的特性,对于属于某个簇的点,如果 k <= 簇的大小 ,则 k- 距离将很小,而对不在簇中的点(如噪声点), k- 距离将相对较大,因此,如果我们对于某个 k,计算所有的点的 k- 距离,以递增次序将它们排序,然后绘制排序后的值,则我们会看到 k- 距离的急剧变化,对应于合适的 Eps 值,如果我们选取该距离为 Eps 参数,而取 k 的值为 MinPts 参数, 则 k- 距离小于 Eps 的点被标记为核心点, 而其他点被标记为 噪声点或边界点。
3. DBSCAN_第3张图片
如上图所示,该数据集包含 3000 个二维点,该数据的 Eps 阈值通过对每个点到其第 4 个最近邻的距离(k-距离)排序绘图,并识别急剧变化处的值来确定,选取 Eps =10,对于曲线的拐点。使用参数(Minpts = 4 , Eps = 10)。
如果 k 的值太小,则少量临近店的噪声或离群点将可能不正确地标记为簇。如果 k 的值太大,则小簇可能会标记为噪声。

DBSCAN的优点
相对抗噪声。并且能够处理任意形状和大小的簇。这样,DBSCAN可以发现使用 K 均值不能发现的许多簇。

DBSCAN的缺点
对用户定义的参数是敏感的,参数难以确定(特别对于高维数据),设置的细微不同可能导致差别很大的聚类。
(数据倾斜分布)全局密度参数不能刻画内在的聚类结构。
当簇的密度变化太大时,DBSCAN就会有麻烦,对于高维数据,当近邻计算需要计算所有点对邻近度时,尤其是高维数据,DBSCAN的开销可能是很大的。

你可能感兴趣的:(3. DBSCAN)