我有一个看似微不足道的问题。我需要有人为我澄清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)。
有人善意地澄清。
答案 0 :(得分:3)
如果您在数据库上下文中,并且向数据库发送查询
选择坐标x,y,z
周围半径为r的所有对象
然后数据库将包含查询点,如果它存储在数据库中。特别是,如果不希望包含它,您可以轻松删除它。 从数据库的角度来看,查询应该包含查询点(如果它在数据库中),而不是,如果它没有存储在数据库中。
更重要的是,如果你进行密度估算,那么每个数据点应该对密度有贡献,不应该吗?为什么一点特别?那些具有完全相同坐标的其他点怎么样?如果您在数据库中不的点估算密度怎么办?如果你从查询点移开一点点,你会看到密度突然增加!
如果您尝试将k-nearest-neighbors定义为对数据库D的查询,并且 not 要求查询点x成为数据库的一部分,那么它自然会遵循结果应包括查询点,如果它是D的一部分。
另一方面,1最近邻居通常是查询点是违反直觉的。通常,当您正在寻找"最近的邻居"时,您 意味着"最近的其他对象",不幸的是。 即使这将正式转换为"最近的对象到我的数据库中我的查询点的坐标,而没有我的查询点"。
不幸的是,这在文献中并未得到一致使用。 一些文章/作者/应用程序做 - 有些不 - 包括查询点。我可以从文献中为两个案例命名大量例子。
甚至一篇文章有时会在一个图中包含查询点,但在另一个图中却不包含!
永远不会成为一个符合每个人期望的解决方案,因为不幸的是,人们确实对于什么是正确的"有不同的想法。
您必须决定 希望行为是什么,如果行为符合预期,请仔细检查所有内容。 记录您的决定和意见。
请检查自己ELKI中k距离图的实现是否包含查询点。我们甚至可能(已)改变了这个类的行为为0.7或0.8;所以对我而言可能与你不同。 真的,真的看看你正在使用的完全版本的来源。
如果k距离图不包含查询点,则需要对minPts=4
使用3距离。如果确实包含查询点,则4距离与minPts=4
一致。由于上述原因(数据库观点,密度估算的观点),我非常确定DBSCAN 计算查询点数。因此,对于DBSCAN,minPts = 1是无意义的(每个点都是核心点),minPts = 2是单链接聚类(任何epsilon邻居被合并)。仅在minPts> 2你开始获得真正的DBSCAN结果。
GDBSCAN建议使用2*dim-1
代替4;我通常从minPts=10
开始,然后尝试20
。选择较大的minPts
:
minPts
(但对于文本数据,维度没有意义 - 最多选择内在维度)minPts
minPts
但不要超越。索引效率随着查询半径的增大而显着下降。您希望尽可能小地选择minPts
,同时仍然获得有趣的结果。同时使用多个值,以获得不同的观看次数。
请记住,群集是探索性数据挖掘。它意味着要求您试验参数,并研究结果,重复。因为没有正确的群集结果。群集结果的质量是您是否可以在数据上获得新见解。仅复制已知结果的聚类实际上已失败。