算法实习笔记——DBSCAN聚类算法

DBSCAN聚类算法

DBSCAN是基于密度的带噪声应用的空间聚类算法。

DBSCAN 是通过点的密度来识别聚类集群。聚类通常位于高密度区域,而异常值往往位于低密度区域。使用该算法的 3 个主要优势(根据该算法的先驱者的说法)是:它只需要最少的领域知识,可以发现任意形状的聚类,并且对于大型数据库来说非常高效

img

如上图所示是一个数据集,有众多的离散点,其中每一点都代表一个样本。

1.中心圆探测半径

设置eps参数,对于每一个样本点进行中心元探测,探测圆内其他样本点的个数,如下图所示。

img

左侧绿色小圈的中心点的中心圆内有三个样本点,而右侧红色小圈的中心点的中心圆内有七个样本点,

2.核心点和非核心点

设置第二个参数minPoints,我们认定当某个中心点的中心圆内样本点数目少于minPoints,则该点定义为非核心点,反之则为核心点。

一般来说,minPoints ≥数据集的维数+ 1。对于有噪声的数据集来说,较大的值通常更好。minPoints 的最小值必须是 3,但数据集越大,minPoints 值就必须越大。

通过划分核心点和非核心点,大概如下图所示:

img

3.群组划分

while(未分配标签的核心点不为空)
{
	随机选取一个核心点加入队列q.push(x),为其分配群组名
	while(!q.empty())
	{
        将队首中心圆内的所有点(包括核心点和非核心点)分配同一群组名
        q.pop();
        q.push(队首中心圆内的其余核心点)//加入队列
	}
}

注意到,我们不会扩散非核心点中心圆内的其他非核心点,只针对核心点的中心圆内的所有点进行扩散命名

群组划分结果如下:

img

其中红色是还未划分的点,所以会进行第二轮划分,最终结果如下:
img

就这样,我们完成了DBSCAN的2个群组集群聚类,并发现了7个异常离群值。

知识扩展:聚类算法

一、DBSCAN vs K-means

对比维度K-meansDBSCAN
核心思想基于距离,最小化簇内方差基于密度,寻找高密度区域
是否需要指定簇数✅ 需要预设 K 值❌ 自动确定
簇的形状只能识别球形/凸形簇可识别任意形状
能否识别噪声❌ 所有点必须归类✅ 能标记离群点为噪声
对异常值敏感度高(会拉偏中心点)低(异常值标记为噪声)
计算复杂度O(n·k·t) 较快O(n²) 或 O(n log n)

图示对比

数据分布:                K-means结果:           DBSCAN结果:

  ****                    ****                    ****
 ******      ···         ██████      ███         ██████      ···
  ****       ···          ████       ███          ████       噪声
             ···                     ███                     
    ▲▲▲                    ▲▲▲                    ▲▲▲
   ▲▲▲▲▲                  ▲▲▲▲▲                  ▲▲▲▲▲
    ▲▲▲                    ▲▲▲                    ▲▲▲

                         (错误地把噪声           (正确识别3个簇
                          归入某个簇)             + 噪声点)

二、常见聚类算法全览

算法类型优点缺点适用场景
K-means划分式快速、简单、可扩展需预设K,只能球形簇,对异常值敏感大数据、簇大小均匀
DBSCAN密度式自动确定簇数,识别噪声,任意形状对密度不均匀敏感,参数敏感噪声多、形状不规则
层次聚类层次式可视化树状图,不需预设K计算慢O(n³),不可逆小数据、需要层次结构
GMM概率式软聚类(概率归属),椭圆形簇需预设K,计算较慢簇有重叠、需要概率
OPTICS密度式DBSCAN改进,适应不同密度更复杂,需要后处理密度不均匀
Mean Shift密度式自动确定簇数,无需预设计算慢,带宽敏感图像分割
谱聚类图论式处理复杂形状,效果好计算慢,需预设K图结构、复杂形状

三、算法选择依据判断

需要预设簇数?
├─ 是 → 簇形状规则?
│       ├─ 是 → K-means
│       └─ 否 → 谱聚类 / GMM
│
└─ 否 → 数据有噪声?
        ├─ 是 → 密度均匀?
        │       ├─ 是 → DBSCAN
        │       └─ 否 → OPTICS
        └─ 否 → 层次聚类 / Mean Shift

参考文献:
一文弄懂DBSCAN聚类算法 - 知乎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值