2012-03-28 152 views
21

我正在寻找一个支持一个高维的局部敏感哈希近邻查询近均匀分布的数据(在我的情况下,32),还有一些几十万个数据点的数据集一个轻量级的Java库。LSH图书馆在Java中

这完全是足以让在查询一个桶中的所有条目。考虑到我的问题所包含的一些过滤器参数,我可以以不同的方式处理哪些是我真正需要的。

我已经找到了likelike,但希望有一些小的东西,不需要任何其他工具(比如像Apache Hadoop那样的情况)。

+0

你有没有发现?我正在寻找与欧几里得距离一样的我的kNN度量。 – 2012-03-31 08:58:41

+0

不是。但我想我必须自己提出一个实施方案。然而,问题仍然是如何选择好的散列函数... – s1lence 2012-04-01 18:40:31

+1

你可以从http://ttic.uchicago.edu/~gregory/download.html的matlab实现中的散列函数开始 – 2012-04-02 02:52:07

回答

1

有这样一句: ​​

我还没有时间来检验,但至少它编译。

6

也许这一个:

“TarsosLSH是一个Java库实现局部性敏感散列(LSH),对于在次线性时间运行的多维矢量的实际近邻搜索算法它支持多个局部敏感散列(LSH)系列:欧几里得散列家族(L2),城市块散列族(L1)和余弦散列族,图书馆试图在能够完成真正任务的能力中达到最佳状态,并且足够紧凑以作为LSH工作的示范。“

代码可以发现here

1

ELKI数据挖掘框架配备了一个LSH索引。它可以与大多数算法一起使用(任何使用范围或nn搜索的算法),有时效果很好。

在其他情况下,LSH似乎不是一个好方法。正确地获取LSH参数可能非常棘手:如果选择的参数太高,运行时会增加很多(一直到线性扫描)。如果你选择它们太低,那么这个指数就会变得过于接近并失去许多邻居。

这可能与LSH最大的挑战:寻找优秀的参数,即产生所需的加速获得足够好的精度列的索引...