Le meilleur tutoriel que j'ai vu pour LSH se trouve dans le livre : Mining of Massive Datasets. Consultez le chapitre 3 - Trouver des éléments similaires http://infolab.stanford.edu/~ullman/mmds/ch3a.pdf
Je vous recommande également la diapositive ci-dessous : http://www.cs.jhu.edu/%7Evandurme/papers/VanDurmeLallACL10-slides.pdf . L'exemple de la diapositive m'aide beaucoup à comprendre le hachage de la similarité en cosinus.
J'emprunte deux diapositives à Benjamin Van Durme & Ashwin Lall, ACL2010 et essayer d'expliquer un peu les intuitions des familles LSH pour la distance cosinus.
- Dans la figure, il y a deux cercles w/ rouge y jaune colorés, représentant deux points de données bidimensionnels. Nous essayons de trouver leur similarité cosinus en utilisant LSH.
- Les lignes grises représentent des plans choisis uniformément au hasard.
- Selon que le point de données se situe au-dessus ou au-dessous d'une ligne grise, nous marquons cette relation comme 0/1.
- Dans le coin supérieur gauche, il y a deux rangées de carrés blancs/noirs, représentant respectivement la signature des deux points de données. Chaque carré correspond à un bit 0(blanc) ou 1(noir).
- Ainsi, une fois que vous avez un ensemble de plans, vous pouvez coder les points de données avec leur emplacement respectif par rapport aux plans. Imaginez que lorsque nous avons plus de plans dans le pool, la différence angulaire encodée dans la signature est plus proche de la différence réelle. Parce que seuls les plans qui se trouvent entre les deux points donneront aux deux données une valeur binaire différente.
- Maintenant, nous regardons la signature des deux points de données. Comme dans l'exemple, nous utilisons seulement 6 bits (carrés) pour représenter chaque donnée. C'est le hachage LSH pour les données originales que nous avons.
- La distance de Hamming entre les deux valeurs hachées est de 1, car leurs signatures ne diffèrent que d'un bit.
- En considérant la longueur de la signature, nous pouvons calculer leur similarité angulaire comme le montre le graphique.
J'ai ici un exemple de code (seulement 50 lignes) en python qui utilise la similarité du cosinus. https://gist.github.com/94a3d425009be0f94751
6 votes
Lisez le chapitre 3 de Ullman - "TROUVER DES ARTICLES SIMILAIRES". infolab.stanford.edu/~ullman/mmds.html
1 votes
Je vote pour clore cette question parce que Les questions sur la théorie de l'apprentissage automatique (ML) sont hors sujet sur Stack Overflow - candidat à l'emballage cadeau pour le Cross-Validated