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) :

\[\text{sim}(i, j) = \frac{\sum_{u} r_{ui}\, r_{uj}}{\sqrt{\sum_u r_{ui}^2}\,\sqrt{\sum_u r_{uj}^2}}\]

É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é) :

\[\hat r_{ui} = \frac{\sum_{j \in N(i;u)} \text{sim}(i,j)\, r_{uj}}{\sum_{j \in N(i;u)} |\text{sim}(i,j)|}\]

É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\) :

\[R \approx P\, Q^\top, \qquad \hat r_{ui} = p_u \cdot q_i = \sum_{f=1}^{k} p_{uf}\, q_{if}\]

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 :

  1. Choisir le nombre de facteurs k.

  2. 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.

  3. 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.