MinHashing vs SimHashing


12

Supponiamo di avere cinque set che vorrei raggruppare. Comprendo che la tecnica di SimHashing descritta qui:

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

potrebbe produrre tre cluster ( {A}, {B,C,D}e {E}), per esempio, se i risultati sono stati:

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

Allo stesso modo, la tecnica MinHashing descritta nel capitolo 3 del libro MMDS:

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

potrebbe anche produrre gli stessi tre cluster se i suoi risultati fossero:

A -> h01 - h02 - h03

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

E -> h11 - h12 - h13

(Ogni set corrisponde a una firma MH composta da tre "bande" e due set sono raggruppati se almeno una delle loro bande di firma è corrispondente. Più bande significherebbe più possibilità di corrispondenza.)

Tuttavia ho diverse domande relative a questi:

(1) SH può essere inteso come una versione a banda singola di MH?

(2) MH implica necessariamente l'uso di una struttura di dati come Union-Find per costruire i cluster?

(3) Ho ragione nel pensare che i cluster, in entrambe le tecniche, sono in realtà "pre-cluster", nel senso che sono solo gruppi di "coppie candidate"?

O(n2)

Risposte:


3

Come sottolineato correttamente sopra, MinHash e SimHash appartengono entrambi a Hashing sensibile alla località. Riferimento: https://en.wikipedia.org/wiki/Locality-sensitive_hashing

La principale differenza tra i due è il modo in cui viene gestita la collisione,

  1. SimHash, usa la somiglianza del coseno
  2. MinHash, utilizza Jaccard Index.

Risposte alle tue domande:

  1. No. Usano diverse tecniche di gestione delle collisioni per convalidare la somiglianza. Inoltre, esiste una variante della funzione Hash singola per Min Hash, ma funziona in modo diverso. Per maggiori dettagli, controlla il seguente riferimento, https://en.wikipedia.org/wiki/MinHash (variante con una singola funzione hash)
  2. Sì, https://github.com/chrisjmccormick/MinHash/blob/master/runMinHashExample.py
  3. O(nlogn)

SimHash e MinHash non usano queste funzioni di somiglianza. Penso che un modo migliore per dire sarebbe che creano digestori che approssimano queste funzioni.
Alexey Grigorev,

@AlexeyGrigorev Sono un po 'confuso. Ho esaminato la seguente implementazione per minHash 'computeSimilarityFromSignatures' @ link . Utilizza un | HashedArray (A) e HashedArray (B) | / (numero totale di voci)
Pramit
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.