22

我正在寻找一个轻量级的 Java 库,该库支持按位置敏感散列的最近邻搜索,用于在具有数十万个数据点的高维(在我的情况下为 32)数据集中几乎均匀分布的数据。

获取存储桶中的所有条目以进行查询是完全足够好的。考虑到我的问题包括的一些过滤器参数,然后可以以不同的方式处理我真正需要的那些。

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

4

5 回答 5

5

也许这个:

“TarsosLSH 是一个实现局部敏感散列 (LSH) 的 Java 库,这是一种在亚线性时间内运行的多维向量的实用最近邻搜索算法。它支持多个局部敏感散列 (LSH) 系列:欧几里得散列系列 (L2)、城市块哈希系列(L1)和余弦哈希系列。该库试图在有足够能力完成实际任务和足够紧凑以作为 LSH 工作原理的演示之间达到最佳平衡点。

代码可以在这里找到

于 2014-02-24T07:44:32.880 回答
1

这里还有一个: https ://github.com/allenlsy/knn

它对 KNN 使用 LSH。我目前正在研究它的可用性=)

于 2013-05-03T12:12:48.710 回答
1

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

在其他情况下,LSH 似乎不是一个好方法。获得正确的 LSH 参数可能非常棘手:如果您选择的某些参数过高,运行时间会增长很多(一直到线性扫描)。如果您将它们选得太低,则索引会变得过于近似并且会输给许多邻居。

这可能是 LSH 的最大挑战:找到好的参数,产生所需的加速从索引中获得足够好的准确性......

于 2014-04-05T10:37:53.393 回答
1

有这个: http ://code.google.com/p/lsh-clustering/

我没有时间测试它,但至少它可以编译。

于 2012-05-22T18:53:10.230 回答
1

Apache Spark 有一个 LSH 实现:https ://spark.apache.org/docs/2.1.0/ml-features.html#locality-sensitive-hashing ( API )。

在玩过tdebattyTarsosLSH实现之后,我可能会使用 Spark,因为它支持稀疏向量作为输入。tdebatty 需要一个非稀疏的布尔值或整数数组,而 TarsosLSH Vector 实现是一个非稀疏的双精度数组。这严重限制了可以合理支持的维度数量。

本页提供更多项目的链接,以及相关论文和信息:https ://janzhou.org/lsh/ 。

于 2019-01-08T17:44:34.530 回答