DBSCAN学习笔记

基本概念

  • 核心点:若某个点的密度达到算法设定的阈值,即ε-邻域内点的数量(包括自己)不小于minPts,则该点为核心点。

  • 边界点:在ε-邻域内点的数量小于minPts,但是落在核心点邻域内的点。

  • 噪声点:不属于任何一个簇的点,从任何一个核心点出发都是密度不可达的。

  • ε-邻域:设定的半径r。

  • 直接密度可达:若某点p在点q的r邻域内,且q是核心点,则称p从q出发是直接密度可达的。

  • 密度可达:若有一个点的序列q0、q1...qk,对任意q0-qi-qk是直接密度可达的,则称从q0到qk密度可达,这实际上是直接密度可达的传播。

  • 密度相连:若从某核心点p出发,点q和点k都是密度可达的,则称点q和点k是密度相连的。

如果p是核心点,则它与所有由它可达的点(包括核心点和边界点)形成一个簇,每个簇拥有最少一个核心点,边界点也可以是簇的一部分,但它在簇的边缘位置,因为它不能到达更多的点。在DBSCAN里,簇可以理解为被低密度区域分隔开的稠密对象区域,DBSCAN将具有足够高密度的区域划分为簇,并在具有噪声的空间数据中发现任意形状的簇。

执行过程

DBSCAN通过检查空间数据中每点的邻域来搜索簇。

如果点p的邻域包含的点多于minPts,则创建一个以p为核心点的新簇,然后,DBSCAN迭代地聚集从这些核心点密度可达的对象,这个过程可能涉及一些密度可达簇的合并,当没有新的点可以添加到任何簇时,该过程结束。

具体步骤

  • 根据ϵ寻找每个点的邻域,找出核心点;
  • 对于每一个核心点,如果这个核心点未被分配到某一个簇时,创建一个新的簇;
  • 寻找这个核心点所有邻域点,并循环寻找这些邻域点相应的邻域点,将所有这些点分配到同一个簇;
  • 重复以上三步,直到左右核心点都被分配。对于不属于任何簇的点即为噪声点。

参数选择

半径r:根据k距离来设定。

首先选中一个点,计算它和所有其它点的距离,从小到大排序为d1、d2、d3...,假如d3和d4之间的差异很大,就可以认为d1到d3之间的距离是合适的,将其设为半径。

minPts:一般可通过多次尝试设置。

优缺点

优点

  • 不需要指定簇个数;

  • 可以发现任意形状的簇;

  • 擅长找到离群点(检测任务);

  • 仅需两个参数。

缺点

  • 不适用于高维数据;

  • 参数对结果影响非常大;

  • sklearn中效率很慢(可以应用数据削减策略)。

算法可视化演示

DBSCAN的可视化演示

posted @ 2023-02-10 19:33  大雄的叮当猫  阅读(103)  评论(0编辑  收藏  举报