我们如何评估 DBSCAN 参数?

数据挖掘 r 聚类
2021-09-17 11:20:46

是的,DBSCAN 参数,尤其是参数eps(epsilon 邻域的大小)。在文档中,我们有一个“在图中寻找膝盖”。

很好,但它需要视觉分析。如果我们想让事情自动化,它实际上并没有用。所以,我想知道是否有可能在几行代码中找到一个好的 eps。

让我们想象一下:

  1. 评估 kNN 距离
  2. 对这些值进行排序
  3. 缩放它们(使值始终在 0 和 1 之间)
  4. 评估导数
  5. 找到导数高于某个值的第一个点,让我们试试 1

在 R 中,它看起来像(使用 DBSCAN 文档中的 iris 数据集):

# evaluate kNN distance
dist <- dbscan::kNNdist(iris, 4)

# order result
dist <- dist[order(dist)]

# scale
dist <- dist / max(dist)

# derivative
ddist <- diff(dist) / ( 1 / length(dist))

# get first point where derivative is higher than 1
knee <- dist[length(ddist)- length(ddist[ddist > 1])]

结果是0.536,看起来相当不错。 在此处输入图像描述

这种方法是否相关或完全是胡说八道?

2个回答

光学摆脱ε,你可能想看看它。特别是可达性图是一种可视化哪些好的选择的方法ε 在 DBSCAN 中可能是。

维基百科(文章)很好地说明了这一点。左上角的图像显示了数据点,左下角的图像是可达性图:

在此处输入图像描述

是的-axis 是不同的值 ε,山谷是簇。每个“条”用于单个点,其中条的高度是到已打印点的最小距离。

如果您选择自动解决方案,您不妨决定 80% 的点应该是核心点,并选择 4-NN 距离的 80% 分位数

查看导数等以正式定义“膝盖”是脆弱的,我认为这行不通。因为您无法将距离与等级进行比较。

但:

  • 在过去的 20 年中,已经提出了几种用于 DBSCAN 参数化的启发式方法。
  • DBSCAN 的一些增强功能(例如 OPTICS 和 HDBSCAN*)已经发布,它们摆脱了 epsilon 参数(有利于图形方法,例如 OPTICS 图)。

最后,有参数是一个特性,而不是一个限制聚类分析不是完全自动化的东西。这是一种探索性的方法。您尝试,更改参数,再次尝试,再次更改参数,......直到您了解有关数据的内容。任何不允许你重复的方法都是糟糕的设计。