【问题标题】:Find all k-nearest neighbors查找所有 k 最近邻
【发布时间】:2015-03-27 04:26:18
【问题描述】:

问题:

我有 N(~100m)个字符串,每个 D(例如 100)个字符长并且字母低(例如 4 个可能的字符)。我想为这些 N 点(k ~ 0.1D)中的每一个找到 k 最近邻。相邻字符串通过汉明距离定义。解决方案不一定是最好的,但越接近越好。

对问题的思考

我有一种不好的感觉,这是一个不小的问题。我读过很多论文和算法,但是其中大多数在高维度上的结果很差,并且在维度小于 5 时有效。例如this paper 建议一种有效的算法,但它的常数与维度呈指数关系。

目前,我正在研究如何以保留或可以计算汉明距离的方式减少维度。

另一个选项是locality sensitive hashing,在所选度量下彼此接近的点以高概率映射到同一个桶。有什么帮助吗?你更喜欢哪个选项?

【问题讨论】:

  • "which is the k-nearest neighbors": 你的意思是"which are the k-nearest neighbors" 吗?什么是100m??
  • 是的,我已更正。 100m表示字符串的个数,所以我们有1亿个字符串。

标签: algorithm cluster-analysis computational-geometry hamming-distance


【解决方案1】:

之前提出的一个问题有一些很好的讨论,所以你可以参考一下,

Nearest neighbors in high-dimensional data?

除此之外,你还可以看看,

http://web.cs.swarthmore.edu/~adanner/cs97/s08/papers/dahl_wootters.pdf

分析不同方法的论文很少,

http://www.jmlr.org/papers/volume11/radovanovic10a/radovanovic10a.pdf

https://www.cse.ust.hk/~yike/sigmod09-lsb.pdf

【讨论】:

  • 感谢您的快速回复!我会调查的
  • 我记得看到过其他非常相似的关于字符串相似度与小字母表的问题。尝试在 SO 上搜索更多内容。
  • 您提到的所有材料都与连续空间有关,我认为将离散空间更改为连续空间是行不通的,因为数据不会在所有空间中传播。此外,我的问题中的测量是汉明距离,但是这些材料使用欧几里得距离。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-12
  • 2011-05-09
  • 1970-01-01
  • 2018-04-08
  • 2014-05-14
  • 2011-12-06
  • 1970-01-01
相关资源
最近更新 更多