问题标签 [locality-sensitive-hash]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
908 浏览

machine-learning - 寻找相似图像的深度学习模型(局部敏感哈希)

同一物体有不同的图片。图片是从不同的角度拍摄的,所以虽然图片上的对象是一样的,但图片本身可能会有很大的不同。

是否有一个示例或准备使用深度学习模型,该模型将为同一对象的不同图片生成相似/接近的向量?(似乎人脸检测的工作方式有点类似......)

0 投票
0 回答
37 浏览

knn - 我应该混合查询以建立 LSH 索引吗

当我阅读 Multiprobe LSH 和 Multiprobe LSH 性能调整论文时,我在他们的实验中发现,查询是从数据集中随机选择用于索引构建的。必须这样做吗?LSH 可以处理未见点数查询吗?

0 投票
0 回答
205 浏览

database - 当 k > 桶的大小时,用 LSH 找到 k-nn

我一直在阅读有关局部敏感散列的文献,并且我认为对它的工作原理有很好的理解。考虑到单个哈希表的最简单情况,其中每个文档仅在一个存储桶中,我的问题是:

如何找到 k 大于该桶中文档数的 k 最近邻居?

我已经看到了几种方法来实现这一点。有些使用前缀树其他人则按它们的汉明距离对所有桶进行排序。

我的限制:

我的文档 ID与它们各自的存储桶一起存储在PostgreSQL中。表扫描来计算每个桶的汉明距离是不可行的(我有数亿个文档)。我的桶哈希可能是24 位或 32 位(除非有人反对)。有没有人有关于如何进行的经验或建议的方法?

0 投票
0 回答
331 浏览

scala - 如何使用欧几里得或余弦距离通过 karlhigley/spark-neighbors 获得 LSH ANN 的输出

我正在使用来自https://github.com/karlhigley/spark-neighbors的 Locality Sensitive Hashing 与 ANN 合作。我尝试了不同的距离:汉明、欧几里得和余弦;但是当我真的想查看调用方法的结果时,collect()这只适用于汉明距离的情况,其他两个在使用 collect() 时会抛出错误。尽管输出的格式始终相同 org.apache.spark.rdd.RDD[(Long, Array[(Long, Double)])]

如何获得可读格式的输出,例如数组、火花数据框等?

下面是代码:

在查看汉明距离的结果时可以看到所需的输出

但在欧几里得或余弦距离neighbors_euclidean.collect()neighbors_cosine.collect()

在这两种情况下,我都会收到以下错误:

java.lang.IllegalArgumentException:要求失败:A 的列与 x 的元素数不匹配。答:20,x:100

以下是完整的错误:

0 投票
1 回答
105 浏览

matlab - Matlab:将 4-d 矩阵重塑为 2-d 并保持秩序,如何?

我正在尝试使用 California ND Datastet 实现 vlsh,它由 701 张照片组成。10 个主题在一个 txt 文件中记录了哪些照片几乎是重复的,我们也有相关矩阵。图像是 RGB 的,我将它们缩小为 20x20。我创建了一个 20x20x3x701 的 4 维数组。于是我尝试reshape,得到了一个1200x701的矩阵,但是问题是reshape不能保持原矩阵的顺序。我尝试在线搜索,大多数建议是使用“Permute”,但在我看来这不适合我的情况。

我可以发布matlab代码:

0 投票
1 回答
1696 浏览

algorithm - 字符串的位置敏感散列?

是否有字符串的散列函数,这样在小的编辑距离内的字符串(例如,拼写错误)会映射到相同或非常接近的散列值,而不同的字符串往往不会?

0 投票
1 回答
330 浏览

knn - BucketRandomProjectionLSH KNN 参数

我正在尝试使用 spark 2.2.0 中的 KNN 算法。我想知道我应该如何设置我的桶长度。记录数/特征数各不相同,因此我认为最好根据某些条件设置长度。我应该如何设置存储桶长度以获得更好的性能?我将向量中的所有特征重新调整为 0 到 1。

另外,有什么方法可以保证 KNN 算法返回最小数量的元素?我发现有时桶内的元素数量小于查询的 k,结果我可能想要至少一两个邻居。

谢谢~

https://spark.apache.org/docs/latest/api/python/pyspark.ml.html#pyspark.ml.feature.BucketedRandomProjectionLSH

0 投票
1 回答
157 浏览

apache-spark - 无法使用排序找到行,写在 LSH 之后

我在使用 pyspark 的 ALS 算法之后使用了 LSH,一切似乎都很好,直到我意外地看到我在探索过程中丢失了一些行。所有这些都是在 Spark LSH 文档示例https://spark.apache.org/docs/latest/ml-features.html#tab_scala_28的帮助下实现的

当我专门尝试查找 idA == 1 的行时 - 我可以做到。当我执行 repartition(1).write.csv 或排序时-> idA == 1 的所有行都不在表中。有人可以解释这怎么可能?

我已经为 Spark 版本 v2.2.0 使用了 python API,python 版本是 3.6

一点点代码

在此处输入图像描述

PS 我什至尝试将文件写入 csv 并搜索这些 id 和 EuclidianDistance - 如您所见,这一切都不成功。这些丢失的 id 实在太多了(这不仅适用于 id = 1)。也许我不了解 LSH 算法的一些细节,但我自己找不到 spark LSH 行为的逻辑。

0 投票
0 回答
1297 浏览

scala - Uber 的 Spark LSH 中的 numHashTable 使用什么值?

我正在尝试使用.approxSimilarityJoinSpark MLlib LSH: MinHash for Jaccard Distance例如

我知道 numHashTables 越高,系统越准确,计算越复杂/越慢。我有两个关于参数的问题:

  • numHashTables 和 MinHash 指纹大小有什么关系?
  • 如何正确设置值?

注意:我相信该算法已被 Uber 添加到 MLlib:https ://eng.uber.com/lsh/

0 投票
1 回答
274 浏览

bigdata - 使用最小哈希估计集合相似度的最佳排列数

假设我必须估计文档 A 和 B 之间的 jaccard 相似性,并且我使用这些集合/文档的并集的 k 个随机排列来确定文档的签名。

我应该如何设置我的 k 值?因为将它设置为一个非常高的值会显着增加计算时间,所以可以给我一个好的 jaccard 指数估计值的 k 的最小值是多少?

给定容错 e>0 和 delta,我如何确定 k 的最小值,使得 jaccard 索引介于 (1-e)jaccard_estimate 和 (1+e)jaccard_estimate 之间,概率大于或等于 (1-delta) ?

我相信这可以使用 chernoff 不等式界限得出,但我无法弄清楚如何去做。任何帮助,将不胜感激。提前致谢!