Filtrage collaboratif : basé sur les utilisateurs et les éléments
Similarité entre utilisateurs, similarité entre éléments, méthodes de voisinage, similarité cosinus pour les évaluations.
Filtrage collaboratif : basé sur les utilisateurs et les éléments est une leçon Learn AI with Python gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Learn AI with Python, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Learn AI with Python comprend 4 leçons au total.
Qu’est-ce que le filtrage collaboratif ?
Le filtrage collaboratif (CF) recommande des éléments en apprenant du comportement de nombreux utilisateurs. L’idée centrale est la suivante : les personnes qui ont eu les mêmes préférences par le passé ont tendance à en avoir de similaires à l’avenir. Cette méthode n’a besoin d’aucune description des éléments, uniquement de l’historique des interactions.
La matrice utilisateurs-éléments
Le CF part d’une matrice utilisateurs-éléments dont les lignes représentent les utilisateurs, les colonnes les éléments et chaque cellule contient une note (ou est vide si l’élément n’a pas été noté). Cette matrice est généralement très creuse, car chaque utilisateur ne note que quelques éléments.
import pandas as pd
matrix = ratings.pivot_table(
index="user_id", columns="item_id", values="rating"
)Deux variantes du CF
- Fondé sur les utilisateurs : trouvez les utilisateurs qui vous ressemblent et recommandez ce qu’ils ont apprécié.
- Fondé sur les éléments : trouvez les éléments similaires à ceux que vous avez appréciés et recommandez-les.
Les deux approches reposent sur une mesure de similarité entre les lignes (utilisateurs) ou les colonnes (éléments).
Similarité cosinus
La similarité cosinus mesure l’angle entre deux vecteurs de notes, sans tenir compte de leur norme. Les valeurs proches de 1 indiquent des goûts très similaires, tandis que les valeurs proches de 0 indiquent l’absence de lien.
from sklearn.metrics.pairwise import cosine_similarity
filled = matrix.fillna(0)
user_sim = cosine_similarity(filled) # user x userPrédiction fondée sur les utilisateurs
Pour prédire votre note pour un élément, calculez une moyenne pondérée des notes attribuées par des utilisateurs similaires, en utilisant la similarité comme pondération. Les voisins les plus similaires ont davantage d’influence.
Formule de prédiction
Note prédite = somme(similarité × note du voisin) / somme(similarité), sur l’ensemble des voisins qui ont noté l’élément. Soustraire d’abord la moyenne de chaque utilisateur (centrage par la moyenne) corrige les différences entre les utilisateurs qui notent généralement haut ou bas.
import numpy as np
def predict(sims, ratings_for_item):
mask = ~np.isnan(ratings_for_item)
if sims[mask].sum() == 0:
return np.nan
return np.dot(sims[mask], ratings_for_item[mask]) / sims[mask].sum()Choisir les voisins (k)
Au lieu de conserver tous les utilisateurs, gardez uniquement les k voisins les plus similaires. Cela réduit le bruit causé par les utilisateurs dissemblables et accélère la prédiction. k est un hyperparamètre réglable.
Similarité fondée sur les éléments
Le CF fondé sur les éléments calcule la similarité entre les colonnes d’éléments plutôt qu’entre les lignes d’utilisateurs. Il recommande les éléments les plus similaires à ceux qu’un utilisateur a déjà appréciés.
item_sim = cosine_similarity(filled.T) # item x itemPourquoi l’approche fondée sur les éléments est plus stable
Les relations entre éléments évoluent lentement : la similarité entre deux films reste à peu près constante. Les goûts des utilisateurs et la base d’utilisateurs évoluent plus rapidement. Les similarités entre éléments peuvent donc être pré-calculées et réutilisées, ce qui produit des recommandations plus stables et plus faciles à mettre à l’échelle. C’est pourquoi Amazon a été célèbre pour privilégier cette approche.
Le problème du démarrage à froid
Le CF rencontre des difficultés avec les nouveaux utilisateurs ou éléments qui n’ont encore aucune note : il n’y a rien à comparer. Parmi les solutions courantes, on peut demander quelques notes aux nouveaux utilisateurs ou utiliser en solution de repli des méthodes fondées sur le contenu (présentées plus loin).
Générer des recommandations
Évaluez chaque élément sans note pour un utilisateur, triez les résultats par ordre décroissant et renvoyez les N premiers comme recommandations.
scores = {item: predict_for(user, item)
for item in unrated_items(user)}
top_n = sorted(scores, key=scores.get, reverse=True)[:10]Vérification rapide
Testez vos connaissances sur le filtrage collaboratif.
Récapitulatif
Vous avez construit un CF sur une matrice utilisateurs-éléments, calculé la similarité cosinus, prédit les notes comme une moyenne pondérée par la similarité des voisins et compris pourquoi le CF fondé sur les éléments est plus stable que celui fondé sur les utilisateurs. Ensuite : la factorisation matricielle avec SVD.
Questions Fréquemment Posées
La leçon « Filtrage collaboratif : basé sur les utilisateurs et les éléments » est-elle gratuite ?
Oui — le texte complet de « Filtrage collaboratif : basé sur les utilisateurs et les éléments » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Learn AI with Python, passe à CoddyKit PRO. Le cours Learn AI with Python comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Filtrage collaboratif : basé sur les utilisateurs et les éléments » ?
Similarité entre utilisateurs, similarité entre éléments, méthodes de voisinage, similarité cosinus pour les évaluations. Tu pratiques Learn AI with Python avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Learn AI with Python ?
Aucune expérience préalable n'est requise. Learn AI with Python sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.
Combien de temps prend la leçon « Filtrage collaboratif : basé sur les utilisateurs et les éléments » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Learn AI with Python ?
Oui. Chaque leçon Learn AI with Python inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Filtrage collaboratif : basé sur les utilisateurs et les éléments
- Factorisation matricielle avec SVD
- Filtrage fondé sur le contenu
- Systèmes hybrides et métriques d’évaluation