寻找最接近向量的算法

时间:2010-04-14 08:22:58

标签: algorithm vector cluster-analysis

我有一组矢量。对于该集合中的向量,我想找到最接近该向量的子集。什么算法可以做到这一点。

3 个答案:

答案 0 :(得分:3)

在矢量中使用余弦相似度(http://en.wikipedia.org/wiki/Cosine_similarity),然后对它们进行排序。

答案 1 :(得分:3)

此类算法称为最近邻 K最近邻

如果向量的方向很重要,cosine similarity作为例外情况将会起作用。如果向量表示空间中的位置,则表示空间中距离的任何度量都将起作用。

例如Euclidean distance:取每个维度中平方和差的平方根。这将为每个向量提供一个距离,然后对在此距离上升的向量集进行排序。

此过程将及时为O(N)。如果这对您来说太慢,您可能需要查看一些常见的K Nearest Neighbour算法。

答案 2 :(得分:1)

如果您的问题与大量数据有关:

我在ddj.com上发布了一个相关的算法,它找到了到给定点的最近的行

Accelerated Search For the Nearest Line

您必须通过将给定矢量转换为多个点来修改此算法。这将大大减少可能的匹配的数量。然后通过

检查每个可能匹配的完全匹配
  • 找到两个向量的切割点或
  • 获取从矢量开始和结束点到可能匹配的距离,如文章
  • 中所述
相关问题