Scaling Personalization With Stable Item-Based Matching Engines
Glissez pour afficher le menu
Pour comprendre comment les systèmes de recommandation modernes passent à l'échelle pour des millions d'utilisateurs et d'articles, il est essentiel d'examiner l'évolution du filtrage collaboratif basé sur l'utilisateur vers celui basé sur l'article.
Filtrage basé sur l'article : fonctionnement et utilité
Le filtrage collaboratif basé sur l'article prédit l'intérêt d'un utilisateur pour un article en analysant les similarités entre les articles, plutôt qu'entre les utilisateurs. Au lieu de demander
« Quels utilisateurs sont similaires à cet utilisateur cible ? »,
le filtrage basé sur l'article pose la question
« Quels articles sont similaires à ceux que l'utilisateur apprécie déjà ? »
Le processus comprend les étapes suivantes :
- Construction d'une matrice de similarité article-article en comparant les articles selon les schémas d'interaction des utilisateurs ;
- Pour un utilisateur donné, identification des articles avec lesquels il a interagi ou qu'il a bien notés ;
- Recommandation de nouveaux articles similaires aux choix précédents de l'utilisateur, selon la matrice de similarité.
Cette approche est largement utilisée car les articles (tels que les produits ou les films) présentent généralement des caractéristiques plus stables que les utilisateurs, ce qui rend les relations de similarité plus cohérentes dans le temps. Il est facile de pré-calculer et de mettre en cache les similarités entre articles, ce qui accélère les recommandations en temps réel.
Stabilité : pourquoi les méthodes basées sur l'article sont plus stables dans le temps
Les préférences des utilisateurs peuvent évoluer rapidement — les utilisateurs arrivent et repartent, et leurs goûts peuvent changer. En revanche, les articles restent généralement constants, et leurs relations (comme « les utilisateurs ayant acheté X ont aussi acheté Y ») évoluent moins fréquemment. Cela présente plusieurs avantages :
Moindre volatilité : les scores de similarité entre articles sont moins affectés par l'arrivée de nouveaux utilisateurs ou par une activité sporadique ;
Cohérence : les recommandations restent fiables même lorsque la population d'utilisateurs fluctue.
Scalabilité : gestion des grands ensembles de données par le filtrage basé sur l'article
Le filtrage collaboratif basé sur l'article est particulièrement adapté aux systèmes à grande échelle pour plusieurs raisons :
- Le nombre d'articles est souvent bien inférieur au nombre d'utilisateurs, ce qui réduit la taille de la matrice de similarité ;
- Le pré-calcul des similarités entre articles permet des recommandations rapides et évolutives pour tout utilisateur ;
- L'ajout de nouveaux utilisateurs ne nécessite pas de recalculer les similarités — les recommandations sont générées en se référant aux relations existantes entre articles.
Exemple : mise en œuvre du filtrage basé sur l'article sur une matrice d'exemple
Supposons que vous disposiez d'une matrice d'interaction utilisateur-article où chaque ligne représente un utilisateur et chaque colonne un article. En calculant la similarité entre les colonnes d'articles, vous pouvez recommander les articles les plus similaires à ceux qu'un utilisateur apprécie déjà. Le code suivant illustre ce processus en utilisant la similarité cosinus.
12345678910111213141516171819202122232425262728import numpy as np import pandas as pd from sklearn.metrics.pairwise import cosine_similarity # Sample user-item interaction matrix # Rows: users, Columns: items (1 = interaction, 0 = no interaction) data = { 'Milk': [1, 1, 0, 0], 'Bread': [1, 1, 1, 0], 'Butter': [0, 1, 1, 1], 'Eggs': [0, 0, 1, 1] } user_item_matrix = pd.DataFrame(data, index=['User1', 'User2', 'User3', 'User4']) # Computing item-item cosine similarity item_similarity = pd.DataFrame( cosine_similarity(user_item_matrix.T), index=user_item_matrix.columns, columns=user_item_matrix.columns ) # Example: Recommend items similar to 'Milk' for a user who likes 'Milk' target_item = 'Milk' similar_items = item_similarity[target_item].sort_values(ascending=False) recommended = similar_items[1:3] # Exclude 'Milk' itself print('Items most similar to \'Milk\':') print(recommended)
1. Quel est l'un des principaux avantages de l'utilisation du filtrage collaboratif basé sur les articles plutôt que sur les utilisateurs ?
2. Quelle affirmation décrit le mieux pourquoi le filtrage collaboratif basé sur les articles est plus évolutif pour les grands systèmes ?
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion