我正在实现一个近邻搜索应用程序,它将找到类似的文档。到目前为止,我已经阅读了很多 LSH 相关材料(LSH 背后的理论有点令人困惑,我还不能 100% 理解它)。
我的代码能够使用 minhash 函数计算签名矩阵(我接近尾声)。我还在签名矩阵上应用了条带策略。但是我无法理解如何将带中的签名向量(列)散列到桶中。
我的最后一个问题可能是最重要的一个,但我必须问一些introduction
问题:
q1:散列函数是否只会将相同的向量映射到同一个桶?(假设我们有足够的桶)
q2:哈希函数是否应该将相似的向量映射到同一个桶?如果是,那么这种相似性的程度/定义是什么,因为我不是在计算比较,而是在做散列。
q3:根据上面的问题,我应该使用什么样的哈希表算法?
q4:我认为我最弱的一点是我不知道如何生成一个以向量作为输入并选择一个桶作为输出的哈希函数。我可以根据 q1 和 q2 自己实现一个......关于为 LSH 生成散列函数有什么建议bucketing
吗?