【DBSCAN聚类算法原理介绍】

我们常用的聚类算法有 K-Means 算法、层次聚类、DBSCAN 算法三种聚类方法,我们对其进行对比。
K-Means 算法是基于距离的无监督聚类算法,其主要思想是:在给定 K 值和 K 个 初始类簇中心点的情况下,把每个点(亦即数据记录)分到离其最近的类簇中心点所代 表的类簇中,所有点分配完毕之后,根据一个类簇内的所有点重新计算该类簇的中心点(取平均值),然后再迭代的进行分配点和更新类簇中心点的步骤,直至类簇中心点的变化很小,或者达到指定的迭代次数。算法实现相对简单,聚类效果较好,应用很广泛。但是需要提前知道具体类的数量。
层次聚类是基于层次的聚类算法,通过计算不同类别数据点间的相似度来创建一棵有层次的嵌套聚类树。在聚类树中,不同类别的原始数据点是树的最低层,树的顶层是一个聚类的根节点。其创建聚类树有自下而上合并和自上而下分裂两种方法,并且可以可视化展示,直观清晰。
DBSCAN 聚类,是一种基于密度的聚类算法,它类似于均值漂移,DBSCAN 与其他聚类算法相比有很多优点,首先,它根本不需要固定数量的簇。它也会将异常值识别为噪声,而不像均值漂移,即使数据点非常不同,也会简单地将它们分入簇中。另外,它更抗噪音,能够很好地找到任意大小和任意形状的簇。
通过多次实验,我们测试了三种常用聚类算法的时间复杂度,其时间复杂度如下:
在这里插入图片描述
其中,n 代表聚类数据量,m 代表聚类数据的维度。
通过观察上表,我们发现层次聚类时间复杂度最大,耗时最长, K-Means 聚类与 DBSCAN 算法在解决数据量庞大的聚类问题时相对较快。
在处理数据维度相对较低,K-Means 聚类的速度优势比 DBSCAN 聚类方法更明显。但是 K-Means 算法聚类时,需要认为给定组/类数。人为定义并不总是准确的,灵活性低,K-Means 在簇不是圆形的情况下处理会失败,且结果缺乏一致性,不能很好的进行聚类的传递。
首先,需要设定聚类时的弱覆盖点之间的欧式距离与最小聚类数,即两个参数 Eps=20与 Minpts=1。#参数根据要求进行设定
选取为样本,进行密度直达判断,即任意2个弱覆盖点间的欧式距离不大于20,并去除噪点。
【DBSCAN聚类算法原理介绍】_第1张图片
通过对点的不断遍历,对点进行聚类,同时考虑聚类的传递性,若点 A 和点 B 是一类的,点 B 和点 C 是一类的,即认为点 A、B 和 C 为同类,则我们将A、B、C聚为一类。具体传递过程如下:
【DBSCAN聚类算法原理介绍】_第2张图片

具体 DBSCAN 聚类算法求解流程如下图:
【DBSCAN聚类算法原理介绍】_第3张图片
DBSCAN的聚类过程就是根据核心弱覆盖点来推导出最大密度相连的样本集合,首先随机寻找一个核心弱覆盖样本点,按照 Minpts 和 Eps 来推导其密度相连的点,然后再选择一个没有赋予类别的核心弱覆盖样本点,开始推导其密度相连的样本结合,一直迭代到所有的核心样本点都有对应的类别为止。

你可能感兴趣的:(算法,聚类,机器学习,python,人工智能)