5

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

4

3 回答 3

4

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

如果向量的方向很重要,则余弦相似性如例外所说的将起作用。如果向量表示空间中的位置,则任何表示空间距离的度量都将起作用。

例如欧几里得距离:取每个维度的平方差之和的平方根。这将为您提供每个向量的距离,然后按此距离对向量集进行排序。

这个过程将是 O(N) 的时间。如果这对你来说太慢了,你可能想看看一些常见的K 最近邻算法。

于 2010-04-14T08:36:23.420 回答
3

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

于 2010-04-14T08:25:30.037 回答
2

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

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

加速搜索最近的线路

您必须通过将给定向量转换为多个点来修改此算法。这将大大减少可能匹配的数量。然后必须通过以下方式检查每个可能的匹配项的精确匹配

  • 找到两个向量的切割点或
  • 获取从向量起点和终点到可能匹配的距离,如文章中所述
于 2010-04-14T10:11:34.247 回答