原做者:Kelvin Salton do Pradohtml
连接:https://towardsdatascience.com/how-dbscan-works-and-why-should-i-use-it-443b4a191c80git
**基于密度的带噪应用空间聚类算法(DBSCAN)**是数据挖掘和机器学习中经常使用的一种数据聚类算法。github
基于一组点(让咱们在图中所示的二维空间中思考),DBSCAN能够基于距离测量(一般是欧几里德距离)和最小点数将彼此接近的点组合在一块儿。它还将低密度区域中的点标记为异常值。web
参数:
DBSCAN算法基本上须要两个参数:算法
eps: 指定要将点视为簇的一部分,它们之间的距离应如何。这意味着,若是两点之间的距离小于或等于该值(eps),则这些点被视为相邻点。数据库
minPoints: 造成密集区域的最小点数。例如,若是将minPoints参数设置为5,则至少须要5个点才能造成稠密区域。机器学习
参数估计:
参数估计是每个数据挖掘任务都要解决的问题。要选择好的参数,咱们须要了解它们是如何使用的,而且至少对将要使用的数据集有一个基本的先前知识。ide
eps: 若是选择的eps值过小,则大部分数据将不会群集。它将被视为异常值,由于不知足建立密集区域的点数。另外一方面,若是选择的值过高,则集群将合并,而且大多数对象将位于同一集群中。eps应该根据数据集的距离来选择(咱们能够使用k-距离图来找到它),但通常来讲,较小的eps值是可取的。学习
minPoints: 通常来讲,最小minPoints能够从数据集中的许多维度(D)导出,做为minPoints≥D+1。较大的值一般更适合有噪声的数据集,并将造成更重要的簇。minPoints的最小值必须是3,可是数据集越大,应该选择的minPoints值就越大。ui
你能够在这里找到更多关于参数估计的信息。
为何要使用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:我是黑胡桃实验室社区的一名成员,最近常常在看一些老外作的有趣的人工智能项目,若是有兴趣或疑问能够在评论区留言或私信与我交流鸭~