ベクトルのセットがあります。そのセット内のベクトルについて、このベクトルに最も近いサブセットを見つけるのが好きです。これを行うことができるアルゴリズムは何ですか。
3 に答える
このクラスのアルゴリズムはNearest NeighborまたはK Nearest Neighborと呼ばれます。
ベクトルの方向が重要な場合、excepeiont が言うコサインの類似性が機能します。ベクトルが空間内の位置を表す場合、空間内の距離を表す任意のメトリックが機能します。
たとえば、ユークリッド距離: 各次元の差の二乗和の平方根をとります。これにより、各ベクトルの距離が得られ、この距離でベクトルのセットを昇順に並べ替えます。
このプロセスは、時間的には O(N) になります。これが遅すぎる場合は、いくつかの一般的なK Nearest Neighborアルゴリズムを確認することをお勧めします。
ベクトル間のコサイン類似度 ( http://en.wikipedia.org/wiki/Cosine_similarity ) を使用してから、それらを並べ替えます。
問題が大量のデータに関連している場合:
ddj.comで関連するアルゴリズムを公開しました。これは、特定のポイントに最も近い線を検索します。
つまり、与えられたベクトルをいくつかの点に変換することによって、このアルゴリズムを変更する必要があります。これにより、一致する可能性のある数が大幅に減少します。次に、一致する可能性のあるものごとに完全一致をチェックする必要があります。
- 両方のベクトルのカッティングポイントを見つけるまたは
- 記事で説明されているように、ベクトルの始点と終点から可能な一致までの距離を取得します