Chapitre 4 : Systèmes de recommandation
Un système de recommandation prédit l’intérêt d’un utilisateur pour des items (films, produits…) à partir d’une matrice utilisateurs × items de notes, creuse (la plupart des notes manquent). But : prédire les notes manquantes et recommander les meilleures.
Objectifs
À la fin de ce chapitre, vous devez pouvoir :
Distinguer recommandation basée contenu et filtrage collaboratif
Dérouler le filtrage collaboratif item-item (top-N)
Comprendre l’approche par facteurs latents (SVD)
1. Généralités
Basé contenu : recommander des items similaires à ceux aimés par l’utilisateur, à partir de leurs attributs (profil d’item). Pas besoin des autres utilisateurs, mais nécessite de bons descripteurs.
Filtrage collaboratif (collaborative filtering, CF) : exploiter les notes des autres utilisateurs. Deux variantes : user-user (utilisateurs similaires) et item-item (items co-notés similairement) — cette dernière est plus stable et plus utilisée.
Facteurs latents : factoriser la matrice de notes pour découvrir des dimensions cachées (genre, ton…).
2. Filtrage collaboratif item-item (top-N)
Idée : pour prédire la note de l’utilisateur u sur l’item i, on regarde les items que u a déjà notés et qui ressemblent à i.
Étape 1 — similarité entre items. On mesure la similarité entre colonnes (items) de la matrice de notes, typiquement par la similarité cosinus (de préférence centrée, en retranchant la moyenne de chaque ligne → Pearson ajusté, pour neutraliser les biais de notation) :
Étape 2 — top-N voisins. Pour l’item i, garder les N items les plus similaires que u a notés (voisinage \(N(i;u)\)).
Étape 3 — prédiction (moyenne pondérée par la similarité) :
Étape 4 — recommander les items de plus forte note prédite, non encore vus.
Tip
Les similarités item-item sont stables dans le temps : on peut les pré-calculer hors-ligne (et en MapReduce), ce qui rend la recommandation très rapide en ligne. C’est l’objet du TP1.
3. Facteurs latents & SVD
Idée : approcher la matrice de notes \(R\) (utilisateurs × items) par le produit de deux matrices de faible rang \(k\) :
où \(p_u\) (resp. \(q_i\)) est le vecteur de l’utilisateur u (resp. de l’item i) dans un espace de k facteurs latents.
Étapes :
Choisir le nombre de facteurs k.
Apprendre P et Q en minimisant l’erreur sur les notes connues, avec régularisation :
\[\min_{P,Q} \sum_{(u,i)\,\text{connus}} \big(r_{ui} - p_u\cdot q_i\big)^2 + \lambda\big(\lVert p_u\rVert^2 + \lVert q_i\rVert^2\big)\]par descente de gradient (SGD) ou ALS (Alternating Least Squares, qui se parallélise très bien) — la SVD donne la meilleure approximation de rang k au sens des moindres carrés.
Prédire \(\hat r_{ui} = p_u \cdot q_i\) ; recommander les meilleures.
C’est l’objet du TP1* (facteurs latents).
4. Autres approches (brève description)
Approche |
Idée |
|---|---|
CF user-user |
Prédire à partir des utilisateurs les plus similaires à u. |
Basé contenu |
Profil d’item (attributs/TF-IDF) + profil d’utilisateur ; recommander par similarité de profils. |
Hybride |
Combiner contenu + collaboratif (atténue le cold start). |
Exercices
Exercice 1 — Prédiction item-item
u a noté A=5 et B=3. On veut prédire sa note sur i, avec
sim(i,A)=0,8 et sim(i,B)=0,2. Calculez \(\hat r_{ui}\).
▶ Voir la correction
\(\hat r_{ui} = \dfrac{0{,}8\times 5 + 0{,}2\times 3}{0{,}8 + 0{,}2} = \dfrac{4{,}6}{1{,}0} = 4{,}6\).
Exercice 2 — Pourquoi item-item plutôt que user-user ?
Donnez deux raisons pour lesquelles le CF item-item est souvent préféré au user-user à grande échelle.
▶ Voir la correction
(1) Les similarités entre items sont plus stables que celles entre utilisateurs (les goûts d’un user évoluent ; un film reste le même), donc pré-calculables hors-ligne. (2) Il y a souvent moins d’items que d’utilisateurs, et chaque item a plus de notes → estimations de similarité plus fiables et matrice de similarité plus petite.