我有一套300.000左右的矢量,我想以某种方式进行比较,给出一个矢量我希望能够找到最接近的矢量,我想到了三种方法。矢量之间的测量距离
- 简单的欧氏距离
- 余弦相似
- 使用内核(例如高斯)来计算格拉姆矩阵。
- 将矢量视为离散概率分布(这使得 有意义)并计算一些散度测量。
我真的不明白什么时候做一个而不是另一个有用。我的数据有很多零元素。考虑到这一点,是否有一些一般的经验法则来确定三种方法中哪一种最好?
对不起,我不得不从某处开始...
谢谢!
我有一套300.000左右的矢量,我想以某种方式进行比较,给出一个矢量我希望能够找到最接近的矢量,我想到了三种方法。矢量之间的测量距离
我真的不明白什么时候做一个而不是另一个有用。我的数据有很多零元素。考虑到这一点,是否有一些一般的经验法则来确定三种方法中哪一种最好?
对不起,我不得不从某处开始...
谢谢!
你的问题不太清楚,你是在寻找向量之间的距离度量还是一种有效地找到最近邻居的算法?
如果您的向量仅包含数字类型,例如双精度或整数,则可以使用诸如kd-tree之类的结构高效地找到最近邻居。 (因为你只是在d维空间中查看点)。其他方法见http://en.wikipedia.org/wiki/Nearest_neighbor_search。
否则,选择距离度量和算法非常依赖于向量的内容。
如果你的向量非常稀疏,如果它们是二进制的,你可以使用海明或海林格距离。当您的矢量尺寸较大时,请避免使用欧几里得(请参阅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以了解距离/相似性度量的调查,但本文将其限制为概率分布对。