【问题标题】:Error in my DBSCAN algorithm. Matlab version我的 DBSCAN 算法出错。 Matlab版本
【发布时间】:2018-10-09 22:30:44
【问题描述】:

目前我正在使用 DBSCAN 算法对我的数据进行聚类,但我在这里遇到了一些问题。如您所知,DBSCAN 在开始之前需要 3 个参数。首先是epsilon,它是核心点的搜索范围。其次,是 MinPts 或者您可以说形成集群的最小点数。第三是数据集。

DBSCAN 通过跳转到一个随机点开始工作。该点可以称为核心点候选。如果在 epsilon 半径内有 Minpts-1 点,我们使用 epsilon 进行评估。我们在这个 epsilon 中得到了准确的 MinPts 点。所以我们可以形成一个集群。然后我们会调用expandcluster函数来扩展集群,所有在epsilon半径内的点都会用epsilon半径重新搜索,所以集群会变大。这一步停止,直到集群无法扩展。我们将转到另一个未在集群中分配的点。如果该点在半径内少于MinPts 点,我们会将此点标记为噪声并继续指向一个点并找到新的聚类。

我正在使用dbscan clustering algorithm

问题是我有一组数据,我设置了 MinPts 4,Eps 65.5。我得到了 3 个集群,但其中 1 个集群只有 3 个点。如果我们从理论上看它不应该发生。

感谢您提出这个问题,希望我能找到答案...

【问题讨论】:

    标签: matlab cluster-analysis dbscan


    【解决方案1】:

    DBSCAN 可以生成小于 minPts 的簇。

    这是一个众所周知的事实,尽管例外情况相当罕见。

    重新访问 DBSCAN, 重温:为什么以及如何(仍然)使用 DBSCAN。 ACM 翻译。数据库系统42、3、第19条(7月 2017),21 页。 https://doi.org/10.1145/3068335

    脚注 1 说:

    [边界点的唯一标签] 在极少数情况下,如果可以到达的边界点太多,可能会导致集群的点数少于 minPts 由不同的集群分配,并且之前已分配给其他集群。

    一个集群至少有 1 个核心点。这实际上是有保证的。

    不过,如果您将随机代码与您从互联网下载的随机代码与更广为人知的实现之一进行对照,这可能是一个好主意。

    【讨论】:

    • 您是否有任何论文提到“DBSCAN 可以产生小于 minPts 的集群”。 ?我从边界点的角度理解这是可能的,但原始论文没有说明这个问题。
    • DBSCAN 重访重访,作者几乎相同。曾在维基百科中。
    猜你喜欢
    • 2021-04-19
    • 2013-03-31
    • 2020-02-14
    • 1970-01-01
    • 2017-03-05
    • 2013-03-26
    • 2014-02-19
    • 2014-09-11
    • 2012-04-26
    相关资源
    最近更新 更多