一、什么是DBSCAN算法
DBSCAN算法指定一个半径ε和一个数量M,它将空间中的点分成3种:核心点指在半径范围ε内含有超过M个相邻点的点;边界点指非核心点,但在核心点半径ε范围内的点;其余的点称为噪声。DBSCAN遍历每个点,判断每个点是否为核心点,寻找每个核心点周围的所有点,并将周围的点和相应核心点标记为同一个类别。
在遍历整个样本集的过程中,首先根据一个点的半径ε范围内的点的数量判断其是否为核心点。若是核心点,就将半径ε范围内的点和该点标记为同一类,并对每个周围的点做相同操作,再次查看是否为核心点。持续该过程,直到每个点都被遍历过。此时,未被分类的点就是噪声。DBSCAN算法需要对半径ε和阀值M进行调参。
没有进行DBSCAN算法:
图中的epsilon指的是半径,minPoints指的是在半径为1的空间里有四个小球即可扩散
进行过DBSCAN算法:
二、DBSCAN算法的算法步骤:
(1)计算所有点的ε邻域: 对于数据集中的每一个点P,计算其ε邻域中有多少个邻居。这个邻居数量的阈值通常由一个参数MinPts定义。
(2)标记核心点: 如果一个点的ε邻域中的点的数量大于或等于MinPts,那么这个点就被标记为核心点。
(3)寻找密度相连的点: 对于每一个核心点,寻找所有与其密度相连的点。如果点P在点O的ε邻域中,并且O是一个核心点,那么P就是一个与O密度相连的点。
(4)标记噪声点和边界点: 没有被标记为核心点的点被标记为噪声点。与某个核心点密度相连但不是核心点的点被标记为边界点。
为每一个核心点或与其密度相连的点赋予一个独立的簇标签: 为每一个核心点或与其密度相连的点赋予一个独立的簇标签。如果一个点与多个核心点密度相连,那么它将被赋予第一个找到的核心点的簇标签。
(5)噪声点形成独立的簇: 所有的噪声点形成一个独立的簇。
三、DBSCAN算法的优缺点如下:
优点如下所示:
1. 不需要预设聚类数:DBSCAN不需要事先指定聚类的数量,这使得算法更加灵活。
2. 识别噪声点:DBSCAN能够识别并处理噪声点,这对于包含异常值的数据集来说非常有用。
3. 任意形状的聚类:DBSCAN可以发现任意形状的聚类,不仅限于球形或圆形。
4. 密度基础:聚类是基于密度的连通性,这使得算法能够识别出由密度变化定义的聚类。
5. 参数较少:只需要设置两个参数(ε和MinPts),相比其他算法,参数调整较为简单。
缺点如下所示:
1. 参数敏感性:ε和MinPts的选取对聚类结果有很大影响,不恰当的参数可能导致聚类效果不佳。
2. 对高维数据效率低:随着数据维度的增加,计算邻域点的复杂度增加,导致算法效率降低。
3. 对