🚀 Essayez Zilliz Cloud, la version entièrement gérée de Milvus, gratuitement—découvrez des performances 10x plus rapides ! Essayez maintenant>>

milvus-logo
LFAI

Contexte Introduction

  • Scenarios
February 24, 2021
Shiyu Chen

Contexte Introduction

Avec le développement continu de la technologie des réseaux et l'expansion constante du commerce électronique, le nombre et la variété des produits augmentent rapidement et les utilisateurs doivent consacrer beaucoup de temps à la recherche des produits qu'ils souhaitent acheter. Il s'agit d'une surcharge d'informations. Pour résoudre ce problème, les systèmes de recommandation ont 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 une série de domaines tels que les films, la musique, le commerce électronique et les recommandations de flux d'alimentation. Le système de recommandation découvre les besoins et les intérêts personnalisés de l'utilisateur en analysant et en explorant ses comportements, 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 répondent aux intérêts et aux besoins de l'utilisateur.

Dans cet article, nous utilisons PaddlePaddle, une plateforme d'apprentissage profond de Baidu, pour construire un modèle et nous combinons Milvus, un moteur de recherche par similarité vectorielle, pour construire un système de recommandation personnalisé qui peut rapidement et précisément fournir aux utilisateurs des informations intéressantes.

Préparation des données

Nous prenons l'ensemble de données MovieLens Million (ml-1m) [1] comme exemple. L'ensemble de données ml-1m contient 1 000 000 de critiques de 4 000 films par 6 000 utilisateurs, collectées par le laboratoire de recherche GroupLens. Les données originales comprennent les caractéristiques du film, les caractéristiques de l'utilisateur et l'évaluation du film par l'utilisateur. Vous pouvez vous référer à ml-1m-README [2].

L'ensemble 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 l'animation, les enfants et la 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 de l'utilisateur est 1, qu'il est de sexe féminin et qu'il a moins de 18 ans. L'identifiant de la profession est 10.

ratings.dat contient les caractéristiques de l'évaluation des films, voir l'exemple ci-dessous :

UserID::MovieID::Rating::Timestamp 1::1193::5::978300760

Cela signifie 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 de fusion [3] mis en œuvre par PaddlePaddle. Ce modèle a été créé à partir de sa pratique industrielle.

Tout d'abord, le réseau neuronal est alimenté par les caractéristiques de l'utilisateur et les caractéristiques du film :

  • Les caractéristiques de l'utilisateur intègrent quatre attributs : l'ID de l'utilisateur, le sexe, la profession et l'âge.
  • Les caractéristiques des films intègrent trois attributs : l'ID du film, l'ID du type de film et le nom du film.

Pour les caractéristiques de l'utilisateur, l'ID de l'utilisateur est converti en une représentation vectorielle d'une dimension de 256, qui entre dans la couche entièrement connectée, et un traitement similaire est effectué pour les trois autres attributs. Ensuite, les représentations des caractéristiques des quatre attributs sont entièrement connectées et ajoutées séparément.

Pour les caractéristiques des films, l'identifiant du film est traité de la même manière que l'identifiant de l'utilisateur. L'identifiant du type de film est directement introduit dans la couche entièrement connectée sous la forme d'un vecteur, et le nom du film est représenté par un vecteur de longueur fixe à l'aide d'un réseau neuronal convolutionnel textuel. Les représentations des 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, on calcule la similarité cosinusoïdale entre eux 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.

1-user-film-personalized-recommender-Milvus.jpg 1-utilisateur-film-recommandation-personnalisée-Milvus.jpg

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 de l'utilisateur est utilisée comme vecteur cible à rechercher. La recherche de similarité est effectuée dans Milvus pour obtenir le résultat de la requête en tant que films recommandés à l'utilisateur.

2-system-overview.jpg 2-system-overview.jpg

La méthode du produit intérieur (PI) est fournie dans Milvus pour calculer la distance vectorielle. Après normalisation des données, la similarité du produit intérieur est cohérente avec le résultat de la similarité cosinus dans le modèle de recommandation de fusion.

Application du système de recommandation personnelle

La création d'un système de recommandation personnalisé avec Milvus se fait en trois étapes. Pour plus de détails sur le fonctionnement, veuillez vous reporter à Mivus Bootcamp [4].

Étape 1:Formation au modèle

# run train.py
    $ python train.py

L'exécution de cette commande génère un modèle recommender_system.inference.model dans le répertoire, qui peut convertir les données du film et les données de l'utilisateur en vecteurs de caractéristiques, et générer des données d'application pour que Milvus les stocke et les récupère.

É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ère des données de test movies_data.txt dans le répertoire pour réaliser le prétraitement des données cinématographiques.

Etape 3:Implémentation 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 permet de mettre en œuvre des recommandations personnalisées pour les utilisateurs spécifiés.

Le processus principal est le suivant :

  • Par le biais de load_inference_model, les données cinématographiques sont traitées par le modèle pour générer un vecteur de caractéristiques cinématographiques.
  • Charger le vecteur de caractéristiques de films dans Milvus via milvus.insert.
  • En fonction de l'âge, du sexe et de la profession de l'utilisateur spécifiés par les paramètres, il est converti en un vecteur de caractéristiques de l'utilisateur, milvus.search_vectors est utilisé pour la recherche de similarité et le résultat présentant 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 saisissant les informations relatives à l'utilisateur et au film dans le 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 d'intéresser l'utilisateur. Cet article combine Milvus et PaddlePaddle pour construire un système de recommandation personnalisé. Milvus, un moteur de recherche vectoriel, est utilisé pour stocker toutes les données relatives aux caractéristiques des films, puis la recherche de similarités est effectuée sur les caractéristiques de l'utilisateur dans Milvus. Le résultat de la recherche est le classement des films recommandés par le système à l'utilisateur.

Le moteur de recherche de similarités vectorielles Milvus [5] est compatible avec diverses plateformes d'apprentissage en profondeur et recherche des milliards de vecteurs avec une réponse de quelques millisecondes seulement. Vous pouvez explorer plus de possibilités d'applications d'IA avec Milvus en toute simplicité !

Référence

  1. MovieLens Million Dataset (ml-1m) : http://files.grouplens.org/datasets/movielens/ml-1m.zip
  2. ml-1m-README : http://files.grouplens.org/datasets/movielens/ml-1m-README.txt
  3. Modèle de recommandation de fusion par PaddlePaddle : https://www.paddlepaddle.org.cn/documentation/docs/zh/beginners_guide/basics/recommender_system/index.html#id7
  4. Bootcamp : https://github.com/milvus-io/bootcamp/tree/master/solutions/recommendation_system
  5. Milvus : https://milvus.io/

Like the article? Spread the word

Continuer à Lire