问题标签 [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.
machine-learning - 寻找相似图像的深度学习模型(局部敏感哈希)
同一物体有不同的图片。图片是从不同的角度拍摄的,所以虽然图片上的对象是一样的,但图片本身可能会有很大的不同。
是否有一个示例或准备使用深度学习模型,该模型将为同一对象的不同图片生成相似/接近的向量?(似乎人脸检测的工作方式有点类似......)
knn - 我应该混合查询以建立 LSH 索引吗
当我阅读 Multiprobe LSH 和 Multiprobe LSH 性能调整论文时,我在他们的实验中发现,查询是从数据集中随机选择用于索引构建的。必须这样做吗?LSH 可以处理未见点数查询吗?
database - 当 k > 桶的大小时,用 LSH 找到 k-nn
我一直在阅读有关局部敏感散列的文献,并且我认为对它的工作原理有很好的理解。考虑到单个哈希表的最简单情况,其中每个文档仅在一个存储桶中,我的问题是:
如何找到 k 大于该桶中文档数的 k 最近邻居?
我已经看到了几种方法来实现这一点。有些使用前缀树。其他人则按它们的汉明距离对所有桶进行排序。
我的限制:
我的文档 ID与它们各自的存储桶一起存储在PostgreSQL中。全表扫描来计算每个桶的汉明距离是不可行的(我有数亿个文档)。我的桶哈希可能是24 位或 32 位(除非有人反对)。有没有人有关于如何进行的经验或建议的方法?
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
以下是完整的错误:
matlab - Matlab:将 4-d 矩阵重塑为 2-d 并保持秩序,如何?
我正在尝试使用 California ND Datastet 实现 vlsh,它由 701 张照片组成。10 个主题在一个 txt 文件中记录了哪些照片几乎是重复的,我们也有相关矩阵。图像是 RGB 的,我将它们缩小为 20x20。我创建了一个 20x20x3x701 的 4 维数组。于是我尝试reshape,得到了一个1200x701的矩阵,但是问题是reshape不能保持原矩阵的顺序。我尝试在线搜索,大多数建议是使用“Permute”,但在我看来这不适合我的情况。
我可以发布matlab代码:
algorithm - 字符串的位置敏感散列?
是否有字符串的散列函数,这样在小的编辑距离内的字符串(例如,拼写错误)会映射到相同或非常接近的散列值,而不同的字符串往往不会?
knn - BucketRandomProjectionLSH KNN 参数
我正在尝试使用 spark 2.2.0 中的 KNN 算法。我想知道我应该如何设置我的桶长度。记录数/特征数各不相同,因此我认为最好根据某些条件设置长度。我应该如何设置存储桶长度以获得更好的性能?我将向量中的所有特征重新调整为 0 到 1。
另外,有什么方法可以保证 KNN 算法返回最小数量的元素?我发现有时桶内的元素数量小于查询的 k,结果我可能想要至少一两个邻居。
谢谢~
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 行为的逻辑。
scala - Uber 的 Spark LSH 中的 numHashTable 使用什么值?
我正在尝试使用.approxSimilarityJoin
Spark MLlib LSH: MinHash for Jaccard Distance例如
我知道 numHashTables 越高,系统越准确,计算越复杂/越慢。我有两个关于参数的问题:
- numHashTables 和 MinHash 指纹大小有什么关系?
- 如何正确设置值?
注意:我相信该算法已被 Uber 添加到 MLlib:https ://eng.uber.com/lsh/
bigdata - 使用最小哈希估计集合相似度的最佳排列数
假设我必须估计文档 A 和 B 之间的 jaccard 相似性,并且我使用这些集合/文档的并集的 k 个随机排列来确定文档的签名。
我应该如何设置我的 k 值?因为将它设置为一个非常高的值会显着增加计算时间,所以可以给我一个好的 jaccard 指数估计值的 k 的最小值是多少?
给定容错 e>0 和 delta,我如何确定 k 的最小值,使得 jaccard 索引介于 (1-e)jaccard_estimate 和 (1+e)jaccard_estimate 之间,概率大于或等于 (1-delta) ?
我相信这可以使用 chernoff 不等式界限得出,但我无法弄清楚如何去做。任何帮助,将不胜感激。提前致谢!