MinHashing vs SimHashing


12

クラスター化する5つのセットがあるとします。ここで説明するSimHashingテクニックは次のとおりです。

https://moultano.wordpress.com/2010/01/21/simple-simhashing-3kbzhsxyg4467-6/

たとえば、結果が次の場合、3つのクラスター({A}{B,C,D}および{E})を生成できます。

A -> h01
B -> h02
C -> h02
D -> h02
E -> h03

同様に、MMDSブックの第3章で説明されているMinHashingテクニック:

http://infolab.stanford.edu/~ullman/mmds/ch3.pdf

結果が次の場合、同じ3つのクラスターを生成することもできます。

A -> h01 - h02 - h03

B -> h04 - h05 - h06
      |
C -> h04 - h07 - h08
                  |
D -> h09 - h10 - h08

E -> h11 - h12 - h13

(各セットは3つの「バンド」で構成されるMHシグネチャに対応し、少なくとも1つのシグネチャバンドが一致する場合は2つのセットがグループ化されます。バンドが多いほど一致する可能性が高くなります。)

ただし、これらに関連するいくつかの質問があります。

(1)SH はMHのシングルバンドバージョンとして理解できますか?

(2)MHは、Union-Findのようなデータ構造を使用してクラスターを構築することを必然的に意味しますか?

(3)クラスターは、どちらの手法でも、「候補ペア」のセットであるという意味で、実際には「事前クラスター」であると考えるのは正しいでしょうか。

(4)(3)がtrueの場合、各「事前クラスター」内で検索を実行し、さらに「実際の」クラスターにさらに分割する必要があることを意味しますか?(小さくてかなりバランスの取れたプレクラスターがたくさんある場合は合理的かもしれませんが、そうでない場合はそれほど多くありません)On2

回答:


3

上記で正しく指摘されているように、MinHashとSimHashはどちらもLocality Sensitive Hashingに属します。参照:https : //en.wikipedia.org/wiki/Locality-sensitive_hashing

2つの主な違いは、衝突の処理方法です。

  1. SimHash、コサイン類似度を使用
  2. MinHash、Jaccard Indexを使用します。

質問への回答:

  1. いいえ。類似性を検証するために異なる衝突処理技術を使用します。また、Min Hashには単一のHash Functionのバリアントがありますが、動作が異なります。詳細については、https://en.wikipedia.org/wiki/MinHash(単一のハッシュ関数を持つバリアント)を参照してください。
  2. はい、https://github.com/chrisjmccormick/MinHash/blob/master/runMinHashExample.py
  3. Onログn

SimHashとMinHashは、これらの類似性関数を使用しません。もっといい言い方をすれば、これらの関数に近いダイジェストを作成することです。
アレクセイ・グリゴレフ

@AlexeyGrigorev私は少し混乱しています。minHash 'computeSimilarityFromSignatures' @ linkの次の実装を調べました。| HashedArray(A)とHashedArray(B)| /(エントリの総数)を使用します
Pramit
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.