什么是 DBSCAN?
DBSCAN 是围绕核心样本扩展密度连通邻域,并把无法从任何核心点密度可达的样本标记为噪声的聚类算法。
快速了解
| 全称 | 基于密度的带噪声空间聚类 |
|---|---|
| 创建时间 | 1996 年由 Martin Ester、Hans-Peter Kriegel、Jörg Sander 与 Xiaowei Xu 提出 |
| 规范文档 | 官方规范 |
工作原理
区分核心点、边界点和噪声点
DBSCAN 原始论文定义了直接密度可达、传递式密度可达和对称的密度相连。核心点满足邻域计数,边界点可从核心点到达但自身不满足计数。噪声是相对于当前 eps、minPts、距离函数和数据集定义的状态。
在部署使用的表示空间中调节密度
eps 是所选度量空间中的半径,minPts 规定成为核心点所需的邻域支持度。特征缩放、维度、重复样本权重、Cosine 归一化和距离集中都会改变有效密度。Embedding 模型或预处理变化后必须重新选择参数,并检查重要业务切片。
保留实现差异与分配语义
当前 scikit-learn 文档说明其实现可能出现 O(n^2) 最坏内存路径,而原始算法按线性内存设计。被多个簇共享的边界点还可能随遍历次序改变归属。经典 DBSCAN 通常是传导式方法;新记录需要单独定义分配策略或重新拟合。
主要特点
- 通过密度可达与密度相连关系构造簇
- 使用 eps 邻域半径和核心点最小支持度
- 无需指定簇数即可发现非凸形状
- 明确区分核心点、边界点和噪声点
- 有效簇密度差异过大时容易失效
- 高度依赖特征缩放、距离选择与近邻搜索实现
常见用途
- 发现不规则空间或 Embedding 分组
- 从密集事件模式中分离稀疏离群点
- 探索簇数未知的数据集
- 在有意义的距离阈值下识别局部社区
- 为质心聚类提供密度型对照基线
示例
Loading code...常见问题
DBSCAN 如何形成一个簇?
它从 `eps` 邻域内至少包含 `minPts` 个样本的核心点开始,并通过相邻核心点继续扩展。由核心点到达的边界点会加入簇但不能扩展,无法到达的样本保持为噪声。
eps 是 DBSCAN 簇的最大直径吗?
不是。`eps` 只限制单次邻域连接。重叠的核心点邻域可以形成一条长链,使同一 Cluster 两端的距离远大于 `eps`;簇由密度连通而不是全局直径定义。
如何选择 eps 与 minPts?
必须在生产实际使用的缩放特征空间和距离函数中选择。检查近邻距离分布,在预先声明的范围内测试,并评估稳定性与领域用途;表示或采样变化后需要重新校准。
为什么 DBSCAN 在高维或不同密度数据上容易失效?
高维空间中的距离区分度会下降,而一组全局 `eps` 与 `minPts` 无法同时描述稀疏和密集的有效分组。此时可能需要特征选择、更合适的度量、OPTICS、HDBSCAN 或其他模型。
训练后的 DBSCAN 能直接分配新记录吗?
经典 DBSCAN 描述的是已拟合数据集,并没有通用预测规则。系统必须明确新记录是连接到冻结核心邻域、进入独立分类器、保持未分配,还是触发一次有版本记录的重新拟合。