LSH Libraries in Java
2022-09-02 01:58:45
我正在寻找一个轻量级的Java库,它支持最近邻搜索通过局部敏感散列在具有数十万个数据点的高维(在我的例子中为32)数据集中几乎均匀分布的数据。
获取存储桶中用于查询的所有条目就足够了。然后,在考虑我的问题包括的一些过滤器参数的情况下,我可以以不同的方式处理我真正需要的那些。
我已经找到了类似的东西,但希望有一些更小的东西,不需要任何其他工具(比如类似情况下的Apache Hadoop)。
我正在寻找一个轻量级的Java库,它支持最近邻搜索通过局部敏感散列在具有数十万个数据点的高维(在我的例子中为32)数据集中几乎均匀分布的数据。
获取存储桶中用于查询的所有条目就足够了。然后,在考虑我的问题包括的一些过滤器参数的情况下,我可以以不同的方式处理我真正需要的那些。
我已经找到了类似的东西,但希望有一些更小的东西,不需要任何其他工具(比如类似情况下的Apache Hadoop)。
也许这个:
“TarsosLSH是一个实现局部敏感哈希(LSH)的Java库,LSH是一种在亚线性时间内运行的多维向量的实用最近邻搜索算法。它支持多个局部敏感哈希 (LSH) 系列:欧几里得哈希家族 (L2)、城市街区哈希家族 (L1) 和余弦哈希家族。该库试图在足够有能力完成实际任务和足够紧凑以演示LSH的工作原理之间达到最佳平衡点。
代码可以在这里找到
Apache Spark有一个LSH实现:https://spark.apache.org/docs/2.1.0/ml-features.html#locality-sensitive-hashing(API)。
在玩过 tdebatty 和 TarsosLSH 实现之后,我可能会使用 Spark,因为它支持稀疏向量作为输入。tdebatty 需要一个非稀疏的布尔值或 int 数组,而 TarsosLSH Vector 实现是一个非稀疏的双精度数组。这严重限制了人们可以合理支持的维度数量。
此页面提供更多项目的链接,以及相关论文和信息:https://janzhou.org/lsh/。