验证DBSCAN聚类的最佳方法

我使用了ELKI实现的DBSCAN来识别火灾数据集中火热点聚类,结果看起来相当不错。数据集是空间性的,聚类基于纬度和经度。基本上,DBSCAN参数识别出火热点区域,这些区域具有高密度的火点(由密度定义)。这些就是火热点区域。

我的问题是,在尝试了几个不同的参数并找到了一对能给出合理聚类结果的参数后,如何验证这些聚类

对于我的用例,有没有合适的正式验证方法?还是这取决于应用领域的主观性?


回答:

ELKI包含了一些用于聚类评估的函数。

使用-evaluator参数来启用它们,来自evaluation.clustering.internal

其中一些不会自动运行,因为它们的运行时间成本是二次的——可能比你的聚类算法还要高。

不信任这些度量。它们是为特定的聚类算法设计的;主要用于决定k-means的k参数;除此之外用处不大。如果你盲目地按照这些度量来,你大多数时候会得到无用的结果。此外,这些度量在处理噪声时,无论我们尝试的哪种策略,都不起作用。

最便宜的是基于标签的评估器。这些会自动运行,但显然你的数据没有标签(或者它们是数字的,在这种情况下你需要相应地设置-parser.labelindex参数)。个人而言,我更喜欢使用调整后的兰德指数来比较两个聚类的相似性。所有这些指数对噪声都很敏感,所以它们在DBSCAN中表现得不太好,除非你的参考具有与DBSCAN相同的噪声概念。

如果你负担得起,”主观”评估总是最好的。

你想要解决的是一个问题,而不是一个数字。这就是”数据科学”的全部意义所在,问题导向并解决问题,而不是执着于最小化某个随机的质量数字。如果结果在现实中不起作用,你就失败了。

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

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