Accueil / Factory / Algos ML / Filtrage collaboratif — factory / algos ML / système de recommandation

FILTRAGE COLLABORATIF.

Une méthode de recommandation qui ignore le contenu des produits et regarde seulement qui a aimé quoi. Deux produits appréciés par les mêmes clients sont jugés proches ; on propose à chacun les voisins de ce qu'il a aimé. C'est le principe du « les clients qui ont aimé ceci ont aussi aimé cela ».

RecommandationE-commerceSimilaritéDonnées de notesNiveau : intermédiaire

FICHE D'IDENTITÉ

notes sur 5 · usage entreprise
PerformanceBonne base, dépassée par la factorisation sur données clairsemées
Interprétabilité« Parce que vous avez aimé X » : une raison concrète
VitesseSimilarités à précalculer, puis réponse rapide
Facilité de réglageUn réglage principal : le nombre de voisins
Tolérance aux données brutesNouveaux produits et clients sans historique : aucun signal
EN 30 SECONDES

Un libraire se souvient que les lecteurs qui ont aimé tel polar ont aussi adoré tel autre. Il ne les a pas forcément lus : il s'appuie sur les goûts de sa clientèle.

1. On construit la matrice clients × produits

Une ligne par client, une colonne par produit, la note dans la case. La plupart des cases sont vides : chaque client n'a noté qu'une poignée de produits.

2. On mesure la ressemblance entre produits

Deux produits se ressemblent si les mêmes clients les notent au-dessus ou en dessous de leur moyenne. On calcule une similarité cosinus sur les notes centrées sur chaque client.

3. On score les produits jamais notés

Pour un client, chaque produit reçoit la moyenne de ses écarts de note sur les produits ressemblants qu'il a déjà notés, pondérée par la similarité. On propose les meilleurs scores.

LE CAS MÉTIER

e-commerce · recommandations personnalisées
EN ENTRÉE

Des notes de 1 à 5

600 clients, 120 produits, environ 10 800 notes : chaque client en a donné entre 8 et 29. On garde 20 % des notes de côté pour vérifier les recommandations.

EN SORTIE

Une liste de produits par client

Pour chaque client, les produits qu'il n'a pas encore notés sont classés par score. Les 5 premiers alimentent la page d'accueil ou l'email personnalisé.

CE QU'ON MESURE

La part de recommandations réellement aimées

Dans l'exemple Python, sur les notes mises de côté, 47 % des produits du quart le mieux scoré ont reçu 4 ou 5, contre 28 % en moyenne. Cette précision parle davantage au métier que l'erreur sur la note.

QUAND LE SORTIR, QUAND L'ÉVITER

OUI

  • Beaucoup d'interactions client-produit (notes, achats, clics) et peu de descriptions produits exploitables
  • Catalogue stable, où les produits restent en vente assez longtemps pour accumuler des avis
  • Besoin d'expliquer la suggestion au client : « parce que vous avez aimé »
  • Premier système de recommandation, avant des modèles plus lourds

NON

  • Nouveaux produits ou nouveaux clients sans historique (démarrage à froid) : compléter par la recommandation par contenu
  • Matrice très clairsemée ou millions de clients : la factorisation de matrice (ALS) est plus précise et passe mieux à l'échelle
  • Achats rares et peu répétés (immobilier, voiture) : trop peu d'interactions par client
  • Marge ou stock à intégrer dans le classement : passer à un modèle de learning to rank
LES 4 RÉGLAGES QUI COMPTENT

Noms donnés pour recommenderlab en R ; en Python, l'exemple est écrit avec pandas et scikit-learn.

IBCF ou UBCF

Comparer les produits entre eux (item-based) ou les clients entre eux (user-based). L'item-based est souvent préféré en e-commerce : il y a moins de produits que de clients et leurs similarités changent peu.

k, le nombre de voisins

Nombre de produits ressemblants retenus. Trop peu, la recommandation dépend du hasard ; trop, elle se dilue vers la moyenne. recommenderlab en prend 30 par défaut, l'exemple 20.

Similarité et centrage

Cosinus ou corrélation de Pearson, calculés sur des notes centrées sur la moyenne de chaque client. Le centrage corrige les clients qui notent tout haut ou tout bas.

Seuil de note aimée (goodRating)

Pour évaluer une liste de recommandations, il faut dire à partir de quelle note un produit est aimé : ici 4 sur 5. Ce seuil change fortement la précision affichée.

LE CODE MINIMAL

jeu d'exemple : notes_produits.csv ↓
# Recommandation produits : filtrage collaboratif (item-based) en R
library(recommenderlab)

notes <- read.csv("notes_produits.csv")
# Matrice creuse clients x produits (colonnes : client, produit, note)
mat <- as(notes, "realRatingMatrix")

set.seed(42)
# 80 % des clients pour apprendre ; pour les autres, 5 notes connues et le reste à retrouver
schema <- evaluationScheme(mat, method = "split", train = 0.8, given = 5, goodRating = 4)
algos <- list(item_based = list(name = "IBCF", param = list(k = 20)),
              populaires = list(name = "POPULAR", param = NULL),
              hasard = list(name = "RANDOM", param = NULL))
resultats <- evaluate(schema, algos, type = "topNList", n = c(5, 10))
# Précision : part des produits recommandés que le client a réellement aimés (note >= 4)
print(lapply(avg(resultats), function(r) round(r[, c("precision", "recall")], 3)))

# Les 5 produits à mettre en avant pour le client 1
modele <- Recommender(mat, method = "IBCF", parameter = list(k = 20))
print(as(predict(modele, mat["1", ], n = 5), "list"))

QUESTIONS FRÉQUENTES

Quelle différence entre filtrage collaboratif et recommandation par contenu ?

Le filtrage collaboratif s'appuie uniquement sur les comportements : qui a aimé quoi. La recommandation par contenu s'appuie sur les caractéristiques des produits : description, catégorie, prix. Les systèmes en production combinent souvent les deux (approche hybride).

Qu'est-ce que le problème du démarrage à froid ?

Un nouveau produit n'a encore reçu aucune note : aucune similarité ne peut être calculée et il n'est jamais recommandé. Même chose pour un nouveau client. On y répond par des recommandations de popularité ou par contenu, en attendant les premières interactions.

Comment évaluer un système de recommandation ?

Hors ligne, on cache une partie des notes et on mesure la précision (part des recommandations aimées) et le rappel (part des produits aimés retrouvés). En ligne, seul un test A/B mesure l'effet réel sur le panier et le chiffre d'affaires.

LES ALGOS VOISINS

à comparer avant de choisir
souvent plus précise

Factorisation de matrice (ALS)

Résume les goûts en quelques facteurs cachés. Mieux adaptée aux matrices très clairsemées et aux grands volumes.

Voir la fiche →
le complément

Recommandation par contenu

Recommande à partir des descriptions produits. Fonctionne pour un produit tout juste mis en ligne.

Voir la fiche →
l'analyse du panier

Apriori

Cherche les produits achetés ensemble dans un même ticket, sans personnalisation par client.

Voir la fiche →
— formation

Passer de la fiche à la pratique

Dataistudio forme les équipes au machine learning et à l'IA, sur des cas concrets.

Voir les formations →