如何找到 DBSCAN 的最佳参数?

How to find optimal parametrs for DBSCAN?

有没有什么工具可以计算DBSCAN算法的minpts和eps的最优值?

目前我使用sklearn库来应用DBSCAN算法

from sklearn.cluster import DBSCAN

我尝试了几个 minpts 和 eps 的算法,但没有任何计算。

epsminpts 都被认为是超参数。给定数据集,没有算法可以确定这些的完美值。相反,它们必须在很大程度上根据您要解决的问题进行优化。

关于如何优化的一些想法:

minpts 应该随着数据集大小的增加而变大。

eps 是一个处理您要查找的星团半径的值。要选择一个值,我们可以执行一种肘部技术(一种类似的技术,通常用于确定 K-Means 聚类中的最佳 k)。

  1. 令 k = 最近邻的数量
  2. 对于 k 的值,对于数据集中的每个点,计算每个点与其 k 最近邻点之间的平均距离(某些软件包在某处内置了此功能)
  3. 在 X 轴上绘制点数,在 y 轴上绘制平均距离。
  4. 生成的图形应该是递增的(只要您按平均距离对数组进行递增排序)并且向上凹。应该有一个点是增长率急剧跳跃的,这个点叫做肘点,包含你的最优eps,也就是肘点的y值。
  5. 运行此算法使用不同的k值并比较结果。

如果有一个明确的方法来解决最优值,它会被大量记录下来。现在,我们所能做的就是给出我们最好的计算猜测。再次重申,您尝试解决的问题可能会影响您选择肘点的方式 - 了解这一点很重要。