局部敏感哈希 (LSH) 的关键思想是相邻点v更有可能映射到同一个桶,但彼此相距较远的点更有可能映射到不同的桶。在使用随机投影时,如果数据库包含 N 个样本,每个样本都具有较高的维度 d,那么理论上我们必须创建 k 个随机生成的哈希函数,其中 k 是目标缩减维度,表示为g(**v**) = (h_1(v),h_2(v),...,h_k(v))
。因此,对于任何向量点v,该点都映射到具有 g 函数的 k 维向量。那么哈希码就是长度/维度为k的缩减向量,被视为一个桶。现在,为了增加碰撞概率,理论说我们应该g_1, g_2,...,g_L
随机拥有 L 个这样的 g 函数。这是我不明白的部分。
问题:如何创建多个哈希表?一个哈希表中包含多少个桶?
我正在遵循Sparse Projections for High-Dimensional Binary Codes
Yan Xia 等人在论文中给出的代码。al 代码链接
在文件中Coding.m
dim = size(X_train, 2);
R = randn(dim, bit);
% coding
B_query = (X_query*R >= 0);
B_base = (X_base*R >=0);
X_query
是每个维度为 d 的查询数据集,有 1000 个查询样本;R
是随机投影,位是目标降维。B_query
和的输出B_base
是N
长度k
为 0/1 值的字符串。这种方式是否会创建多个哈希表,即哈希表N
的数量?我很困惑如何。详细的解释将非常有帮助。