Ich stimme dafür, diese Frage zu schließen, da Theoriefragen zum maschinellen Lernen (ML) bei Stack Overflow – Geschenkverpackungskandidat für Cross-Validated – nicht zum Thema gehören
Ich leihe mir zwei Dias aus Benjamin Van Durme & Ashwin Lall, ACL2010 und versuchen Sie, die Intuitionen der LSH-Familien für die Cosinus-Distanz ein wenig zu erklären.
In der Abbildung gibt es zwei Kreise mit rot und gelb farbig, die zwei zweidimensionale Datenpunkte darstellen. Wir versuchen, ihre zu finden Kosinusähnlichkeit mit LSH.
Die grauen Linien sind einige gleichmäßig zufällig ausgewählte Ebenen.
Je nachdem, ob sich der Datenpunkt über oder unter einer grauen Linie befindet, markieren wir dieses Verhältnis als 0/1.
In der oberen linken Ecke befinden sich zwei Reihen mit weißen/schwarzen Quadraten, die jeweils die Signatur der beiden Datenpunkte darstellen. Jedes Quadrat entspricht einem Bit 0 (weiß) oder 1 (schwarz).
Sobald Sie also einen Pool von Flugzeugen haben, können Sie die Datenpunkte mit ihrer Position in Bezug auf die Flugzeuge codieren. Stellen Sie sich vor, dass, wenn wir mehr Flugzeuge im Pool haben, die in der Signatur codierte Winkeldifferenz näher an der tatsächlichen Differenz liegt. Denn nur Ebenen, die sich zwischen den beiden Punkten befinden, geben den beiden Daten unterschiedliche Bitwerte.
Nun schauen wir uns die Signatur der beiden Datenpunkte an. Wie im Beispiel verwenden wir nur 6 Bits (Quadrate), um alle Daten darzustellen. Dies ist der LSH-Hash für die ursprünglichen Daten, die wir haben.
Die Hamming-Distanz zwischen den beiden Hash-Werten beträgt 1, da sich ihre Signaturen nur um 1 Bit unterscheiden.
Unter Berücksichtigung der Länge der Unterschrift können wir ihre Winkelähnlichkeit wie in der Grafik gezeigt berechnen.
Warum wird es als lokalitätssensitiv bezeichnet? Weil die Zuordnung jedes Bits von der Lokalität des Datenpunkts zu jedem Plan abhängt?
– Nawara
3. Juni 2013 um 20:31 Uhr
lokalitätssensitiv – nahe beieinander liegende Datenpunkte werden ähnlichen Hashes zugeordnet (mit hoher Wahrscheinlichkeit im gleichen Bucket).
– grün
5. Juni 2013 um 22:42 Uhr
Entschuldigung, ich bin spät in diesem Thema, aber ich hatte eine Frage zum Kosinus. Die Darstellung besagt, dass der Bitwert eins ist, wenn das Skalarprodukt zwischen dem tatsächlichen Vektor und dem Ebenenvektor >= 0 ist, oder sonst 0. Was ist die Richtung des Ebenenvektors, weil Winkel zwischen 90 Grad und 180 Grad auch ein ergeben Kosinus, der negativ ist. Ich nehme an, jede Ebene besteht aus zwei Vektoren und wir nehmen den kleineren Winkel, der mit dem tatsächlichen Vektor gebildet wird.
– vkaul11
17. Juli 2013 um 21:53 Uhr
Vielen Dank. Ist es also richtig zu sagen, dass h die Winkeldifferenz und b die “Präzision” codiert? So verstehe ich h * PI ist Theta in Radiant und b die Genauigkeit des Winkels.
– Benutzer305883
19. Januar 2017 um 23:10 Uhr
Die Folie, die Sie bereitgestellt haben, ist sehr ordentlich: cs.jhu.edu/~vandurme/papers/VanDurmeLallACL10-slides.pdf – könnten Sie bitte auch die mathematische Logik des “Pooling-Tricks” erklären – oder die Konzepte der linearen Algebra, die ich betrachten sollte, um es zu verstehen?
– Benutzer305883
19. Januar 2017 um 23:17 Uhr
mvogiatzis
Tweets im Vektorraum können ein großartiges Beispiel für hochdimensionale Daten sein.
Sehen Sie sich meinen Blog-Beitrag zur Anwendung von Locality Sensitive Hashing auf Tweets an, um ähnliche Tweets zu finden.
Hier ist eine Präsentation von Stanford, die es erklärt. Es machte einen großen Unterschied für mich. In Teil zwei geht es mehr um LSH, aber in Teil eins geht es auch darum.
Ein Bild der Übersicht (In den Folien gibt es noch viel mehr):
Warum nicht einfach Minhash direkt als LSH-Funktion verwenden?
– Thomas Ahle
7. Dezember 2016 um 12:35 Uhr
Ich glaube, weil die Anzahl der Nicht-Duplikate pro Bucket hoch genug bleibt, während, wenn wir m solche unabhängigen Hash-Funktionen verwenden, die Wahrscheinlichkeit, dass nicht nahe Duplikate demselben Bucket zugeordnet werden, drastisch abnimmt.
– Shatu
28. Dezember 2017 um 8:39 Uhr
cmhteixeira
LSH ist eine Prozedur, die eine Reihe von Dokumenten/Bildern/Objekten als Eingabe nimmt und eine Art Hash-Tabelle ausgibt.
Die Indizes dieser Tabelle enthalten die Dokumente, sodass Dokumente berücksichtigt werden, die sich auf demselben Index befinden ähnlich und die auf verschiedenen Indizes sind “unähnlich“.
Wo ähnlich hängt vom metrischen System und auch von einer Schwellenähnlichkeit ab s was wie ein globaler Parameter von LSH wirkt.
Es liegt an Ihnen, den angemessenen Schwellenwert zu definieren s ist für dein Problem.
Es ist wichtig zu betonen, dass unterschiedliche Ähnlichkeitsmaße unterschiedliche Implementierungen von LSH haben.
Ich bin ein visueller Mensch. Hier ist, was für mich als Intuition funktioniert.
Angenommen, jedes der Dinge, nach denen Sie ungefähr suchen möchten, sind physische Objekte wie ein Apfel, ein Würfel oder ein Stuhl.
Meine Intuition für ein LSH ist, dass es ähnlich ist, die Schatten dieser Objekte zu nehmen. Wenn Sie den Schatten eines 3D-Würfels nehmen, erhalten Sie einen quadratischen 2D-Schatten auf einem Blatt Papier, oder eine 3D-Kugel erzeugt einen kreisförmigen Schatten auf einem Blatt Papier.
Schließlich gibt es in einem Suchproblem viel mehr als drei Dimensionen (wobei jedes Wort in einem Text eine Dimension sein könnte), aber die Schatten Analogie ist immer noch sehr nützlich für mich.
Jetzt können wir Bitfolgen in der Software effizient vergleichen. Eine Bitfolge mit fester Länge ist mehr oder weniger wie eine Linie in einer einzigen Dimension.
Also projiziere ich mit einem LSH die Schatten von Objekten schließlich als Punkte (0 oder 1) auf eine einzelne Linie/Bitfolge fester Länge.
Der ganze Trick besteht darin, die Schatten so zu nehmen, dass sie in der unteren Dimension noch Sinn machen, dh sie ähneln dem ursprünglichen Objekt in einer Weise, die gut genug erkannt werden kann.
Eine 2D-Zeichnung eines Würfels in Perspektive sagt mir, dass dies ein Würfel ist. Aber ich kann ohne Perspektive nicht einfach ein 2D-Quadrat von einem 3D-Würfelschatten unterscheiden: Beide sehen für mich wie ein Quadrat aus.
Wie ich mein Objekt dem Licht präsentiere, bestimmt, ob ich einen gut erkennbaren Schatten bekomme oder nicht. Also stelle ich mir einen “guten” LSH vor, der meine Objekte vor einem Licht so dreht, dass ihr Schatten am besten als Repräsentation meines Objekts erkennbar ist.
Um es noch einmal zusammenzufassen: Ich denke an Dinge, die mit einem LSH indiziert werden sollen, als physische Objekte wie ein Würfel, ein Tisch oder ein Stuhl, und ich projiziere ihre Schatten in 2D und schließlich entlang einer Linie (einer kleinen Zeichenfolge). Und eine “gute” LSH “Funktion” ist, wie ich meine Objekte vor einem Licht präsentiere, um eine annähernd unterscheidbare Form im 2D-Flachland und später meine Bit-String zu erhalten.
Wenn ich schließlich suchen möchte, ob ein Objekt, das ich habe, einigen Objekten ähnelt, die ich indiziert habe, nehme ich die Schatten dieses “Abfrage” -Objekts auf die gleiche Weise, um mein Objekt vor dem Licht zu präsentieren (schließlich mit einem bisschen Schnur auch). Und jetzt kann ich vergleichen, wie ähnlich dieser Bit-String mit all meinen anderen indizierten Bit-Strings ist, was ein Proxy für die Suche nach meinen ganzen Objekten ist, wenn ich einen guten und erkennbaren Weg gefunden habe, meine Objekte meinem Licht zu präsentieren.
Guillaume Chevalier
Als ganz kurze tldr Antworten:
Ein Beispiel für ortsabhängiges Hashing könnte darin bestehen, zuerst Ebenen zufällig (mit einer Drehung und einem Versatz) in Ihrem Eingabebereich zu hashen und dann Ihre Punkte im Raum zu hashen und für jede Ebene zu messen, ob der Punkt ist darüber oder darunter (zB: 0 oder 1), und die Antwort ist der Hash. Punkte, die im Raum ähnlich sind, haben also einen ähnlichen Hash, wenn sie mit dem Kosinusabstand davor oder danach gemessen werden.
Lesen Sie Ullman Kapitel 3 – „ÄHNLICHE GEGENSTÄNDE FINDEN“ infolab.stanford.edu/~ullman/mmds.html
– Achini
15. November 2013 um 3:13 Uhr
Ich stimme dafür, diese Frage zu schließen, da Theoriefragen zum maschinellen Lernen (ML) bei Stack Overflow – Geschenkverpackungskandidat für Cross-Validated – nicht zum Thema gehören
–Daniel F
10. Februar 2021 um 13:52 Uhr