Ich bin eine visuelle Person. Hier ist, was für mich als Intuition funktioniert.
Sagen wir, jedes der Dinge, nach denen Sie ungefähr suchen möchten, sind physische Objekte wie ein Apfel, ein Würfel, ein Stuhl.
Meine Intuition für ein LSH ist, dass es ähnlich ist, die Schatten dieser Objekte zu nehmen. Wenn Sie beispielsweise den Schatten eines 3D-Würfels nehmen, erhalten Sie ein 2D-Quadrat auf einem Blatt Papier, oder eine 3D-Kugel erhalten 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 haben könnte), aber die Schattenanalogie ist für mich immer noch sehr nützlich.
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 einzelnen Dimension.
Mit einem LSH projiziere ich die Schatten von Objekten schließlich als Punkte (0 oder 1) auf eine einzelne Linie / Bitfolge mit fester Länge.
Der ganze Trick besteht darin, die Schatten so zu nehmen, dass sie in der unteren Dimension immer noch Sinn machen, z. B. ähneln sie dem ursprünglichen Objekt auf eine gut genug erkennbare Weise.
Eine 2D-Zeichnung eines Würfels in Perspektive sagt mir, dass dies ein Würfel ist. Aber ich kann ein 2D-Quadrat ohne Perspektive nicht einfach 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. Ich stelle mir also ein "gutes" LSH vor, das meine Objekte vor ein Licht stellt, sodass ihr Schatten am besten als Repräsentation meines Objekts erkennbar ist.
Um es noch einmal zusammenzufassen: Ich stelle mir Dinge, die mit einem LSH indiziert werden sollen, als physische Objekte wie einen Würfel, einen Tisch oder einen Stuhl vor und projiziere ihre Schatten in 2D und schließlich entlang einer Linie (einer Bitfolge). 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 in meiner Bitfolge zu erhalten.
Wenn ich schließlich suchen möchte, ob ein Objekt, das ich habe, einigen von mir indizierten Objekten ähnlich ist, nehme ich die Schatten dieses "Abfrage" -Objekts auf die gleiche Weise, um mein Objekt vor dem Licht darzustellen (was schließlich zu einem kleinen Ergebnis führt) Zeichenfolge auch). Und jetzt kann ich vergleichen, wie ähnlich diese Bitfolge mit all meinen anderen indizierten Bitfolgen ist. Dies ist ein Proxy für die Suche nach meinen gesamten Objekten, wenn ich eine gute und erkennbare Möglichkeit gefunden habe, meine Objekte meinem Licht zu präsentieren.