【问题标题】:Fastest k nearest neighbor with arbitrary metric?具有任意度量的最快 k 最近邻?
【发布时间】:2015-04-26 21:21:16
【问题描述】:

这个问题的问题是“任意度量”。如果您不知道那是什么,那只是测量点之间距离的方法。 (在“真实”世界中,一维距离只是两点之间差异的绝对大小)。

足够的预赛。我正在尝试找到具有这些属性的快速 k 最近邻算法:

  • 适用于任意指标
  • 有点容易实现
  • 针对查找一组点到另一组点的距离进行了优化

维基百科给出了算法和方法的列表,但没有关于实现的内容。

更新:度量是余弦相似度,它满足三角形不等式。但是,我似乎可以使用“角度相似性”(根据维基百科)。

更新:用例是自然语言处理。 “向量”是给定单词的“上下文”,由二进制属性表示(例如:文档的标题)。所以虽然可能只有几个属性(现在我只使用 3 个),但每个向量都有任意大的维度(在标题示例中,数据库中的每个标题都对应于向量中的一个维度)。

更新:出于好奇,我正在实现这个算法:

http://josquin.cs.depaul.edu/~mramezani/papers/IEEEIS.pdf

更新:该算法需要从大约 100 个点中找到大约 12 个点的最近邻。平均尺寸可能会非常大,比如 50,(我真的不知道)。是的,我对算法感兴趣,而不是库。是的,估计可能已经足够了。

【问题讨论】:

  • 我认为这些结构中的许多都不容易用任意度量编码。出于好奇,您的度量是否满足三角不等式?
  • 这个指标的属性是什么?在一般情况下,没有更简单的答案。
  • @templatetypedef 用不满足三角不等式的度量来尝试 k 最近邻是否可能/有意义?
  • @igavriil 是的!对于任意一点,你可以根据度量找到离它最近的k个点。这些点不一定要彼此靠近,但它们仍然可以是离我们的主要点最近的 k 个点。
  • 不知道任意指标会产生影响。但是,是的,它看起来满足三角形 ineq。查看更新

标签: algorithm math discrete-mathematics nearest-neighbor


【解决方案1】:

我建议您使用当前流行的局部敏感哈希 (LSH)。它降低了高维数据的维数,但我不确定你的维数是否能很好地适应该算法。更多信息请参见维基百科page

您可以使用自己的指标,但通常您可以在许多算法中这样做。希望这会有所帮助。

你可以选择 RKD 树,一片森林,但现在可能太多了。

【讨论】:

  • 看来研究论文不是很实用(去图)......他们测量相似词的方式没有规模(因为暗淡与文档/链接的总数成正比系统!)。将检查“基于字符串”的相似性。但是会将其标记为答案,因为从技术上讲它是。谢谢!
  • 请问您指的是哪篇论文? :) 不客气,好问题顺便说一句,+1。
  • 问题中引用了“本体半自动进化的智能系统”。正在寻找替代的相似性度量(例如:最常见的 K 距离),看来我还是会使用 LSH。非常感谢!
  • 感谢您提出的好问题,这让我质疑自己,您当然值得 +1!祝你的项目好运!
  • 仅供参考,LSH 并不真正适用于任意指标。有一种算法,但它隐藏在神秘的数学背后。见stackoverflow.com/questions/17875885/…。另一种似乎是使用 q-grams + minhashing + LSH
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-12
  • 2011-12-06
  • 1970-01-01
  • 2019-05-26
  • 2015-03-27
  • 2018-04-08
  • 2014-05-14
相关资源
最近更新 更多