在二次时间发现相似的向量


9

d:{0,1}k×{0,1}kR是我们称为相似函数的函数。相似度函数的例子有余弦距离,l2 范数,汉明距离,Jaccard相似度等。

考虑 n 长度的二进制向量 kv({0,1}k)n

我们的目标是对相似的向量进行分组。更正式地说,我们要计算一个相似度图,其中节点是向量,边表示相似的向量(d(v,u)ϵ)。

nk 是非常大的数字,并且比较两个长度 k 向量很昂贵,我们不能做所有的蛮力 O(n2)操作。我们想要用更少的操作来计算相似度图。

这可能吗?如果不能,我们可以计算出一个近似图,其中包含相似图中的所有边加上最多O(1) 其他边缘?


应该是 ϵ 而不是 ϵ
usul 2014年

@usul感谢您的评论:)在这里,我们希望对高度相似的项目进行分组。我已经编辑了问题,希望现在已经清楚了。
拉姆

在我看来,您可以使用“相似性保留哈希”(arxiv.org/pdf/1311.7662v1.pdf)来减少问题的范围。
RB

4
这个问题根本没有明确定义,请提供更多详细信息。例如,如果d是由oracle给出的,那么您显然不能做得比。(n2)
domotorp 2014年

5
你为推特工作吗?blog.twitter.com/2014/all-pairs-similarity-via-dimsum 认真地说,即使要检测该图中是否存在边(即,它不是一组独立的顶点),也很难比用于任意相似函数。O(n2)
瑞安·威廉姆斯

Answers:


5

可能有一种方法可以解决约翰逊-林登斯特劳斯定理这一问题。本质上,JL声明您可以将高维数据投影到低维空间中,从而几乎保持成对的距离。实际上,Achlioptas撰写了一篇名为数据库友好的随机投影的文章:具有二进制硬币的Johnson-Lindenstrauss,它以随机方式进行此投影,在实践中效果很好。

当然,现在,您的相似度函数与JL定理中的相似度并不完全相同。但是,它看起来像是一个距离函数,也许上面的某些理论可能会有所帮助。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.