这是我参与11月更文挑战的第3天,活动详情查看:2021最后一次更文挑战
min-hash算法的基本思想
今天的这一节中,我们将对min-hash算法的基本思想进行一个整体介绍。
我们在上一节中提到: “min-hash算法就是一个在Jaccard距离基础之上进行改进,带有降维功能的进阶版Jaccard距离” 。这句话是什么意思呢?在本节中,我们将基于对这句话的解释,来对min-hash算法的基本思想进行一个整体的描述,并在之后的小节中对算法的实现做出进一步的解释。
首先,我们先来解释前半句中的关键词句: “在Jaccard距离基础之上进行改进” 。这句话的意思是指,min-hash算法最终也是要通过Jaccard距离的思想来对比集合之间的相似度,即使用公式(1) 。那么min-hash和Jaccard距离的不同在哪里呢,也就是它的改进之处在哪里呢?这就要和后半句结合起来了: “带有降维功能的进阶版Jaccard距离" 。显然(真的很显然了啊),min-hash算法需要在对比集合相似度之前,先将需要对比的集合Ci、Cj进行一次最小哈希操作(这也是min-hash算法名字的由来,至于什么是最小哈希操作,以及它为什么可以实现降维会在下一节中详细解释)来降低集合的维度,得到其哈希签名sig(Ci)、sig(Cj) ,这便是上述定义里所提到的降维功能。 这时候我们再来对比sig(Ci)、sig(Cj) 之间的Jaccard距离即可,我们可以将min-hash算法的公式总结如下:
此时我们需要关注一个问题,凭什么认为完成了最小哈希操作后的集合之间的Jaccard距离与原始集合之间的Jaccard距离还是相等的呢?不要着急,在下一节对最小哈希操作的定义给出详细解释之后,我们也会对该问题给出详细证明。