Créer des systèmes de recommandation personnalisés avec Milvus et PaddlePaddle
Introduction générale
Avec le développement continu de la technologie des réseaux et l’expansion constante de l’e-commerce, le nombre et la variété des biens augmentent rapidement et les utilisateurs doivent passer beaucoup de temps à trouver les biens qu’ils souhaitent acheter. C’est la surcharge d’information. Afin de résoudre ce problème, le système de recommandation a vu le jour.
Le système de recommandation est un sous-ensemble du système de filtrage de l’information, qui peut être utilisé dans divers domaines tels que les films, la musique, l’e-commerce et les recommandations de flux Feed. Le système de recommandation découvre les besoins et les intérêts personnalisés de l’utilisateur en analysant et en exploitant les comportements des utilisateurs, et recommande des informations ou des produits susceptibles d’intéresser l’utilisateur. Contrairement aux moteurs de recherche, les systèmes de recommandation ne demandent pas aux utilisateurs de décrire précisément leurs besoins, mais modélisent leur comportement historique afin de fournir de manière proactive des informations qui correspondent aux intérêts et aux besoins de l’utilisateur.
Dans cet article, nous utilisons PaddlePaddle, une plateforme de deep learning de Baidu, pour construire un modèle et le combiner avec Milvus, un moteur de recherche de similarité vectorielle, afin de créer un système de recommandation personnalisé capable de fournir rapidement et précisément aux utilisateurs des informations intéressantes.
Préparation des données
Nous prenons MovieLens Million Dataset (ml-1m) [1] comme exemple. Le jeu de données ml-1m contient 1 000 000 d’avis sur 4 000 films par 6 000 utilisateurs, collectés par le laboratoire GroupLens Research. Les données d’origine comprennent les données de caractéristiques du film, les caractéristiques de l’utilisateur et la note attribuée par l’utilisateur au film ; vous pouvez vous référer à ml-1m-README [2] .
Le jeu de données ml-1m comprend 3 articles .dat : movies.dat、users.dat et ratings.dat.movies.dat comprend les caractéristiques du film, voir l’exemple ci-dessous :
MovieID::Title::Genres
1::ToyStory(1995)::Animation|Children's|Comedy
Cela signifie que l’identifiant du film est 1, et que le titre est 《Toy Story》, qui est divisé en trois catégories. Ces trois catégories sont animation, enfants et comédie.
users.dat comprend les caractéristiques de l’utilisateur, voir l’exemple ci-dessous :
UserID::Gender::Age::Occupation::Zip-code
1::F::1::10::48067
Cela signifie que l’identifiant utilisateur est 1, femme, et âgée de moins de 18 ans. L’identifiant de la profession est 10.
ratings.dat comprend la caractéristique de la note du film, voir l’exemple ci-dessous :
UserID::MovieID::Rating::Timestamp 1::1193::5::978300760
C’est-à-dire que l’utilisateur 1 évalue le film 1193 à 5 points.
Modèle de recommandation par fusion
Dans le système de recommandation personnalisée de films, nous avons utilisé le Modèle de recommandation par fusion [3] que PaddlePaddle a implémenté. Ce modèle est issu de sa pratique industrielle.
Tout d’abord, prenez les caractéristiques utilisateur et les caractéristiques du film comme entrée du réseau neuronal, où :
- Les caractéristiques utilisateur intègrent quatre informations d’attribut : identifiant utilisateur, genre, profession et âge.
- Les caractéristiques du film intègrent trois informations d’attribut : identifiant du film, identifiant du type de film et nom du film.
Pour les caractéristiques utilisateur, mappez l’identifiant utilisateur vers une représentation vectorielle d’une dimension de 256, entrez-la dans la couche entièrement connectée, et effectuez un traitement similaire pour les trois autres attributs. Ensuite, les représentations de caractéristiques des quatre attributs sont entièrement connectées et ajoutées séparément.
Pour les caractéristiques du film, l’identifiant du film est traité d’une manière similaire à l’identifiant utilisateur. L’identifiant du type de film est directement saisi dans la couche entièrement connectée sous forme de vecteur, et le nom du film est représenté par un vecteur de longueur fixe à l’aide d’un réseau neuronal convolutif textuel. Les représentations de caractéristiques des trois attributs sont ensuite entièrement connectées et ajoutées séparément.
Après avoir obtenu la représentation vectorielle de l’utilisateur et du film, calculez leur similarité cosinus comme score du système de recommandation personnalisé. Enfin, le carré de la différence entre le score de similarité et le score réel de l’utilisateur est utilisé comme fonction de perte du modèle de régression.
Modèle de recommandation par fusion de PaddlePaddle.
Vue d’ensemble du système
Combiné au modèle de recommandation par fusion de PaddlePaddle, le vecteur de caractéristiques du film généré par le modèle est stocké dans le moteur de recherche de similarité vectorielle Milvus, et la caractéristique utilisateur est utilisée comme vecteur cible à rechercher. Une recherche de similarité est effectuée dans Milvus pour obtenir le résultat de la requête sous forme de films recommandés à l’utilisateur.
Modèle de recommandation par fusion combiné à Milvus.
La méthode du produit scalaire (IP) est fournie dans Milvus pour calculer la distance vectorielle. Après normalisation des données, la similarité par produit scalaire est cohérente avec le résultat de similarité cosinus dans le modèle de recommandation par fusion.
Application d’un système de recommandation personnel
La création d’un système de recommandation personnalisé avec Milvus comporte trois étapes ; pour plus de détails sur la procédure, veuillez vous référer à Mivus Bootcamp [4].
Étape 1:Entraînement du modèle
# run train.py
$ python train.py
L’exécution de cette commande générera un modèle recommender_system.inference.model dans le répertoire, qui peut convertir les données de films et les données utilisateur en vecteurs de caractéristiques, et générer des données d’application que Milvus pourra stocker et récupérer.
Étape 2:Prétraitement des données
# Data preprocessing, -f followed by the parameter raw movie data file name
$ python get_movies_data.py -f movies_origin.txt
L’exécution de cette commande générera des données de test movies_data.txt dans le répertoire afin de réaliser le prétraitement des données de films.
Étape 3:Mise en œuvre d’un système de recommandation personnel avec Milvus
# Implementing personal recommender system based on user conditions
$ python infer_milvus.py -a <age>-g <gender>-j <job>[-i]
L’exécution de cette commande mettra en œuvre des recommandations personnalisées pour les utilisateurs spécifiés.
Le processus principal est le suivant :
- Grâce à load_inference_model, les données de films sont traitées par le modèle pour générer un vecteur de caractéristiques de film.
- Charger le vecteur de caractéristiques de film dans Milvus via milvus.insert.
- Selon l’âge / le genre / la profession de l’utilisateur spécifiés par les paramètres, il est converti en vecteur de caractéristiques utilisateur, milvus.search_vectors est utilisé pour la récupération par similarité, et le résultat ayant la plus grande similarité entre l’utilisateur et le film est renvoyé.
Prédiction des cinq meilleurs films qui intéressent l’utilisateur :
TopIdsTitleScore
03030Yojimbo2.9444923996925354
13871Shane2.8583481907844543
23467Hud2.849525213241577
31809Hana-bi2.826111316680908
43184Montana2.8119677305221558
Résumé
En fournissant les informations utilisateur et les informations de film au modèle de recommandation par fusion, nous pouvons obtenir des scores de correspondance, puis trier les scores de tous les films en fonction de l’utilisateur afin de recommander des films susceptibles de l’intéresser. Cet article combine Milvus et PaddlePaddle pour créer un système de recommandation personnalisé. Milvus, un moteur de recherche vectorielle, est utilisé pour stocker toutes les données de caractéristiques des films, puis une récupération par similarité est effectuée sur les caractéristiques utilisateur dans Milvus. Le résultat de la recherche est le classement des films recommandé par le système à l’utilisateur.
Le moteur de recherche de similarité vectorielle Milvus [5] est compatible avec diverses plateformes de deep learning, recherchant des milliards de vecteurs avec une réponse de seulement quelques millisecondes. Vous pouvez explorer facilement davantage de possibilités d’applications d’IA avec Milvus !
Référence
- MovieLens Million Dataset (ml-1m): http://files.grouplens.org/datasets/movielens/ml-1m.zip
- ml-1m-README: http://files.grouplens.org/datasets/movielens/ml-1m-README.txt
- Modèle de recommandation par fusion par PaddlePaddle: https://www.paddlepaddle.org.cn/documentation/docs/zh/beginners_guide/basics/recommender_system/index.html#id7
- Bootcamp: https://github.com/milvus-io/bootcamp/tree/master/solutions/recommendation_system
- Milvus: https://milvus.io/en/
Continuer à lire

Zilliz Cloud Update: Smarter Autoscaling for Cost Savings, Stronger Compliance with Audit Logs, and More
What's new in Zilliz Cloud? Smarter autoscaling with scale-down, audit logs GA, enhanced SSO, and Milvus 2.6 in Private Preview.

Zilliz Cloud Enterprise Vector Search Powers High-Performance AI on AWS
Zilliz Cloud on AWS powers secure, scalable, ultra-fast vector search for enterprise AI apps, with BYOC, sub-10ms latency, and zero-DevOps simplicity.

Introducing DeepSearcher: A Local Open Source Deep Research
In contrast to OpenAI’s Deep Research, this example ran locally, using only open-source models and tools like Milvus and LangChain.



