来自 DBSCAN 的集群如何有时是非凸的?

数据挖掘 机器学习 聚类 数据库扫描
2021-09-22 04:29:47

我已经在我的 ML 技术包中使用聚类已有很长一段时间了,但我从未找到这个问题的令人满意的答案。

在 DBSCAN 中,我们定义了形成集群的最大半径。该算法将扫描空间并将彼此可以到达的点组合在一起。然而,我们有时会得到一个非凸簇。

我的困惑是关于描述凸对象的“半径”的概念如何成为导致非凸对象的算法的输入?

2个回答

DBSCAN 中的一个簇由多个核心点组成。

半径是单个核心点覆盖的区域,但与相邻核心点一起,形状会复杂得多。特别是,它们可能比 epsilon 大得多,因此您应该选择一个较小的值,并依靠这种“覆盖”功能。

维基百科有一个非凸集群的例子

我认为它是非凸的,因为您在应用 DBSCAN 时获得的特定集群分配取决于您遍历数据的顺序。

让我们尝试用一个例子来说明它。考虑这个数据集:

在此处输入图像描述

你想用半径运行 DBSCAN r=3min_pts=4,所以你得到这个:

在此处输入图像描述

中心点不是核心点,因为它只有 3 个点,而不是 4 个,而我们只有两个核心点。并且根据您遍历数据点的方式,您可能会得到不同的集群分配:

在此处输入图像描述

上图显示了我们通过从左到右遍历得到的结果,下图显示了通过从右到左遍历得到的结果。

显然,这两个结果都对应于成本函数的相同值,因此成本函数有几个最小值并且它不是凸的。