Ich arbeite mit Simhash, aber auch Minhash ist effektiver.
Aber ich verstehe es nicht.
Bitte erklären Sie mir: Was vorteilhafter Minhash über Simhash?Was vorteilhafter Minhash über Simhash?
Antwort
In Simhash müssen wir keine Hyperebenen speichern. Es hat etwas schlechtere Fehlergrenzen. Simhash lecture
Simhash ist schneller und benötigt in der Regel kleinere Speicheranforderungen als Minhash, ist jedoch dadurch eingeschränkt, dass es nur sehr ähnliche Ähnlichkeiten erkennen kann. Wenn zwei Elemente mehr als eine kleine Menge unterscheiden, wird ihre Ähnlichkeit nicht erkannt. Minhash hingegen kann verwendet werden, um auch ziemlich entfernte Ähnlichkeiten zu erkennen, wie zum Beispiel Gegenstände, die nur 5% Ähnlichkeit zueinander haben. Simhash ist auch ein wenig komplexer zu verstehen.
Minhash beruht auf der Erzeugung mehrerer Hashes pro Element, z. in der Regel irgendwo zwischen 20 und 400 64-Bit-Hashes. Diese Hashes müssen zusammen mit der ID des Elements, zu dem sie gehören, zusammen mit dem Hash-Index gespeichert werden. Um alle Artikel zu finden, die z.B. 50% geschätzte Ähnlichkeit mit einem bestimmten Gegenstand, Sie müssen alle anderen Gegenstände finden, die mindestens 50% der Hashes des gegebenen Gegenstandes teilen. Dies kann das Aufzählen einer ziemlich großen Anzahl von hash-itemID-Paaren beinhalten.
Simhash andererseits verwendet nur einen einzelnen Hash pro Element, z. ein 64-Bit-Hash; und dieser Hash wird so erzeugt, dass sehr ähnliche Items Hashes mit sehr ähnlichen Bitmustern haben. Dieser Hash muss (zusammen mit der ID des Elements) in mehreren Tabellen (z. B. 8 verschiedenen Tabellen) gespeichert werden, wobei jede Tabelle die Bits des Hash auf verschiedene Arten permutiert und jede Tabelle die permutierten Hashes in numerischer Reihenfolge sortiert. Die Verwendung mehrerer Tabellen ermöglicht einen cleveren Trick, mit dem Sie schnell alle Hashes finden können, die sich um höchstens n Bits von einem gegebenen Hash unterscheiden; das Problem ist, dass n nicht groß sein kann: abhängig davon, wie viele Elemente Sie erwarten, zu speichern, wie viele Bits im gesamten Hash und wie viele Tabellen Sie im Speicher halten können, n möglicherweise so niedrig wie 3 oder möglicherweise so hoch wie 6 oder 7.
Minhash und Simhash beide hängen für ihre Geschwindigkeit auf ihre Tabellen im Hauptspeicher gehalten, obwohl beide über mehrere Maschinen aufgeteilt werden können, wenn Sie Speicher Einschränkungen überwinden müssen. Die Methode, einen Simhash zu erstellen, wird durch ein Patent von Google abgedeckt, obwohl sie zumindest den nichtkommerziellen Gebrauch des Algorithmus zu erlauben scheinen.
- 1. Auswahl zwischen SimHash und MinHash für ein Produktionssystem
- 2. SimHash-Implementierung in Java?
- 3. Speichern des Ergebnisses von Minhash
- 4. Hamming Entfernung (Simhash Python) geben unerwarteten Wert
- 5. Wann ist die Verwendung von Instanzvariablen vorteilhafter als die Verwendung von let()?
- 6. Über! [CDATA [, was ist das?
- 7. Was ist MonoPosixHelper.dll alles über?
- 8. Was ist schneller: SUM über NULL oder über 0?
- 9. Was ist schneller? Kopieren über nfs-mount oder über scp?
- 10. Was ist über IIS zu wissen?
- 11. Was muss ich über C++ 0x wissen?
- 12. Was soll ich über Joomla wissen?
- 13. Warum WAS-CE über Apache Geronimo verwenden?
- 14. Was bedeutet es - Login über SSL
- 15. Was entscheidet über die Ausgabedateien in MSBuild?
- 16. über sqlite Offset - Was ich nicht verstehe?
- 17. Manifest.lock gibt Warnung über Podfile.lock, was verursacht?
- 18. Was sind Python Namespaces alles über
- 19. Was ist MySQL "BETWEEN" Leistung über ..?
- 20. Was wissen Sie über Avaloq-Skripte?
- 21. Was muss ich über dynamische Programmierung wissen?
- 22. Verwenden Sie RTMP über Port 80 oder RTMPT über HTTP, was wäre das Beste?
- 23. Was sagt C++ 03 12.4/12 über den Aufruf eines Basisklassen-Destruktors explizit über den Zeiger?
- 24. Ant Junit Tests laufen viel langsamer über ant als über IDE - was zu sehen?
- 25. Was sind gute Online-Communities/Portale über Business Intelligence-Lösungen?
- 26. Spam wird über meine Domain gesendet. Was kann ich tun?
- 27. Was muss ich über XML-Signaturen wissen, damit SAML funktioniert?
- 28. Was bewirkt, dass urllib2.urlopen() eine Verbindung über Proxy herstellt?
- 29. Was sind die Kosten Redis Kanäle über einzelne Redis Kanal
- 30. Was sollte ich über den F # CTP wissen?
Mögliches Duplikat von [Auswahl zwischen SimHash und MinHash für ein Produktionssystem] (http://stackoverflow.com/questions/27712472/choosing-between-simhash-and-minhash-for-a-production-system) – KornMuffin