一文弄懂DBSCAN聚类算法

发布于:2024-06-30 ⋅ 阅读:(19) ⋅ 点赞:(0)

1.引言

今天,我们将讨论另一种聚类算法 DBSCAN(基于密度的带噪声应用空间聚类)。为了更好地理解 DBSCAN,请先阅读之前介绍的 K-Means分层聚类这两篇文章。

顾名思义,DBSCAN 是通过点的密度来识别聚类集群。聚类通常位于高密度区域,而异常值往往位于低密度区域。使用该算法的 3个主要优势(根据该算法的先驱者的说法)是:它只需要最少的领域知识,可以发现任意形状的聚类,并且对于大型数据库来说非常高效。

闲话少说,我们直接开始吧!

2. 确定核心样本点

既然已经介绍完了相关定义,我们就开始进入有趣的部分–实际了解它是如何工作的。假设我们的原始数据是这样的:
在这里插入图片描述

首先要做的是计算与每个点接近的点的数量。我们可以通过在一个点周围画一个半径(eps)为一定的圆来确定这个点的接近程度,在这个圆内的任何其他点都可以说是接近第一个点。例如,从这个粉红色的点开始,围绕它画一个圆。

在这里插入图片描述

我们看到,这个点与其他 7 个点完全或部分重叠。因此,我们可以说,粉红点与 7 个点很接近。

圆的半径称为eps,是 DSBCAN算法中我们需要定义的第一个参数。我们需要适当地定义eps,因为如果我们选择的值太小,很大一部分数据将无法聚类。另一方面,如果我们选择的值过大,聚类就会合并,很多数据点就会在同一个聚类中。一般来说,eps值越小越好。

现在来看看这个蓝色的点。我们看到它与 3 个点很接近,因为其半径为 eps 的圆与其他 3 个点重叠。
在这里插入图片描述

同样,对于所有剩余的点,我们要计算接近的点数。这样,我们就需要确定哪些点是核心点,哪些点是非核心点。

这就是我们算法的第二个参数minPoints的作用所在。我们使用 minPoints 来确定一个点是否是核心点。假设我们将minPoints 设为 4,那么如果至少有 4 个点靠近该点,我们就可以说该点是核心点。如果某点附近的点少于 4 个,则该点被视为非核心点。

一般来说,minPoints ≥ 数据集的维数 + 1。对于有噪声的数据集来说,较大的值通常更好。minPoints 的最小值必须是3,但数据集越大,minPoints 值就必须越大。 在我们的示例中,让我们将 minPoints 设置为4。

这样,我们就可以说粉色点是一个核心点,因为至少有 4 个点靠近它,而蓝色点是一个非核心点,因为只有 3 个点靠近它。

最终,通过重复上述过程,我们可以确定以下突出要点为核心样本点,剩下的是非核心样本点。

在这里插入图片描述

3.划分群组

接着,我们随机选择一个核心样本点,并将其分配到第一个群组集群。在这里,我们随机选取一个点,并将其分配到蓝色群组。

在这里插入图片描述

接下来是靠近蓝色的核心点的其他样本(即它们与半径为 Eps 的圆重叠)

在这里插入图片描述

都将被归为蓝色集群,如下:
在这里插入图片描述

然后,将靠近不断扩大的蓝色集群的核心点添加到蓝色集群中。下图显示,有 2 个核心点和 1 个非核心点靠近蓝色星团,但我们只将 2 个核心点添加进去。
在这里插入图片描述

最终,所有靠近不断扩大的蓝色集群的核心点都会被添加到集群中,数据就会变成这样:
在这里插入图片描述

接着,我们将所有靠近蓝色集群的非核心点添加到蓝色集群中。例如,下图中这 2 个非核心点靠近蓝色集群,因此将它们添加到蓝色集群中:
在这里插入图片描述

不过,由于它们不是核心点,我们不会使用它们来进一步扩展蓝色集群。也就是说,靠近非核心点 1 的另一个非核心点不会被添加到蓝色集群中的。
在这里插入图片描述

与核心点不同,非核心点只能加入集群,而不能用于进一步扩展集群。

添加所有非核心点后,我们就完成了蓝色集群的创建,它看起来是这样的:
在这里插入图片描述

现在,由于剩余的核心点都不靠近第一个集群,我们开始组建一个新的集群。首先,我们随机选取一个核心点(不在一个群组中),将其分配到第二个黄色群组中。
在这里插入图片描述

然后,我们添加靠近黄色集群的所有核心点,并利用它们进一步扩展黄色群组。
在这里插入图片描述

然后将靠近黄色聚类的非核心点添加到黄色聚类集群中。这样,我们的数据就有了 2 个群组,看起来就像这样:
在这里插入图片描述

我们不断重复创建集群的过程,直到没有核心点为止。在我们的例子中,由于所有的核心点都被分配到了相应的群组聚类中,因此我们已经完成了创建新聚类的工作。最后,任何剩余的非核心点都被称为离群点,它们既不靠近核心点,也不属于任何聚类集群。

就这样,我们完成了DBSCAN的2个群组集群聚类,并发现了7个异常离群值。

4. DBSCAN算法优势

K-Means 和分层聚类适用于结构紧凑、分离度高的聚类,但也会受到数据中噪声和异常值的严重影响。另一方面,DBSCAN 可以捕捉形状复杂的聚类,并能很好地识别异常值。

此外DBSCAN 的另一个优点是,与 K-Means 不同,我们不需要指定簇的数量(k),算法会自动为我们找到簇。下图举例说明了 DBSCANK-Means 的不同之处,以及为什么 DBSCAN 在使用得当的情况下可以发挥强大的作用。
在这里插入图片描述

5.总结

今天就到这里了,本文重点介绍了机器学习中利用DBSCAN算法进行聚类的讲解,并给出了详细的图例说明。

您学废了吗?


网站公告

今日签到

点亮在社区的每一天
去签到