具有任意度量的最快 k 最近邻?

Fastest k nearest neighbor with arbitrary metric?

这个问题的难点在于 "arbitrary metric"。如果您不知道那是什么,那只是测量点之间距离的方法。 (在"real"世界中,一维距离就是两点之差的绝对量级)。

够了 pre-lims。我正在尝试找到具有以下属性的快速 k 最近邻算法:

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

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

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

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

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

更新:该算法需要从大约 100 个点中找到大约 12 个点的最近邻居。平均维度可能会很大,比如 50,(我真的还不知道)。是的,我感兴趣的是算法,而不是图书馆。是的,估计可能已经足够好了。

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

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

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