DBSCAN (Density-Based Spatial Clustering)
核心思想
DBSCAN 是一种基于密度的聚类算法。它将"密度足够高"的区域视为簇,能发现任意形状的簇,并自动识别噪声点。无需预先指定簇数
关键概念
给定参数
-邻域
核心对象 (Core Point)
密度直达 (Directly Density-Reachable)
若
注意
密度直达不对称:
密度可达 (Density-Reachable)
存在链
密度相连 (Density-Connected)
若存在
簇的定义
簇
- 最大性:若
且 从 密度可达,则 - 连通性:
中任意两点密度相连
不属于任何簇的点被标记为噪声。
算法流程
- 标记所有核心对象
- 从任一未访问的核心对象出发,通过密度可达扩展簇
- 将不属于任何簇的点标记为噪声(标签
)
参数选取
的选择
使用 k-距离图:对每个点计算到其第
MinPts 的选择
经验法则:
优缺点
| 优点 | 缺点 |
|---|---|
| 无需指定 | 对 |
| 可发现任意形状簇 | 高维数据效果差 |
| 能识别噪声 | 密度不均匀时困难 |
代码对应
bash
python -m pipelines.clustering.dbscan