0

何らかの方法で比較したい 300.000 程度のベクトルのセットがあり、1 つのベクトルを指定して、3 つの方法で考えた最も近いベクトルを見つけたいと考えています。

  • 単純なユークリッド距離
  • コサイン類似度
  • グラム行列を計算するには、カーネル (ガウスなど) を使用します。
  • ベクトルを離散確率分布として扱い(これは理にかなっています)、発散測度を計算します。

どちらか一方を実行する方が便利な場合はよくわかりません。私のデータにはゼロ要素がたくさんあります。それを念頭に置いて、3 つの方法のうちどれが最適かについての一般的な経験則はありますか?

弱い質問で申し訳ありませんが、どこかから始めなければなりませんでした...

ありがとうございました!

4

2 に答える 2

0

ベクトルが本質的に非常にまばらで、バイナリの場合は、ハミング距離またはヘリンジャー距離を使用できます。ベクトルの次元が大きい場合は、ユークリッドの使用を避けてください ( http://en.wikipedia.org/wiki/Curse_of_Dimensionityを参照してください) 。

距離/類似度の調査については、 http://citeseerx.ist.psu.edu/viewdoc/download?rep=rep1 &type=pdf&doi=10.1.1.154.8446 を参照してください。ただし、論文では確率分布のペアに限定されています。

于 2015-05-21T16:55:08.347 に答える
0

あなたの質問はあまり明確ではありません.ベクトル間の距離メトリック、または最も近い隣人を効率的に見つけるためのアルゴリズムを探していますか?

ベクトルに double や integer などの数値型のみが含まれている場合は、kd ツリーなどの構造を使用して効率的に最近傍を見つけることができます。(d次元空間の点を見ているだけなので)。他の方法については、http://en.wikipedia.org/wiki/Nearest_neighbor_searchを参照してください。

それ以外の場合、距離メトリックとアルゴリズムの選択は、ベクトルの内容に大きく依存します。

于 2013-10-07T10:10:48.287 に答える