问题标签 [lsh]

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 回答
819 浏览

python - 数据草图:MinHash LSH 森林

我正在尝试为最近邻搜索创建一个 forst,但我不确定我做对了,或者即使 MinHash / LSH 是否适合我的数据。我问这个是因为结果不可用。

我正在尝试按照文档中的示例进行操作。

我的数据:

512 个维度,例如值有点像 0 或 1 这实际上可用于 MinHash / LSH 吗?如果是,我将如何为每条记录构造 MinHash?

据我了解,minhash 的重点已经是将数据映射到这样的位结构?所以我可以把这些位加载进去吗?如h = MinHash(num_perm=512, hashvalues=listOfBits)?

0 投票
0 回答
894 浏览

scala - 如何减少火花中的 approxSimilarityJoin 引起的随机写入?

我正在使用 approxSimilarityJoin 来查找两组之间的 Jaccard 相似度。

对于 16 GB 的数据集,我得到了大约 270 GB 的随机写入,即使在服务器(3 个工作节点,每个节点有 64 GB RAM 和 64 个内核)上也需要超过 3 小时。

我浏览了以下链接:-
[ LSH Spark 永远卡在 approxSimilarityJoin() 函数上,但它对我不起作用。

我还浏览了 databricks 网站,他们将运行时与数据大小进行了比较。对于以 MB 为单位的数据,即 436 MB,大约SimilarityJoin 需要 25 分钟。对于像 GB 这样的数据集,它会产生问题。[ https://databricks.com/blog/2017/05/09/detecting-abuse-scale-locality-sensitive-hashing-uber-engineering.html]

我们可以通过对代码/服务器配置进行一些更改来减少这种随机写入,还是 approxSimilarityJoin 函数存在问题?有没有其他有效的方法来计算大型数据集上的 Jaccard 相似度?

0 投票
1 回答
228 浏览

apache-spark - Java Spark:在分类数据的情况下为 aprroxNearestNeighbor 创建关键向量

我正在尝试为分类数据集找到近似最近的邻居。为此,我正在使用MinHashLSHSpark 中存在的模型。

我的数据集有分类数据。所以我使用StringIndexer后跟OneHotEncoderEstimator后跟VectorAssembler将分类值转换为连续值。

现在我想从我的数据集中找到给定键的最近邻居,这个键应该是向量形式。我无法找到将分类键转换为连续向量的方法。

如何从分类键key为方法创建(数字连续向量) ?approxNearestNeighbors

0 投票
1 回答
165 浏览

apache-spark-sql - 如何使用 Spark 中的 scala 将 RDD[DataFrame] 中的所有 DataFrame 合并到 DataFrame 而不使用 for 循环?

val 结果是一个火花 DataFram,其列是 [uid: Int, vector: Vector]。但是recomRes的类型是RDD[DataFrame],我如何将recomRes中的所有结果映射到一个DataFrame?

我试过用for循环来处理,但是非常非常慢。

0 投票
1 回答
1163 浏览

apache-spark - 奇怪的性能问题 Spark LSH MinHash approxSimilarityJoin

我正在使用 Apache Spark ML LSH 的 approxSimilarityJoin 方法加入 2 个数据集,但我看到了一些奇怪的行为。

在(内部)加入之后,数据集有点倾斜,但是每次一个或多个任务都需要花费过多的时间才能完成。

sparkui-1

如您所见,每个任务的中位数是 6 毫秒(我在较小的源数据集上运行它来测试),但 1 个任务需要 10 分钟。它几乎不使用任何 CPU 周期,它实际上连接了数据,但速度如此之慢。下一个最慢的任务在 14 秒内运行,记录多 4 倍,实际上溢出到磁盘。

如果你看sparkuisql

join本身是pos&hashValue(minhash)上两个数据集的内连接,按照minhash规范&udf计算匹配对之间的jaccard距离。

分解哈希表:

杰卡德距离函数:

处理数据集的加入:

我尝试过缓存、重新分区甚至启用的组合spark.speculation,但都无济于事。

数据由必须匹配的带状疱疹地址文本组成: 53536, Evansville, WI=>53, 35, 36, ev, va, an, ns, vi, il, ll, le, wi 将与城市或邮政编码中存在拼写错误的记录有很短的距离。

这给出了非常准确的结果,但可能是连接偏差的原因。

我的问题是:

  • 什么可能导致这种差异?(一项任务需要很长时间,即使它的记录较少)
  • 如何在不损失准确性的情况下防止 minhash 中的这种偏差?
  • 有没有更好的方法来大规模地做到这一点?(我不能 Jaro-Winkler / levenshtein 将数百万条记录与位置数据集中的所有记录进行比较)
0 投票
1 回答
70 浏览

python - 返回由逗号分隔的相同变量的函数

我不明白这个函数返回两个变量的意义,它们是相同的:

似乎多余,但必须有充分的理由,我只是不明白为什么。也许是因为有两个返回语句?如果 'h' 为真,它是否返回两个返回语句?调用函数如下所示:

数据集和函数调用如下所示:

github位置:lsh/LHS

0 投票
1 回答
142 浏览

hash - 局部敏感散列可以应用于动态维数据点吗?

例如,假设我们有一些长度不同的向量,我们想要做的是测量每两对这些向量之间的相似性。我们必须考虑的是这些向量的维度是随时间变化的。我们可以这样做吗?

0 投票
2 回答
135 浏览

data-mining - LSH:解决 EXACT Near Neighbor Search?

我很好奇是否可以使用 LSH 找到精确匹配。在麻省理工学院关于 LSH 的网站上,他们说:

Locality-Sensitive Hashing (LSH) 是一种用于解决高维空间中的近似或精确近邻搜索的算法

https://www.mit.edu/~andoni/LSH/

我有点在互联网和谷歌学者上进行了一些搜索,但似乎没有任何迹象。有谁知道这是否可能并且可以将我指向有关它的论文?非常感激。

0 投票
0 回答
505 浏览

numpy - 在 EMR 中使用 Spark LSH 时出现“设备上没有剩余空间”错误和 SIGTERM 信号

Spark version-2.3.2
EMR - 5.19.0
8 Executors
每个执行器 - 5 core

我正在尝试做的事情:-
1. s3 中有数百万个 numpy 功能(.npy 文件)。
2. 使用 spark 下载所有 numpy 特征向量。
3. 将它们转换为 Spark Dataframes,其中 Dataframe 架构是特征名称(字符串)和特征向量(VectorUDT)。
4.然后在数据帧之间使用spark找到LSH。

代码:-

错误:-

提交脚本:-

在某些情况下,执行程序因 SIGTERM 信号而死,我可以在日志文件中看到。我在这里做错了什么?

0 投票
1 回答
1945 浏览

dataframe - 是否可以将自定义类对象作为列值存储在 Spark Data Frame 中?

我正在使用 LSH 算法研究重复文档检测问题。为了处理大规模数据,我们使用了 spark。

我有大约 300K 文档,每个文档至少 100-200 字。在 Spark 集群上,这些是我们在数据帧上执行的步骤。

  1. 运行 Spark ML 管道以将文本转换为标记。
  1. 对于每个文档,使用 datasketch( https://github.com/ekzhu/datasketch/ ) 库获取 MinHash 值并将其存储为新列。

第二步失败,因为 spark 不允许我们将自定义类型值存储为列。Value 是 MinHash 类的对象。

有谁知道我如何将 Minhash 对象存储在数据框中?