Algorithm 任意度量的最快k近邻?
这个问题的关键是“任意度量”。如果你不知道那是什么,这只是测量点之间距离的方法。(在“真实”世界中,一维距离只是两点之间差值的绝对大小) 足够多的预LIM。我试图找到一种具有以下特性的快速k近邻算法:Algorithm 任意度量的最快k近邻?,algorithm,math,discrete-mathematics,nearest-neighbor,Algorithm,Math,Discrete Mathematics,Nearest Neighbor,这个问题的关键是“任意度量”。如果你不知道那是什么,这只是测量点之间距离的方法。(在“真实”世界中,一维距离只是两点之间差值的绝对大小) 足够多的预LIM。我试图找到一种具有以下特性的快速k近邻算法: 适用于任意度量 有点容易实现 优化用于查找一组点到另一组点的距离 Wikipedia提供了一个算法和方法的列表,但没有任何关于实现的内容 更新:度量是余弦相似性,它不满足三角形的质量要求。然而,我似乎可以使用“角度相似性”(根据维基百科) 更新:用例是自然语言处理。“向量”是给定单词的“上下文
- 适用于任意度量
- 有点容易实现
- 优化用于查找一组点到另一组点的距离
更新:该算法需要从大约100个点中找到大约12个点的最近邻。平均尺寸可能非常大,比如说50,(我真的还不知道)。是的,我感兴趣的是算法,而不是库。是的,估计值可能已经足够好了。我建议您使用位置敏感哈希(LSH),这是目前的趋势。它降低了高维数据的维数,但我不确定您的维数是否与该算法相匹配。更多信息请参见维基百科 您可以使用自己的度量,但通常可以在许多算法中使用。希望这有帮助
你可以选择RKD树,一个由RKD树组成的森林,但现在这可能太多了。我认为这些结构中的许多都不容易用任意的度量编码。出于好奇,你的度量满足三角形不等式吗?这个度量的性质是什么?在一般情况下,没有更简单的答案。@templatetypedef使用不满足三角形不等式的度量来尝试k个最近邻是否可能/有意义?@igavriil Yep!对于任何点,都可以根据度量找到离它最近的k点。这些点不一定要彼此靠近,但它们仍然可以是离我们的主要点最近的k个点。我不知道任意的指标会有什么不同。但是是的,它看起来满足三角形ineq。查看更新这篇研究论文似乎不太实用(见图)…他们测量相似单词的方法不适用(因为dim与系统中的文档/链接总数成比例!)。我要看看“基于字符串”的相似性。但我会把这个标记为答案,因为从技术上讲,它是正确的。谢谢请问你指的是哪篇论文?:)不客气,好问题,顺便提一下,+1。问题中引用了“用于本体论半自动进化的智能系统”。我正在寻找相似性的替代度量(例如:最频繁的K距离),看来我无论如何都会使用LSH。多谢!谢谢你的好问题,这让我质疑自己,你当然应该得到+1!祝你的项目好运!仅供参考,LSH不适用于任意指标。有一个算法,但它隐藏在神秘的数学后面。看见另一种方法似乎是使用q-grams+minhashing+LSH