Comment fonctionnent les systèmes de recommandation ?
Les systèmes de recommandation sont alimentés par des algorithmes qui, à leurs débuts, aidaient les humains à trier les courriers électroniques indésirables. En 1990, l'inventeur Doug Terry a utilisé un algorithme de filtrage collaboratif pour trier les courriers électroniques souhaitables des courriers indésirables. En "aimant" ou en "détestant" simplement un courriel, en collaboration avec d'autres personnes faisant de même avec un contenu similaire, les utilisateurs pouvaient rapidement entraîner les ordinateurs à déterminer ce qu'il fallait faire passer dans la boîte de réception de l'utilisateur et ce qu'il fallait séquestrer dans le dossier des courriers indésirables.
D'une manière générale, les systèmes de recommandation sont des algorithmes qui font des suggestions pertinentes aux utilisateurs. Il peut s'agir de films à regarder, de livres à lire, de produits à acheter ou de toute autre chose en fonction du scénario ou du secteur d'activité. Ces algorithmes nous entourent, influençant le contenu que nous consommons et les produits que nous achetons auprès de grandes entreprises technologiques telles que Youtube, Amazon, Netflix et bien d'autres.
Des systèmes de recommandation bien conçus peuvent être des générateurs de revenus essentiels, des réducteurs de coûts et des facteurs de différenciation concurrentielle. Grâce à la technologie open-source et à la baisse des coûts de calcul, les systèmes de recommandation personnalisés n'ont jamais été aussi accessibles. Cet article explique comment utiliser Milvus, une base de données vectorielle open-source, PinSage, un réseau neuronal convolutif graphique (GCN), Deep Graph Library (DGL), un package python évolutif pour l'apprentissage profond sur les graphes, et les ensembles de données MovieLens pour construire un système de recommandation basé sur les graphes.
Aller à :
- Comment fonctionnent les systèmes de recommandation ?
- Outils pour construire un système de recommandation
- Construire un système de recommandation basé sur les graphes avec Milvus
Comment fonctionnent les systèmes de recommandation ?
Il existe deux approches courantes pour créer des systèmes de recommandation : le filtrage collaboratif et le filtrage basé sur le contenu. La plupart des développeurs utilisent l'une ou l'autre de ces méthodes, ou les deux, et, bien que les systèmes de recommandation puissent varier en complexité et en construction, ils comprennent généralement trois éléments de base :
- Le modèle de l'utilisateur : Les systèmes de recommandation nécessitent la modélisation des caractéristiques, des préférences et des besoins de l'utilisateur. De nombreux systèmes de recommandation fondent leurs suggestions sur les données implicites ou explicites fournies par les utilisateurs au niveau de l'élément.
- Modèle d'objet : Les systèmes de recommandation modélisent également les objets afin de faire des recommandations basées sur les portraits des utilisateurs.
- Algorithme de recommandation : L'élément central de tout système de recommandation est l'algorithme qui alimente ses recommandations. Les algorithmes couramment utilisés comprennent le filtrage collaboratif, la modélisation sémantique implicite, la modélisation basée sur les graphes, la recommandation combinée, etc.
À un niveau élevé, les systèmes de recommandation qui s'appuient sur le filtrage collaboratif construisent un modèle à partir du comportement passé de l'utilisateur (y compris les données sur le comportement d'utilisateurs similaires) pour prédire ce qui pourrait intéresser l'utilisateur. Les systèmes qui s'appuient sur le filtrage basé sur le contenu utilisent des étiquettes discrètes et prédéfinies basées sur les caractéristiques des articles pour recommander des articles similaires.
Un exemple de filtrage collaboratif serait une station de radio personnalisée sur Spotify, basée sur l'historique d'écoute de l'utilisateur, ses centres d'intérêt, sa bibliothèque musicale, etc. La station diffuse de la musique que l'utilisateur n'a pas sauvegardée ou pour laquelle il n'a pas manifesté d'intérêt, mais que d'autres utilisateurs aux goûts similaires ont souvent écoutée. Un exemple de filtrage basé sur le contenu serait une station de radio basée sur une chanson ou un artiste spécifique qui utiliserait les attributs de l'entrée pour recommander de la musique similaire.
Outils de création d'un système de recommandation
Dans cet exemple, la création d'un système de recommandation basé sur un graphe à partir de zéro dépend des outils suivants :
Pinsage : Un réseau convolutif graphique
PinSage est un réseau convolutionnel de graphe à marche aléatoire capable d'apprendre des encastrements pour les nœuds dans des graphes à l'échelle du web contenant des milliards d'objets. Le réseau a été développé par Pinterest, une société de tableaux d'épingles en ligne, pour offrir des recommandations visuelles thématiques à ses utilisateurs.
Les utilisateurs de Pinterest peuvent "épingler" des contenus qui les intéressent sur des "tableaux", qui sont des collections de contenus épinglés. Avec plus de 478 millions d' utilisateurs actifs mensuels (MAU) et plus de 240 milliards d' objets sauvegardés, l'entreprise dispose d'une immense quantité de données d'utilisateurs qu'elle doit développer de nouvelles technologies pour suivre.
1.png
PinSage utilise les graphes bipartites des cartes d'épingles pour générer des encastrements de haute qualité à partir des épingles, qui sont utilisés pour recommander aux utilisateurs des contenus visuellement similaires. Contrairement aux algorithmes GCN traditionnels, qui effectuent des convolutions sur les matrices de caractéristiques et le graphe complet, PinSage échantillonne les nœuds/épingles proches et effectue des convolutions locales plus efficaces grâce à la construction dynamique de graphes de calcul.
L'exécution de convolutions sur l'ensemble du voisinage d'un nœud se traduira par un graphe de calcul massif. Pour réduire les besoins en ressources, les algorithmes GCN traditionnels mettent à jour la représentation d'un nœud en agrégeant les informations de son voisinage de k-sauts. PinSage simule la marche aléatoire pour définir le contenu fréquemment visité comme voisinage clé, puis construit une convolution basée sur ce contenu.
Comme il y a souvent des chevauchements dans les voisinages à sauts multiples, la convolution locale sur les nœuds donne lieu à des calculs répétés. Pour éviter cela, à chaque étape d'agrégation, PinSage cartographie tous les nœuds sans calcul répété, puis les relie aux nœuds de niveau supérieur correspondants, et enfin récupère les embeddings des nœuds de niveau supérieur.
Bibliothèque de graphes profonds : Un package python évolutif pour l'apprentissage profond sur les graphes
dgl-framework-building-graph-based-recommender-milvus.png
Deep Graph Library (DGL ) est un package Python conçu pour construire des modèles de réseaux neuronaux basés sur les graphes au-dessus des frameworks d'apprentissage profond existants (par exemple, PyTorch, MXNet, Gluon, et plus encore). DGL comprend une interface backend conviviale, facilitant l'implantation dans des cadres basés sur des tenseurs et qui prennent en charge la génération automatique. L'algorithme PinSage mentionné ci-dessus est optimisé pour être utilisé avec DGL et PyTorch.
Milvus : Une base de données vectorielle open-source conçue pour l'IA et la recherche de similarités
Comment fonctionne Milvus.png
Milvus est une base de données vectorielles open-source conçue pour la recherche de similarités vectorielles et les applications d'intelligence artificielle (IA). À un niveau élevé, l'utilisation de Milvus pour la recherche de similarités fonctionne comme suit :
- Des modèles d'apprentissage profond sont utilisés pour convertir des données non structurées en vecteurs de caractéristiques, qui sont importés dans Milvus.
- Milvus stocke et indexe les vecteurs de caractéristiques.
- Sur demande, Milvus recherche et renvoie les vecteurs les plus similaires à un vecteur d'entrée.
Création d'un système de recommandation basé sur un graphe avec Milvus
beike-intelligent-house-platform-diagramme.jpg
3-construction d'un système de recommandation basé sur un graphe.png
La construction d'un système de recommandation basé sur un graphe avec Milvus comprend les étapes suivantes :
Étape 1 : Prétraitement des données
Le prétraitement des données consiste à transformer les données brutes en un format plus facilement compréhensible. Cet exemple utilise les ensembles de données ouvertes MovieLens[5] (m1-1m), qui contiennent 1 000 000 d'évaluations de 4 000 films fournies par 6 000 utilisateurs. Ces données ont été collectées par GroupLens et comprennent des descriptions de films, des évaluations de films et des caractéristiques d'utilisateurs.
Notez que les ensembles de données MovieLens utilisés dans cet exemple ne nécessitent qu'un nettoyage ou une organisation minimale des données. Cependant, si vous utilisez d'autres ensembles de données, votre kilométrage peut varier.
Pour commencer à construire un système de recommandation, créez un graphe bipartite utilisateur-film à des fins de classification en utilisant les données historiques utilisateur-film de l'ensemble de données MovieLens.
graph_builder = PandasGraphBuilder()
graph_builder.add_entities(users, 'user_id', 'user')
graph_builder.add_entities(movies_categorical, 'movie_id', 'movie')
graph_builder.add_binary_relations(ratings, 'user_id', 'movie_id', 'watched')
graph_builder.add_binary_relations(ratings, 'movie_id', 'user_id', 'watched-by')
g = graph_builder.build()
Étape 2 : Entraînement du modèle avec PinSage
Les vecteurs d'intégration des épingles générés à l'aide du modèle PinSage sont des vecteurs de caractéristiques des informations cinématographiques acquises. Créez un modèle PinSage basé sur le graphe bipartite g et les dimensions personnalisées des vecteurs de caractéristiques des films (256-d par défaut). Entraînez ensuite le modèle avec PyTorch pour obtenir les encastrements h_item de 4 000 films.
# Define the model
model = PinSAGEModel(g, item_ntype, textset, args.hidden_dims, args.num_layers).to(device)
opt = torch.optim.Adam(model.parameters(), lr=args.lr)
# Get the item embeddings
for blocks in dataloader_test:
for i in range(len(blocks)):
blocks[i] = blocks[i].to(device)
h_item_batches.append(model.get_repr(blocks))
h_item = torch.cat(h_item_batches, 0)
Étape 3 : Chargement des données
Chargez les encastrements de films h_item générés par le modèle PinSage dans Milvus, qui renverra les ID correspondants. Importez les ID et les informations correspondantes sur les films dans MySQL.
# Load data to Milvus and MySQL
status, ids = milvus.insert(milvus_table, h_item)
load_movies_to_mysql(milvus_table, ids_info)
Étape 4 : Effectuer une recherche de similarité vectorielle
Obtenez les embeddings correspondants dans Milvus sur la base des ID des films, puis utilisez Milvus pour effectuer une recherche de similarité avec ces embeddings. Ensuite, identifiez les informations correspondantes sur les films dans une base de données MySQL.
# Get embeddings that users like
_, user_like_vectors = milvus.get_entity_by_id(milvus_table, ids)
# Get the information with similar movies
_, ids = milvus.search(param = {milvus_table, user_like_vectors, top_k})
sql = "select * from " + movies_table + " where milvus_id=" + ids + ";"
results = cursor.execute(sql).fetchall()
Étape 5 : Obtenir des recommandations
Le système va maintenant recommander les films les plus similaires aux requêtes de recherche des utilisateurs. Il s'agit du processus général de construction d'un système de recommandation. Pour tester et déployer rapidement des systèmes de recommandation et d'autres applications d'IA, essayez le Milvus bootcamp.
Milvus peut faire plus que des systèmes de recommandation
Milvus est un outil puissant capable d'alimenter une vaste gamme d'applications d'intelligence artificielle et de recherche par similarité vectorielle. Pour en savoir plus sur le projet, consultez les ressources suivantes :
- Outils de création d'un système de recommandation
- Création d'un système de recommandation basé sur un graphe avec Milvus
- Milvus peut faire plus que des systèmes de recommandation
On This Page
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word