哈希技术
布隆过滤器
- :哈希函数个数
- :位数组大小
- :元素个数
- :误判率
最优的位数组大小
最优的哈希函数个数
Shingling
将一篇文档视为一个字符串,文档的 -Shingling 定义为其中任意长度为 的字串。
这样每篇文档都可以用 -Shingling 的集合或包来表示。(集合中的元素只能出现一次,包中的元素可以重复出现)
在得到某两篇文档的 Shingling 表示后,可用 Jaccard 距离来衡量两篇文档的相似度。
Jaccard 相似度
Jaccard 距离
构建文档特征矩阵
Min-Hashing(最小哈希)
布尔向量 ,随机排列 。 为布尔向量经过随机排列后得到的新向量。 为新布尔向量中第一个不为 的行号。
示例:,,,
定理1 ⭐
两个集合 和 经过多次随机排列之后得到的两个最小哈希值相等的概率,等于这两个集合的 Jaccard 相似度。
最小哈希签名
集合 个最小哈希值构成的列向量即为 的最小哈希签名。
最小哈希签名矩阵
由多个集合的最小哈希签名构成的矩阵即为最小哈希签名矩阵。
最小哈希签名矩阵的相似度
基于最小哈希签名矩阵可以估算文档的相似度,但是当哈希函数个数较少时,估算误差可能会比较大。
- 基于 Jaccard 相似度:通过“输入特征矩阵”使用 Jaccard 相似度计算。
- 基于最小哈希签名矩阵:通过“最小哈希签名矩阵”使用 Jaccard 相似度计算。
基于 Min-Hashing 的 LSH(局部敏感哈希)
得到最小哈希签名矩阵,就可以运用条块化方法实现局部敏感哈希(LSH)。
如图,将最小哈希签名矩阵划分为 组或行条(band)。每组由 行组成,都对应 个哈希函数,由这 个最小哈希组成的列向量决定一个集合映射到哪个桶中。
因此, 维列向量可以看作该集合的一个数字签名,拥有 组意味着拥有 次数字签名。两个集合只要有一个签名被映射到同一个桶中,就被认为是一对候选相似集合。
相似集合概率分析
假定将某个最小哈希签名矩阵划分为 组,每组由 行组成,两个集合 Jaccard 相似度为 。由定理1可知,两个集合最小哈希相等的概率也为 。那么两个集合被哈希到同一个桶中的概率与 Jaccard 相似度存在如下关系:
- 在某个组中,两个集合最小哈希值相等的概率是 。
- 在某个组中,两个集合最小哈希值不相等的概率是 。
- 在所有组中,两个集合最小哈希值都不相等的概率是 。
- 在所有组中存在一个组满足,两个集合最小哈希值相等的概率是 。
即为使用 LSH 判定为相似集合的概率。