0

我有一组 300.000 个左右的向量,我想以某种方式进行比较,并且给定一个向量,我希望能够找到我想到的三种方法中最接近的向量。

  • 简单欧几里得距离
  • 余弦相似度
  • 使用内核(例如 Gaussian)来计算 Gram 矩阵。
  • 将向量视为离散概率分布(这样做是有意义的)并计算一些散度度量。

我真的不明白什么时候做一个而不是另一个有用。我的数据有很多零元素。考虑到这一点,对于这三种方法中哪一种最好,是否有一些一般的经验法则?

抱歉这个弱问题,但我必须从某个地方开始......

谢谢!

4

2 回答 2

0

您的问题不太清楚,您是在寻找向量之间的距离度量,还是寻找有效找到最近邻居的算法?

如果您的向量仅包含数字类型,例如双精度数或整数,您可以使用 kd-tree 等结构有效地找到最近邻。(因为您只是在查看 d 维空间中的点)。有关其他方法,请参见http://en.wikipedia.org/wiki/Nearest_neighbor_search 。

否则,选择距离度量和算法在很大程度上取决于向量的内容。

于 2013-10-07T10:10:48.287 回答
0

如果您的向量本质上非常稀疏并且它们是二进制的,则可以使用 Hamming 或 Hellinger 距离。当您的矢量尺寸很大时,请避免使用欧几里得(请参阅http://en.wikipedia.org/wiki/Curse_of_dimensionality

请参阅http://citeseerx.ist.psu.edu/viewdoc/download?rep=rep1&type=pdf&doi=10.1.1.154.8446了解距离/相似性度量的调查,尽管本文将其限制为一对概率分布。

于 2015-05-21T16:55:08.347 回答