我有一组300.000左右的向量,我想以某种方式进行比较,给定一个向量,我希望能够找到最接近的向量,我想到了三种方法。
我真的不明白何时做一个而不是另一个有用。我的数据有很多零元素。考虑到这一点,对于这三种方法中哪一种最好,是否有一些一般的大拇指?
对于这个弱问题感到抱歉,但我不得不从某个地方开始......
谢谢!
答案 0 :(得分:0)
您的问题不是很清楚,您是在寻找矢量之间的距离度量,还是在高效查找最近邻居的算法?
如果向量只包含数字类型(如双精度或整数),则可以使用诸如kd-tree之类的结构有效地找到最近邻居。 (因为你只是看着d维空间中的点)。有关其他方法,请参阅http://en.wikipedia.org/wiki/Nearest_neighbor_search。
否则,选择距离度量和算法在很大程度上取决于向量的内容。
答案 1 :(得分:0)
如果你的向量在本质上非常稀疏,如果它们是二进制的,你可以使用汉明或海林格距离。当矢量尺寸较大时,请避免使用欧几里德(参考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进行距离/相似性度量调查,尽管该文件将其限制为概率分布对。