DBSCAN 的 eps 和 min_samples 如何选择?
简化版
DBSCAN 的 eps 定义邻域半径,minPts 定义核心点所需密度。eps 增大会连接更多区域,minPts 增大会提高核心门槛;二者依赖缩放、距离度量和维度,应结合 k-distance 曲线、领域最小簇规模与稳定性联合选择。
详细版
- 核心点邻域样本数至少为 minPts。
- 边界点可达核心点但自身不够密。
- 噪声点当前不可由核心链路到达。
- eps 过大会合并簇,过小会产生大量噪声。
- 高维距离集中会削弱统一半径。
完整版教学
一、问题定义与核心直觉
DBSCAN 从核心点沿密度可达关系扩张,因此能发现非球形簇且无需预设簇数。边界点的归属可能受遍历次序和实现影响,但核心连通结构更稳定。
常用 k-distance 图把每个点到第 k 近邻的距离排序,在拐点附近寻找 eps;它只是诊断工具,曲线无明显拐点往往提示密度不均或维度过高。
二、机制与公式
N_eps(x)={z | d(x,z)<=eps}
core(x) iff |N_eps(x)|>=minPts
常见定义的 N_eps(x) 包含 x 自身,因此 minPts=5 通常表示自身加邻居至少 5 个;具体实现仍需核对。边界点不满足核心门槛,但落在某个核心点邻域内,不能继续扩张密度链。
三、带数字的推演
minPts=5 时,某点半径 0.4 内含自身共 6 点,所以是核心点;若 eps 降到 0.2 后只剩 3 点,它可能变成边界或噪声。相同数值在未缩放特征上没有可迁移意义。
同一个点随 eps 变化可在核心、边界和噪声之间切换。eps 增大使邻域集合只增不减,核心点通常增加并可能通过“桥”合并原本不同的簇;因此不能只按噪声率最低选参数。
四、方案对比
| 方案 | 优势 | 代价或边界 |
|---|---|---|
| 小 eps | 保留局部间隙 | 噪声点增多 |
| 大 eps | 连通范围扩大 | 不同簇可能桥接 |
| HDBSCAN | 处理多密度更灵活 | 参数与解释更复杂 |
五、工程执行流程
缩放并选距离 -> 设 minPts 候选 -> 绘 k-distance 曲线 -> 扫描 eps
-> 看簇数/噪声率/稳定性 -> 检查桥接点 -> 在留出期复验
高维下最近邻与远邻距离可能趋同,k-distance 曲线不再出现清晰拐点。此时应先检查特征选择、距离度量或降维,或改用 OPTICS/HDBSCAN,而不是继续微调一个缺乏区分力的 eps。
六、边界条件与上线代价
经纬度不能直接当平面欧氏坐标;应使用 haversine 并把 eps 换算成弧度,或在局部投影坐标中计算。
单一 eps 很难同时覆盖稠密城区与稀疏郊区,若参数扫描总在“碎裂”和“吞并”间跳变,应考虑 HDBSCAN 或分区建模。
关键判断:eps 管“看多远”,minPts 管“多少邻居才算稠密”。
七、常见误区与追问
-
误区:eps 是簇的最大直径。 核心点可链式连接,簇直径可远大于 eps。
-
追问:minPts 是否包含样本自身? 常见实现包含,但必须核对库定义。
-
误区:噪声点永远是真异常。 它只是不满足当前密度参数。
-
追问:如何选 eps? 结合 k-distance、噪声率和重采样稳定性。
-
追问:维度高会怎样? 距离集中使统一邻域半径难以区分密度。
八、加强记忆
eps 管“看多远”,minPts 管“多少邻居才算稠密”。回答时连上缩放、k-distance、噪声率和高维失效边界,不能把两个参数解释成固定业务常数。