ELKI中DBSCAN的MinPts参数的含义

我有一个看似简单的问题。我需要有人帮我澄清一下在ELKI实现中DBSCAN的MinPts参数的含义。

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

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

原始DBSCAN论文(Ester等人,1996年)提到将MinPts设置为k(MinPts = 4)。DBSCAN的维基百科文章似乎也暗示MinPts指的是点p周围的邻居。然而,ELKI似乎期望MinPts被设置为k + 1(MinPts = 5)。

请有人帮我澄清一下。


回答:

支持包含查询点的论点:

如果你在一个数据库环境中,并且向数据库发送查询

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

那么数据库包含查询点如果它被存储在数据库中。特别是,如果不希望包含它,你可以很容易地将其移除。从数据库的角度来看,查询应该包含查询点,如果它在数据库中,如果不在数据库中,则不包含。

更进一步,如果你进行密度估计,那么每个数据点都应该对密度有所贡献,不是吗?为什么一个点会特殊?如果有其他点具有完全相同的坐标怎么办?如果你在数据库中不存在的点处估计密度会怎样?你会看到当你从查询点稍微移动时,密度会突然增加!

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

反对包含查询点的论点:

另一方面,1最近邻通常是查询点,这一点是违反直觉的。通常,当你在寻找“最近邻居”时,你确实是指“最近的其他对象”,不幸的是。即便这在形式上翻译为“在我的数据库中我的查询点坐标的最近对象,不包括我的查询点”。

文献中使用不一致:

不幸的是,文献中对此的使用并不一致。一些文章/作者/应用包含查询点,而另一些则不包含。我可以从文献中列举出许多支持两种情况的例子。

甚至同一篇文章有时在一个图中包含查询点,但在另一个图中不包含!

永远不会有一个解决方案能满足所有人的期望,因为人们对什么是“正确”的看法不同,不幸的是。

要具体,并双重检查!

你必须决定你想要的行为是什么,并双重检查一切是否按你期望的方式运行。记录你的决定和观察。

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

如果k距离图包含查询点,你需要使用3距离来对应minPts=4。如果它包含查询点,那么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,同时仍然得到有趣的结果。还要使用多个值,以获得不同的视角。

记住,聚类是探索性的数据挖掘。它意味着你需要实验参数,研究结果,重复。因为没有正确的聚类结果。聚类结果的质量在于你是否能从中获得对数据的新见解。一个仅仅复制已知结果的聚类实际上是失败的。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注