scala—如何使用带状技术使用分布式minhash对集合(用户/文档)进行聚类?

kpbwa7wx  于 2021-06-25  发布在  Flink
关注(0)|答案(1)|浏览(497)

我对如何使用minhash和banding技术对集合进行聚类有很大的疑问。
我假设每个阅读的人都对minhash有很好的了解,所以我不会定义我使用的大多数术语。
我的目标是使用minhash根据用户签名的相似性对用户进行聚类。在本地、非绑定设置中,这将是微不足道的:如果它们的签名哈希相同,则它们位于同一集群中。
如果我们将签名拆分成多个带,并独立地处理它们,我可以像前面所说的那样处理一个带,并为每个带生成一组簇。我的问题是:我应该如何聚合这些集群?如果它们至少有一个共同元素,就合并它们?或者我应该做些不同的事?
谢谢

twh00eeo

twh00eeo1#

minhash并不是真正意义上的独立聚类算法。这意味着作为一个候选滤波器,用于近重复检测。
在查找类似文档时,可以计算minhash来检索候选文档。然后你仍然需要检查这些候选人-他们可能是假阳性!签名越多,就越有可能匹配。
所以,如果你再考虑一下近似复制的情况:如果a是b的近似复制,b是c的近似复制,那么a也应该是c的近似复制。如果这个条件成立,您可以将所有这些匹配项(在验证之后)一起抛出。如果它不考虑像层次聚类那样的策略来合并(或不合并)候选对象。

相关问题