DBSCAN 聚类:以“热闹”划界,任意形状成团,孤立点全当噪声
DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一种基于密度的空间聚类算法,它的核心思想是:
通过数据点的“密度”来划分簇,而不是像K-Means那样依赖中心点或几何形状。
✅ 一、核心原理一句话总结:
“高密度区域连成簇,低密度区域作边界,孤立点是噪声。”
✅ 二、关键概念(你必须理解这三个):
概念 | 定义 | 类比理解 |
---|---|---|
ε(eps) | 半径,定义“邻域”范围 | 你画一个圆,圆规张多大 |
min_samples | 一个点的ε邻域内最少要有多少个点才算“密集” | 至少几个人才算“热闹” |
密度直达/可达 | 点A在点B的ε邻域内,且B是核心点 → A从B密度直达 | 你站在热闹人群里,别人能“挤过来” |
✅ 三、三种点的分类(DBSCAN的灵魂):
类型 | 条件 | 角色 |
---|---|---|
核心点(Core) | ε邻域内点数 ≥ min_samples | 簇的“种子”,可以扩展簇 |
边界点(Border) | 在核心点的ε邻域内,但自己不是核心点 | 簇的“边缘”,不能扩展 |
噪声点(Noise) | 既不是核心点,也不是边界点 | 孤立点,不属于任何簇 |
✅ 四、算法流程(极简版):
- 随机选一个未访问点。
- 如果是核心点 → 开始“扩张”簇:
- 把所有密度可达的点拉进来。
- 如果不是核心点 → 标记为噪声(暂时)。
- 重复直到所有点都被访问。
✅ 五、举个例子(你一看就懂):
想象你在广场上找人:
- 核心点:一堆人围在一起聊天(≥min_samples人)。
- 边界点:站在人群边缘,没挤进去,但离得很近。
- 噪声点:一个人孤零零站在角落,没人理。
✅ 六、对比K-Means(你秒懂区别):
特性 | K-Means | DBSCAN |
---|---|---|
簇形状 | 凸形(圆形/球形) | 任意形状(月牙、环形都行) |
需预设簇数 | ✅ 必须指定k | ❌ 不需要 |
对噪声敏感 | ✅ 会拉偏中心 | ❌ 直接标为噪声 |
对密度不均效果 | 差 | 好 |
✅ 七、总结一句话:
DBSCAN不靠“中心”,靠“热闹”——人多就成团,人少就是噪声,形状随便长。
如果你有图里那个A/B/C点的例子,我可以帮你标出来哪些是核心、边界、噪声。