怎么理解

  1. 首先,DBSCAN算法会以任何尚未访问过的任意起始数据点为核心点,并对该核心点进行扩充。这时我们给定一个半径/距离ε(Epsilon),任何和核心点的距离小于ε的点都是它的相邻点。
  2. 如果核心点附近有足够数量的点(指定点的数量),则开始聚类,且选中的核心点会成为该聚类的第一个点。如果附近的点不够,那算法会把它标记为噪声(之后这个噪声可能会成为簇中的一部分)。在这两种情形下,选中的点都会被标记为“已访问”。
  3. 一旦聚类开始,核心点的相邻点,或者说以该点出发的所有密度相连的数据点(注意是密度相连)会被划分进同一聚类。然后我们再把这些新点作为新的核心点,向周围拓展ε,并把符合条件的点继续纳入这个聚类中。
  4. 重复步骤2和3,直到附近没有可以扩充的数据点为止,即簇的所有点的ε邻域内都已被标记为“已访问”。
  5. 一旦我们完成了这个集群,算法又会开始检索未访问过的点,并发现更多的聚类和噪声。一旦数据检索完毕,每个点都被标记为属于一个聚类或是噪声。

如下: c6fbdb36-23b6-11eb-a06a-16e11600bfd3.mp4 (1.3MB)

优缺点

优点:与其他聚类算法相比,DBSCAN有一些很大的优势。首先,它不需要输入要划分的聚类个数。其次,不像mean-shift,即使数据点非常不同,它也会将它们纳入聚类中,DBSCAN能将异常值识别为噪声,这就意味着它可以在需要时输入过滤噪声的参数。第三,它对聚类的形状没有偏倚,可以找到任意大小和形状的簇。

缺点:当聚类(也就是每个簇)的密度不同时,DBSCAN的性能会不如其他算法。这是因为当密度变化时,用于识别邻近点的距离阈值ε和核心点的设置会随着聚类发生变化。而这在高维数据中会特别明显,因为届时我们会很难估计ε。

维度高了,距离就会收到多方面特征的影响,某一类簇可能彼此之间距离很大,而设置的epsilon在某一个簇聚类可能很好使,在另一个簇聚类就全是异常值这样。

sklearn使用DBSCAN

详细介绍点击此处
简易版本:
语雀内容