DBSCAN 算法是一种基于密度的聚类算法,它能够发现任意形状的类别 (database 2),而 k k k-means 只能发现凸 (convex) 的形状 (database 1),同时 DBSCAN 还有很强的抗噪性 (database 3),在具有噪声的数据中发现任意形状的聚类。DBSCAN 只需扫描一遍数据集即可完成聚类,不需迭代执行。
DBSCAN 是一种基于密度的聚类算法,密度聚类算法一般假定类别可以通过样本分布的紧密程度决定。同一类别的样本,他们之间是紧密相连的。在该类别任意样本周围不远处一定有同类别的样本存在。通过将紧密相连的样本划为一类,得到一个聚类类别。通过将所有各组紧密相连的样本划为各个不同的类别,得到了最终的所有聚类类别结果。
DBSCAN 是基于一组邻域来描述样本集的紧密程度的,参数 (Eps, MinPts) 用来描述邻域的样本分布紧密程度。其中,Eps 描述了某一样本的邻域距离阈值,MinPts 描述了某一样本的距离为 Eps 的邻域中样本个数的阈值。
DBSCAN 既可以适用于凸样本集,也可以适用于非凸样本集。
DBSCAN 只需扫描一遍数据库。在扫描的过程中判断当前数据 q q q 是否是核心数据点,如果是的话,那么就发现了一个新的类别,并且在添加新的数据点时将它们标记为这个类别。首先将 q q q 还没有标记类别或者标记 noise 的 Eps 近邻都添加进去。如果新添加的近邻也是核心数据点的话,就再添加其没有标记类别或者标记 noise 的 Eps 近邻,直至不能再添加新的结点。如果不是的话,就将 q q q 标记为 noise 并跳到下一个数据点。扫描之后,标记为 noise 的数据点就是噪声数据。
density-reachability and density-connectivity
m m m, p p p, o o o, r r r 都是核心对象
只有核心对象才能使其他样本密度直达。注意密度可达也不满足对称性,由密度直达的不对称性得出。密度相连关系是满足对称性的。
MinPts=5,红色的点都是核心对象,因为其 Eps-邻域至少有 5 个样本。黑色的样本是非核心对象。所有核心对象密度直达的样本在以红色核心对象为中心的超球体内。如果不在超球体内,则不能密度直达。图中用绿色箭头连起来的核心对象组成了密度可达的样本序列。在这些密度可达的样本序列的 Eps-邻域内所有的样本相互都是密度相连的。
DBSCAN 需从数据库中寻找到一个指定数据的 Eps 近邻,而这需要扫描全部数据库。通过 R* trees 可以优化这种区域查找。
A Density-Based Algorithm for Discovering Clusters in Large Spatial Databases with Noise 中提出一种启发式的方法来选择最稀疏类别的参数。首先计算出所有数据点的第 k k k 个近邻与它的距离,降序排序并绘制二维图。然后选择出第一个抖动大的数据的值。
convex ['kɒnveks]:adj. 凸面的,凸圆的 n. 凸面体,凸状
DBSCAN 聚类由密度可达关系导出的最大密度相连的样本集合,形成最终聚类的一个类别或簇。
DBSCAN 的簇里面可以有一个或者多个核心对象。如果只有一个核心对象,则簇里其他的非核心对象样本都在这个核心对象的 Eps-邻域里。如果有多个核心对象,则簇里的任意一个核心对象的 Eps-邻域中一定有一个其他的核心对象,否则这两个核心对象无法密度可达。这些核心对象的 Eps-邻域里所有的样本的集合组成的一个 DBSCAN 聚类簇。
DBSCAN 使用的方法很简单,它任意选择一个没有类别的核心对象作为种子,然后找到所有这个核心对象能够密度可达的样本集合,即为一个聚类簇。接着继续选择另一个没有类别的核心对象去寻找密度可达的样本集合,这样就得到另一个聚类簇。一直运行到所有核心对象都有类别为止。
DBSCAN 算法,需要输入 2 个参数,这两个参数的计算都来自经验知识。可以理解为以某个样本点为中心,以 Eps 为半径的球形范围内都是邻域范围。
能够有效处理噪声点和发现任意形状的空间聚类。直接对整个数据库进行操作且进行聚类时使用了一个全局性的表征密度的参数,具有比较明显的弱点。
DBSCAN 不需要输入类别数 k k k,可以发现任意形状的聚类簇。在聚类的同时可以找出异常点,和 BIRCH (balanced iterative reducing and clustering using hierarchies,利用层次方法的平衡迭代规约和聚类) 算法类似。 K K K-means 一般适用于凸的样本集聚类。一般来说,如果数据集是稠密的,并且数据集不是凸的,使用 DBSCAN 会比 K K K-means 聚类效果好。
DBSCAN 主要优点:
(1) 可以对任意形状的稠密数据集进行聚类, K K K-means 聚类算法一般只适用于凸数据集。
(2) 可以在聚类的同时发现异常点,对数据集中的异常点不敏感。
(3) 聚类结果没有偏倚。 K K K-means 聚类算法初始值对聚类结果有很大影响。
DBSCAN 主要缺点:
(1) 如果样本集的密度不均匀、聚类间距差相差很大时,聚类质量较差,DBSCAN 聚类一般不适合。
(2) 如果样本集较大时,聚类收敛时间较长,此时可以对搜索最近邻时建立的 kd_tree 或者 ball_tree 进行规模限制来改进。
(3) 调参相对于传统的 K K K-means 聚类算法稍复杂,主要需要对距离阈值 Eps,邻域样本数阈值 MinPts 联合调参,不同的参数组合对最后的聚类效果有较大影响。
凸优化 / 凸最优化 / 凸最小化的文献里面会包含凸集的概念。
SCAN: A Structural Clustering Algorithm for Networks
A Density-Based Algorithm for Discovering Clusters in Large Spatial Databases with Noise