我有一个看似微不足道的问题。我需要有人为我澄清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)。
有人请澄清。
最佳答案
包含查询点的参数pro:
如果您处于数据库上下文中,并且向数据库发送查询
选择围绕坐标x,y,z的r半径内的所有对象
如果数据库中存储了查询点,则该数据库将包括查询点。特别是,如果不希望包含它,则可以轻松删除它。从数据库的角度来看,如果查询在数据库中,则查询应包括查询点;如果数据库中未存储查询,则查询应不包括查询点。
更重要的是,如果您进行密度估算,那么每个数据点都应该对密度有所贡献,不是吗?为什么有一点特别?坐标完全相同的其他点呢?如果您估计不在数据库中的某个点的密度怎么办?如果将查询点移开一点,就会突然增加密度!
如果您尝试将k-nearest-neighbors定义为对数据库D的查询,并且不要求查询点x成为数据库的一部分,那么很自然地得出结果,如果该查询是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
,同时仍能得到有趣的结果。也可以使用多个值来获取不同的视图。
请记住,集群是探索性的数据挖掘。这意味着需要您试验参数,然后研究结果,然后重复。因为没有正确的聚类结果。集群结果的质量是您是否可以对数据获得新的见解。实际上仅产生已知结果的聚类失败。