查找最近的向量

时间:2018-11-10 09:51:39

标签: algorithm search

我们有一个向量列表,这些向量的尺寸大于2(维度可以是10、32、64或15),并且任意向量作为输入。

需要从向量列表中找到最接近输入向量的

(例如:10000和10001是闭合向量,但是10111和10000不是闭合向量),但是没有完全通过列表。我知道有几种最邻近搜索算法,可以让我们找到最相似的元素:kd-trees,Voronoi图,但它们的目的是在平面或3维空间中找到元素。

有没有算法可以找到最接近的矢量,其维数大于2?

1 个答案:

答案 0 :(得分:0)

nearest-neighbour search的几乎所有索引结构都支持多维数据。

例如KD-TreesR-Trees非常适合于低维数据(d <5-10)。当维数增加时,您会遇到curse of dimensionality,并且大多数索引结构会退化(它们的选择性降低)。

除了20个维度(这只是经验法则和高度依赖数据分布)之外,这些传统索引结构没有对数据进行全面扫描带来任何好处。然后,您可以

  • 尝试优化此扫描(例如,在距离计算或VA-File期间尽早停止)
  • 使用快速的近似最近邻方法(例如locality sensitive hashing),但不能保证返回最近邻(但通常是近邻)