参数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,同时仍能获得有趣的结果。另外一定要使用多个值,以获得不同的视图。
请记住,聚类是探索性数据挖掘。它旨在要求您对参数进行试验,并研究结果,然后重复。因为没有正确的聚类结果。聚类结果的质量在于您能否对数据有新的见解。仅重现已知结果的聚类实际上已经失败。