这个问题的问题是"任意度量"。如果你不知道那是什么,它只是测量点之间距离的方法。 (在"真实"世界中,1维距离只是两点之间差异的绝对量值)。
足够的前肢。我试图找到具有这些属性的快速k最近邻算法:
维基百科提供了一系列算法和方法,但没有提供实施方案。
更新:度量是余弦相似度,不满足三角形不等式。但是,似乎我可以使用"角度相似性" (根据维基百科)。
更新:用例是自然语言处理。 "载体"是"上下文"给定单词的,由二进制属性表示(例如:文档的标题)。因此虽然可能只有少数属性(现在我只使用3),但每个向量都有任意大的维度(在标题示例中,数据库中的每个标题都对应于向量中的维度)。 / p>
更新:对于好奇的,我实现了这个算法:
http://josquin.cs.depaul.edu/~mramezani/papers/IEEEIS.pdf
更新:算法需要从大约100个点找到大约十几个点的最近邻居。平均尺寸可能非常大,比如50,(我真的不知道)。是的,我对算法感兴趣,而不是图书馆。是的,估计可能还不够好。
答案 0 :(得分:1)
我建议你去寻找局部敏感的散列(LSH),这是现在的趋势。它降低了高维数据的维度,但我不确定你的维度是否适合该算法。有关更多信息,请参阅维基百科page。
您可以使用自己的指标,但通常可以在许多算法中执行此操作。希望这会有所帮助。
你可以选择RKD树,这是他们的森林,但现在这可能太多了。