如果 DBSCAN 算法工作正常,是否有可能产生少于 minPoints 成员的集群?
If a DBSCAN algorithm is working correctly, is it possible to result in a cluster with less than minPoints members?
我刚开始使用 DBSCAN 算法。
快速总结;它有两个参数:
epsilon
- 指定两点之间可接受的“距离”,在该距离下它们可以被认为足够接近聚类。
minPoints
- 指定必须落在距离 epsilon
内才能构成聚类的最少点数。如果没有足够的点在一起,它只是被标记为噪声。
我正在使用别人的 DBSCAN 算法并且我有源代码,我只是有点理解。我希望我可以按原样使用它,但后来我发现了一些我没有预料到的行为。
我为 minPoints
指定了 6 的值,但在我的结果中我得到的簇只有 2 个点。
通过调试,我认为我可以看到发生了什么。检查该点时,它看起来像在 epsilon
以下的距离处有 16 个相邻点,因此它应该有资格作为一个集群。后来,该算法发现这些邻居中的 14 个已经被分配到不同的集群,所以这个集群最终只有 2 个点。
minPoints
应该严格执行吗?
这是一个健康的 DBSCAN 算法应该如何工作,还是我需要在继续之前修复的错误?
对于通过Google找到此问题的任何人,正确答案是肯定的。正确运行的 DBSCAN 实现可能会创建一个成员少于 minPoints 的集群。在另一个 Stack Overflow 问题上有更全面的解释:
Can the DBSCAN algorithm create a cluster with less than minPts?
我刚开始使用 DBSCAN 算法。
快速总结;它有两个参数:
epsilon
- 指定两点之间可接受的“距离”,在该距离下它们可以被认为足够接近聚类。minPoints
- 指定必须落在距离epsilon
内才能构成聚类的最少点数。如果没有足够的点在一起,它只是被标记为噪声。
我正在使用别人的 DBSCAN 算法并且我有源代码,我只是有点理解。我希望我可以按原样使用它,但后来我发现了一些我没有预料到的行为。
我为 minPoints
指定了 6 的值,但在我的结果中我得到的簇只有 2 个点。
通过调试,我认为我可以看到发生了什么。检查该点时,它看起来像在 epsilon
以下的距离处有 16 个相邻点,因此它应该有资格作为一个集群。后来,该算法发现这些邻居中的 14 个已经被分配到不同的集群,所以这个集群最终只有 2 个点。
minPoints
应该严格执行吗?
这是一个健康的 DBSCAN 算法应该如何工作,还是我需要在继续之前修复的错误?
对于通过Google找到此问题的任何人,正确答案是肯定的。正确运行的 DBSCAN 实现可能会创建一个成员少于 minPoints 的集群。在另一个 Stack Overflow 问题上有更全面的解释:
Can the DBSCAN algorithm create a cluster with less than minPts?