DBSCAN 和边界点

DBSCAN and border points

据说DBSCAN在边界点上不一致,取决于它首先将点分配给哪个集群。 当 DBSCAN 想要将边界点分配给其中一个集群时,它是否考虑了每个集群中边界点接近 (eps) 的点数?

在这很重要的情况下,对于两个聚类,每个聚类的点数通常为 1。

更好的决胜局将是距离,但即便如此也可能有平局。

这是一个微不足道的修改,很容易在 post 中实现-处理:对于每个边界点,找到最近的核心点,并使用该标签。

但是,这重要吗?

集群从来都不是完美的。我们在这里讨论的是一种罕见的情况,其中 "best"(对于 "best" 的一个相当特别的定义,基于两个硬阈值)赋值 通常会产生 0.000 的差异 到最终结果。

如果我没记错的话,DBSCAN作者建议你也可以将这些点分配给两个集群。据推测,这是最符合定义的解决方案(边界点 可从两个集群到达)。但这使一切变得更加复杂。因为许多用户希望每个点在一个漂亮的数字列中有 一个 标签,而不必处理这种特殊情况。

有点晚了,但仍然是:首先,边界点本身必须是核心点,因为在它的 epsilon 邻域中必须至少有一个进一步的对象,从那里它是直接密度可达的。否则它不会连接到集群。

根据定义,DBSCAN 结果是确定性的 w.r.t。核心点和噪声点而不是 w.r.t 边界点,因此:如果边界点的密度可以从两个集群到达,它实际上取决于处理或您的实现,它将被分配到哪个集群。