【问题标题】:Meaning of DBSCAN MinPts Parameter in ELKIELKI中DBSCAN MinPts参数的含义
【发布时间】:2015-11-10 22:39:39
【问题描述】:

我有一个看似微不足道的问题。我需要有人为我澄清 ELKI 实现中 DBSCAN MinPts 参数的含义。

如果我使用 k = 4 的值来绘制一个排序的 k-dist 图,它表示一个点的距离 p到它的第四个最近的邻居。这意味着邻域包含 5 个点 (k + 1); 4 个邻居加点 p.

在 ELKI 中,MinPts 仅表示邻居还是也包括点 p?在上述情况下,应该设置为 4 还是 5?

original DBSCAN paper (Ester et al. 1996) 谈到将 MinPts 设置为 k (MinPts = 4)。 DBSCAN Wikipedia article 似乎也暗示 MinPts 指的是 p 周围的邻居。但是,ELKI 似乎期望 MinPts 设置为 k + 1 (MinPts = 5)。

有人请澄清一下。

【问题讨论】:

    标签: machine-learning cluster-analysis data-mining dbscan elki


    【解决方案1】:

    参数pro包括查询点:

    如果您在数据库上下文中,并且您向数据库发送查询

    选择坐标 x,y,z 周围 r 半径内的所有对象

    那么数据库包含查询点如果它存储在数据库中。特别是,如果不希望包含它,您可以轻松删除它。 从数据库的角度来看,查询应该包括查询点,如果它在数据库中,而不是,如果它没有存储在数据库中。

    更重要的是,如果您进行密度估计,那么每个数据点都应该对密度有所贡献,不是吗?为什么会有一点特别?具有完全相同坐标的其他点呢?如果您估计数据库中点的密度怎么办?如果您稍微远离查询点,您会看到密度突然增加!

    如果您尝试将 k 最近邻定义为对数据库 D 的查询,并且 要求查询点 x 是数据库的一部分,那么很自然地,结果应包括查询点如果它是 D 的一部分。

    参数contra包括查询点:

    另一方面,1-最近邻通常是查询点是违反直觉的。通常,当您在寻找“最近的邻居”时,您确实的意思是“最近的其他对象”,不幸的是。 即使这会正式转换为“我的数据库中查询点坐标最近的对象没有我的查询点”。

    在文献中使用不一致:

    不幸的是,这在文学作品中并未得到一致使用。 一些文章/作者/应用程序包含查询点,而有些则不包含查询点。我可以从文献中举出很多两种案例的例子。

    即使是一篇文章,有时也会在一个图中包含查询点,而在另一个图中不包含!

    永远不会根据每个人的期望提供解决方案,因为不幸的是,人们对什么是“正确”有不同的看法。

    要具体,仔细检查!

    您必须决定希望的行为是什么,并仔细检查一切是否符合您的预期。 记录你的决定和观察。

    请检查自己在 ELKI 中的 k 距离图的实现是否包含查询点。我们甚至可能(已经)在 0.7 或 0.8 版本中更改了此类的行为;所以对我来说可能和你不同。 真的,真的看看你正在使用的确切版本的来源。

    如果 k 距离图包含查询点,则您需要为 minPts=4 使用 3 距离。如果它确实包含查询点,那么 4-distance 与 minPts=4 一致。我很确定 DBSCAN 确实出于上述原因(数据库观点、密度估计观点)计算查询点。因此对于 DBSCAN,minPts=1 是无意义的(每个点都是核心点),而 minPts=2 是单链接聚类(任何 epsilon-neighbors 都被合并)。只有在 minPts > 2 时,您才开始获得真正的 DBSCAN 结果。

    GDBSCAN 建议使用2*dim-1 而不是4;我通常以minPts=10 开头,然后尝试20。选择更大的minPts 有几个原因:

    • 更高的维度通常需要更大的minPts(但对于文本数据,维度是没有意义的 - 最多由固有维度选择)
    • 噪音:数据越嘈杂,minPts 的要求越高
    • 重复:如果有很多重复,你需要再次增加minPts

    但不要过头。查询半径较大时,索引效率会大幅下降。您想选择尽可能小的minPts,同时仍能获得有趣的结果。另外一定要使用多个值,以获得不同的视图。

    请记住,聚类是探索性数据挖掘。它旨在要求您对参数进行试验,并研究结果,然后重复。因为没有正确的聚类结果。聚类结果的质量在于您能否对数据有新的见解。仅重现已知结果的聚类实际上已经失败。

    【讨论】:

    • 感谢您的详细回答。我使用的是 ELKI 版本 0.6.5~20141030。正如您所建议的,我查看了用于计算 KNN 距离的 KNNDistancesSampler.java 文件的来源,它表明 kminPts - 1。它确实不是包括查询点。因此,我的意图是使用 k = 4 和 minPts = 5,但我会按照您的建议尝试其他值。
    猜你喜欢
    • 2020-09-10
    • 2019-07-07
    • 2020-03-27
    • 1970-01-01
    • 2017-09-04
    • 2014-07-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-05
    相关资源
    最近更新 更多