【发布时间】:2011-09-26 06:56:43
【问题描述】:
我已经有了生成局部敏感哈希的算法,但是我应该如何存储它们以利用它们的特性(即相似的元素具有接近的哈希(具有汉明距离))?
在 matlab 代码中,我发现他们只是在要搜索的点的哈希值和数据库中点的哈希值之间创建一个距离矩阵,以简化代码,同时引用所谓的 Charikar 方法来实现真正的好实现的搜索方法。
我试图搜索它,但我不确定如何将我找到的任何方法应用于我的案例(如多探针方法)。如果您已经拥有哈希值,那么这些技术似乎都不是很容易插入的。是否有任何简单的示例代码?或者有什么建议?
这是我正在谈论的带有 matlab 代码的页面的链接: http://www.eecs.berkeley.edu/~kulis/klsh/klsh.htm
【问题讨论】:
-
对这个问题做一些研究我想出了一个算法,它基本上包括为每个位创建表(在这种情况下)并将所有元素划分为那些设置了该位的元素和那些没有的。对所有位执行此操作。然后,在搜索时,您访问查询的每一位的正确表,这样您就可以使用所有元素来计算查询的距离(一旦您删除了重复项)。
-
所有这一切都考虑到了一个明显的优化,也就是说,在谈到位时,它们要么是 0 要么是 1,所以你真的不需要同时列出它们(也就是说,如果你列出那些设置了位的,这意味着所有其他人都没有)。
-
如果您的 cmets 回答了您自己的问题,您能否将它们作为答案发布并接受(我认为,两天后您可以这样做)?这样其他人可以看到问题更容易解决......
-
@user823699 你好,我看到这是一个很老的问题,但是你实现了吗?我认为您正在谈论我也在尝试实施的KLSH。我没有找到关于你在评论中描述的方法的太多信息,你能告诉我更多关于它的信息吗?
-
我找到了算法here的实现@
标签: matlab nearest-neighbor locality-sensitive-hash