原作者:Kelvin Salton do Prado

链接:https://towardsdatascience.com/how-dbscan-works-and-why-should-i-use-it-443b4a191c80

基于密度的带噪应用空间聚类算法(DBSCAN)是数据挖掘和机器学习中常用的一种数据聚类算法。

基于一组点(让我们在图中所示的二维空间中思考),DBSCAN可以基于距离测量(通常是欧几里德距离)和最小点数将彼此接近的点组合在一起。它还将低密度区域中的点标记为异常值。

参数:

DBSCAN算法基本上需要两个参数:

eps: 指定要将点视为簇的一部分,它们之间的距离应如何。这意味着,如果两点之间的距离小于或等于该值(eps),则这些点被视为相邻点。

minPoints: 形成密集区域的最小点数。例如,如果将minPoints参数设置为5,则至少需要5个点才能形成稠密区域。

参数估计:

参数估计是每一个数据挖掘任务都要解决的问题。要选择好的参数,我们需要了解它们是如何使用的,并且至少对将要使用的数据集有一个基本的先前知识。

eps: 如果选择的eps值太小,则大部分数据将不会群集。它将被视为异常值,因为不满足创建密集区域的点数。另一方面,如果选择的值太高,则集群将合并,并且大多数对象将位于同一集群中。eps应该根据数据集的距离来选择(我们可以使用k-距离图来找到它),但一般来说,较小的eps值是可取的。

minPoints: 一般来说,最小minPoints可以从数据集中的许多维度(D)导出,作为minPoints≥D+1。较大的值通常更适合有噪声的数据集,并将形成更重要的簇。minPoints的最小值必须是3,但是数据集越大,应该选择的minPoints值就越大。

你可以在这里找到更多关于参数估计的信息。

为什么要使用DBSCAN?

DBSCAN算法应该用于查找数据中的关联和结构,这些关联和结构很难手动找到,但对于查找模式和预测趋势是相关的和有用的。

聚类方法常用于生物学、医学、社会科学、考古学、市场营销、字符识别、管理系统等领域。

让我们考虑一下DBSCAN的实际应用。假设我们有一个电子商务,我们想通过向客户推荐相关产品来提高销售额。我们不知道我们的客户到底在寻找什么,但基于一个数据集,我们可以预测并向特定客户推荐相关产品。我们可以将DBSCAN应用于我们的数据集(基于电子商务数据库),并根据用户购买的产品查找集群。使用这个集群我们可以发现客户之间的相似之处,例如,客户A购买了1支钢笔、1本书和1把剪刀,客户B购买了1本书和1把剪刀,然后我们可以向客户B推荐1支钢笔。这只是DBSCAN使用的一个小例子,但它可以在多个领域的许多应用中使用。

怎样实现

正如我已经写过的(提示:不要相信我写的所有东西)DBSCAN是一个众所周知的算法,因此,您不必担心自己实现它。您可以使用可以在internet上找到的库/包之一。下面是一个链接列表,您可以找到DBSCAN实现:Matlab, R, R, Python, Python

我还开发了一个应用程序(用葡萄牙语)来解释DBSCAN如何以教学的方式工作。应用程序是用C++编写的,你可以在Github上找到它。

PS:我是黑胡桃实验室社区的一名成员,最近经常在看一些老外做的有趣的人工智能项目,如果有兴趣或疑问可以在评论区留言或私信与我交流鸭~