我有一套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以瞭解距離/相似性度量的調查,但本文將其限制爲概率分佈對。