MinHashing vs SimHashing

12

Supposons que j'ai cinq ensembles que j'aimerais regrouper. Je comprends que la technique SimHashing décrite ici:

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

pourrait produire trois grappes ( {A}, {B,C,D}et {E}), par exemple, si ses résultats étaient:

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

De même, la technique MinHashing décrite dans le chapitre 3 du livre MMDS:

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

pourrait également produire les trois mêmes grappes si ses résultats étaient:

A -> h01 - h02 - h03

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

E -> h11 - h12 - h13

(Chaque ensemble correspond à une signature MH composée de trois «bandes», et deux ensembles sont regroupés si au moins une de leurs bandes de signature correspond. Plus de bandes signifieraient plus de chances de correspondance.)

Cependant, j'ai plusieurs questions à ce sujet:

(1) SH peut-il être compris comme une version à bande unique de MH?

(2) MH implique-t-il nécessairement l'utilisation d'une structure de données comme Union-Find pour construire les clusters?

(3) Ai-je raison de penser que les clusters, dans les deux techniques, sont en fait des "pré-clusters", en ce sens qu'ils ne sont que des ensembles de "paires candidates"?

O(n2)

cjauvin
la source

Réponses:

3

Comme indiqué correctement ci-dessus, MinHash et SimHash appartiennent tous les deux à Hashing sensible à la localité. Référence: https://en.wikipedia.org/wiki/Locality-sensitive_hashing

La principale différence entre les deux est la façon dont la collision est gérée,

  1. SimHash, utilise la similitude cosinus
  2. MinHash, utilise Jaccard Index.

Réponses à vos questions:

  1. Non. Ils utilisent différentes techniques de gestion des collisions pour valider la similitude. Il existe également une variante de la fonction de hachage unique pour Min Hash, mais cela fonctionne différemment. Pour plus de détails, consultez la référence suivante, https://en.wikipedia.org/wiki/MinHash (variante avec une seule fonction de hachage)
  2. Oui, https://github.com/chrisjmccormick/MinHash/blob/master/runMinHashExample.py
  3. O(nJournaln)
Pramit
la source
SimHash et MinHash n'utilisent pas ces fonctions de similitude. Je pense qu'une meilleure façon de dire que ce serait qu'ils créent des résumés qui se rapprochent de ces fonctions.
Alexey Grigorev
@AlexeyGrigorev Je suis un peu confus. Je regardais dans la mise en œuvre suivante pour « computeSimilarityFromSignatures » minHash @ lien . Il utilise un | HashedArray (A) & HashedArray (B) | / (nombre total d'entrées)
Pramit