Institut Supérieur de Gestion de Tunis
Système de Recommandation
Chapitre 4– SR basé sur le contenu
Dr. Zahra KODIA AOUINA
2 ÈME L NBI
Plan du Chapitre
1. Définitions des SR et Objectifs - Rappel
2. Classification des SR
3. SR basés sur le contenu -- Méthodes Simples
A. Tokenisation
B. Stemming
C. Suppression des mots parasites
D. Calcul des similarités
4. SR basés sur le contenu -- Méthodes augmentées
5. SR basés sur le contenu -- Méthodes basées sur les clusters
DR ZAHRA KODIA AOUINA 2
Définitions des SR et Objectifs - Rappel
Définition du problème :
Deux types d’entités : « utilisateurs » et « articles ou item »
Chaque utilisateur peut choisir et/ou noter plusieurs articles
Données représentées sous forme matricielle (« utilités ») : 1 ligne par utilisateur, 1 colonne par
article
➢Données explicites (par ex. achats, notes)
o matrice très creuse
➢Données implicites (par ex. pages visualisées et durées de visualisation)
o matrice mieux remplie
Objectif : prédire les valeurs manquantes de la matrice ; lorsqu’il s’agit de notes, ce
sont en général les valeurs élevées qui intéressent
SYSTÈME DE RECOMMANDATION 3
Définitions des SR et Objectifs - Rappel
Exemples d’utilisation de la similarité :
◦ Recommandation pour le commerce en ligne : proposer à un client des produits
achetés par d’autres clients ayant des profils d’achat similaires
◦ Services de recommandation (films, musique) : proposer à un client des articles
similaires à d’autres articles qu’il a appréciés
◦ Services d’information sur le web : identifier les textes très similaires issus d’agences
de presse ou d’autres sites d’informations afin d’en proposer un seul
Recherche ou jointure ?
◦ Recherche : trouver les données similaires à une donnée « requête »
◦ complexité O(N)
◦ Jointure : trouver les paires de données très similaires ( graphe / cliques ou
composantes connexes)
◦ complexité O(N2)
SYSTÈME DE RECOMMANDATION 4
Définition des paramètres d’un système
de recommandation
▪Ensemble d’utilisateurs :
▪Ensembles d’articles:
▪Ensemble de scores enregistrés:
Evaluer le score de l’article i par l’utilisateur u avec
o un sous-ensemble des utilisateurs a évalué l’article i
o Un sous ensemble des articles est évalué par u
▪Des articles évalués par u et v:
▪Un ensemble d’utilisateur a évalué les articles i et j:
▪Corrélation ou similarité entre utilisateur u et v = wuv
▪Corrélation ou similarité entre article i et j = wij
SYSTÈME DE RECOMMANDATION 5
Classification des SR
Approche de conception des SR
❑Basé sur le contenu des items
❑Basé sur le filtrage collaboratif
❑Approches hybrides
SYSTÈME DE RECOMMANDATION 6
Classification des SR
Approche de conception des SR
❑Basé sur le contenu des items
➢ Ces recommandations sont basées uniquement sur les produits, par exemple en
recommandant des produits similaires au produit étudié.
❑Basé sur le filtrage collaboratif
➢ Ces recommandations sont basées sur les comportements des utilisateurs.
❑Approches hybrides
➢ C'est un mélange des deux méthodes précédentes : ces recommandations sont faites
en utilisant à la fois des caractéristiques du produit, et une étude du comportement des
utilisateurs.
SYSTÈME DE RECOMMANDATION 7
SR basé sur le contenu des items
Les techniques basées sur le contenu comparent les contenus
Mais, comment construire
actuels de l’item aux contenus des items aimés auparavant
cette matrice??
par
l’utilisateur et recommandent ceux qui ont la plus grande corrélation
SYSTÈME DE RECOMMANDATION 8
SR basé sur le contenu des items
proposer à l’utilisateur des articles qui correspondent à son profil
1. recueillir d’abord les données de l’utilisateur
2. analyser et créer son profil de préférence
3. suggérer des articles qui lui conviennent.
▪Accès nécessaire à des descriptions des articles
▪Construction de profils d’utilisateurs à partir de caractéristiques des articles qu’ils ont déjà
choisis (ou notés avec une note élevée) et d’informations a priori
▪Difficultés à traiter les nouveaux utilisateurs, à extrapoler d’un domaine à un autre (par ex. de la
musique aux livres)
SYSTÈME DE RECOMMANDATION 9
SR basé sur le contenu des items :
Avantages
Indépendance de l’usager
Le SRBC exploite les ratings fournis par l’usager en question pour construire son profil.
Pas besoin de données sur les autres usagers.
Transparence
Le SRBC explique le choix des items recommandés par la valeur des caractéristiques qui causent
la recommandation.
Nouvel item (item non évalué par des usagers)
Le SRBC est capable de recommander des items qui viennent d’apparaître sur le marché.
Le problème du premier évaluateur pour un item ne se pose pas (first rater problem).
SYSTÈME DE RECOMMANDATION 10
SR basé sur le contenu des items :
Limites
➢Les recommandations ne seront pas appropriées s’il n’y a pas suffisamment
d’information sur le contenu des items qui permettent de distinguer entre les items
aimés par un usager et les items non aimés.
➢Les caractéristiques doivent avoir un nom unique et être non ambiguës
➢Les caractéristiques choisis doivent permettre de cibler le pourquoi un utilisateur aime
ou n’aime pas l’item.
➢Souvent les mots clés fournis par le constructeur ou le vendeur ne sont pas appropriés
pour représenter le contenu des items (synonymes, polysème, etc.).
➢ Traitement du langage humain très complexe
SYSTÈME DE RECOMMANDATION 11
SR basé sur le contenu des items :
Algorithme des “Top-N items recommendation”
Phase d’initialisation
◦ Pour chaque item j, identifier les k items {j1, j2, … jk} qui lui sont les plus
similaires avec leurs mesures de similarité {sj1, sj2, … sjk}
Phase de recommandation
◦ Pour un client qui a acheté un ensemble U d’items, nous calculons les top-N
items recommandés de la façon suivante :
◦ Nous identifions W, un ensemble d’item recommandé potentiel en faisant l’union des
ensembles {j1, j2, … jk} où j est similaire aux éléments de U.
◦ Nous éliminons de W, les éléments déjà présents dans U
◦ Pour chaque c ∈ W, nous calculons sa similarité à U en faisant la somme des similarités
entre j ∈ U et c
◦ Nous ordonnons les items de W de façon décroissante
◦ Nous recommandons les N premiers.
SYSTÈME DE RECOMMANDATION 12
SR basé sur le contenu des items
Emploi direct de la similarité entre profil utilisateur et description article :
➢1 Faire des suggestions à un utilisateur : recherche par similarité, avec comme
« requête » le profil de l’utilisateur
➢2 Campagne promotionnelle (push) : jointure par similarité
{ensemble profils utilisateurs} {ensemble descriptions articles}
2 Mise en œuvre de modèles décisionnels :
Un modèle par utilisateur, construit à partir des données afin de prédire les
articles auxquels l’utilisateur devrait donner des notes élevées
❖ Obtenir des fonctions de décision plus complexes
Un modèle décisionnel exige un volume de données plus important par
utilisateur qu’un simple profil agrégé
SYSTÈME DE RECOMMANDATION 13
SR basé sur le contenu des items :
Exemple
L’objectif du système de recommandation est de prédire les espaces
blancs dans la matrice d’utilité.
❖ Si l’utilisateur A aime le film HP2, que peut A aimer encore ?
Le système de recommandation peut être conçu en prenant en compte les
propriétés des films telles que : réalisateur, producteur, acteurs, etc.
Avec plus de données, nous pourrons observer que les utilisateurs qui ont
évalué HP1 et HP2 ont tendance à donner des évaluations similaires à
HP3.
Donc, on peut recommander HP3 …
SYSTÈME DE RECOMMANDATION 14
SR basé sur le contenu des items :
Méthodes Simples
L'idée est de regarder la présence de mots communs dans les deux
descriptions.
Objectif : calcul des similarités en découpant les descriptions en listes de
mots (c'est la tokenisation) puis à prendre les racines des mots, les stems
(il s'agit donc du stemming).
Python permet de traiter des langages : bibliothèque NLTK.
Cette bibliothèque met à notre disposition, entre autres, plusieurs
algorithmes qui réalisent :
➢ La tokenisation
➢ Le stemming.
DR ZAHRA KODIA AOUINA 15
Installation du nltk avec Anaconda
16
Installation du nltk avec Anaconda
DR ZAHRA KODIA AOUINA 17
SRBC - Méthodes Simples
Tokenisation
Plusieurs méthodes existent dans nltk pour découper une phrase en mots :
➢word_tokenize()
➢SpaceTokenizer : qui découpe la phrase selon les espaces,
➢ TreeBank : qui sépare aussi la ponctuation.
➢wordpunct_tokenize : prend en compte la ponctualtion
DR ZAHRA KODIA AOUINA 18
SRBC - Méthodes Simples
Tokenisation
>>> import nltk
>>> sentence = """At eight o'clock on Thursday morning
... Arthur didn't feel very good."""
>>> tokens = nltk.word_tokenize(sentence)
>>> tokens
DR ZAHRA KODIA AOUINA 19
DR ZAHRA KODIA AOUINA 20
SRBC - Méthodes Simples
Stemming
Pour le stemming, différents algorithmes fournis par la bibliothèque NLTK.
Deux algorithmes pertinents :
➢Lancaster et
➢Porter.
Ces deux algorithmes sont adaptés pour le langage anglais, toutefois NLTK fournit
d'autres algorithmes si l'on désire utiliser une langue différente, comme le français.
DR ZAHRA KODIA AOUINA 21
SRBC - Méthodes Simples
Stemming
DR ZAHRA KODIA AOUINA 22
SRBC - Méthodes Simples
Stemming
L'algorithme de Porter est plus rapide, mais semble moins précis, par exemple
pour le terme « beautifully », Porter trouve « beauti », tandis que Lancaster identifie
que la racine est « beauty ».
DR ZAHRA KODIA AOUINA 23
SRBC - Méthodes Simples
Stemming-Lancaster
>>> from [Link] import LancasterStemmer
>>> st = LancasterStemmer()
>>> [Link]('maximum')
>>> [Link]('presumably')
>>> [Link]('multiply')
>>> [Link]('provision')
>>> [Link]('owed')
DR ZAHRA KODIA AOUINA 24
SRBC - Méthodes Simples
Stemming-Lancaster
>>> [Link]('ear')
>>> [Link]('saying')
>>> [Link]('crying')
>>> [Link]('string')
>>> [Link]('meant')
>>> [Link]('cement')
DR ZAHRA KODIA AOUINA 25
SRBC - Méthodes Simples
Stemming-RegexpStemmer
DR ZAHRA KODIA AOUINA 26
SRBC - Méthodes Simples
Stemming- RegexpStemmer
>>> from [Link] import RegexpStemmer
>>> st = RegexpStemmer('ing$|s$|e$|able$', min=4)
>>> [Link]('cars')
>>> [Link]('mass')
>>> [Link]('was')
>>> [Link]('bee')
>>> [Link]('compute')
>>> [Link]('advisable')
DR ZAHRA KODIA AOUINA 27
SRBC - Méthodes Simples
Stemming- Snowball
from [Link] import FrenchStemmer
>>> stemmer = FrenchStemmer()
>>> [Link]('voudrais')
'voudr'
>>> [Link]('animaux')
'animal'
>>> [Link]('yeux')
'yeux'
>>> [Link]('dors')
'dor'
>>> [Link]('couvre')
'couvr'
DR ZAHRA KODIA AOUINA 28
SRBC - Méthodes Simples
Suppression mots parasites
Retirer les mots peu importants qui reviennent souvent dans les phrases.
Pour cela « stopwords », fourni par nltk, contient une liste de mots peu significatifs :
DR ZAHRA KODIA AOUINA 29
SRBC - Méthodes Simples
Suppression mots parasites
Exemple
from [Link] import stopwords
stop = set([Link]('english'))
sentence = "this is a foo bar sentence"
print ([i for i in [Link]().split() if i not in stop])
Il faut donc stemmiser cette liste de mots, puis retirer des descriptions tous
les stems appartenant à cette nouvelle liste.
DR ZAHRA KODIA AOUINA 30
SRBC - Méthodes Simples
Suppression mots parasites
Exemple
from [Link] import stopwords
# chargement des stopwords français
french_stopwords = set([Link]('french'))
# un petit filtre
tokens = [token for token in tokens if [Link]() not in french_stopwords]
print(tokens)
Il faut donc stemmiser cette liste de mots, puis retirer des descriptions tous
les stems appartenant à cette nouvelle liste.
DR ZAHRA KODIA AOUINA 31
SRBC - Méthodes Simples
FreqDist plot
from [Link] import FreqDist
text = "This is an example . This is test . example is for freq dist ."
fd = FreqDist([word for word in [Link]()])
total = fd.N()
for word in fd:
fd[word] /= float(total)
[Link]()
DR ZAHRA KODIA AOUINA 32
Vecteurs
stocker chacune des descriptions traitées sous forme de vecteurs.
Nous distinguons deux types de vecteurs:
❖ Vecteur Binaire ou,
❖ Vecteur de fréquence
DR ZAHRA KODIA AOUINA 33
Vecteurs
Chaque ligne est un vecteur qui correspond à une description,
chaque colonne correspond à un stem.
➢ vecteurs binaires on mettra un 1 si le stem est présent et zéro
sinon.
➢ vecteurs fréquence, si le stem est présent, alors la valeur
enregistrée sera TF * IDF.
▪ TF = nombreOccurrencesStem / nombreStems
▪ IDF = log( nombreDescriptions / nombreDescriptionsContenantStem )
L'IDF indique l'importance d'un stem par rapport aux autres stems.
DR ZAHRA KODIA AOUINA 34
Calcul des similarités
Une manière de voir combien sont proches deux objets considérés
Plus la distance entre les deux objets est petite, plus la similarité devient grande
ce qui fait qu’ils sont similaires.
Si nous voulons recommander des articles suite à une consultation d’un produit,
alors on peut prendre comme méthode générale:
1. calculer les similarités entre le produit consulté et chaque autre article
2. trier les articles dans l'ordre décroissant selon la similarité
3. donner comme réponse la liste des N premiers articles, où N est par exemple
fixé par l’administrateur.
DR ZAHRA KODIA AOUINA 35
Calcul des similarités
◦ Le coefficient de correspondance (très peu utilisé)
◦ La similarité cosinus
◦ La distance euclidienne
◦ Le coefficient Jaccard
SYSTÈME DE RECOMMANDATION 36
Similarité cosinus
Pour calculer la similarité du cosinus, on doit calculer le produit scalaire des deux
vecteurs et le diviser par le produit des normes des deux vecteurs.
soient T et V les vecteurs considérés :
simCos(T , V) =T*V/ (||V||*||T||)
Autrement dit :
Norme d'un vecteur V de dimension n :
❖ ||V|| = sqrt(V1 * V1 + V2 * V2 + ... + Vn * Vn)
Produit scalaire de deux vecteurs T et U de dimension n :
❖ T * V = T1 * V1 + T2 * V2 + ... + Tn * Vn
similarité du cosinus de T et U
❖ simCos(T , V) = (T * V) / (|T| * |V|)
DR ZAHRA KODIA AOUINA 37
Similarité cosinus en python
1ère méthode
from scipy import spatial
dataSetI = [3, 45, 7, 2]
dataSetII = [2, 54, 13, 15]
result = 1 - [Link](dataSetI, dataSetII)
2ème méthode
from [Link] import cosine_similarity
cosine_similarity([[3, 45, 7, 2], [2, 54, 13, 15]])
DR ZAHRA KODIA AOUINA 38
Similarité basée sur la distance
euclidienne
La distance euclidienne entre deux vecteurs T et V de dimension n:
DE(T , V) = sqrt((T1 - V1)2 + (T2 - V2)² + ... + (Tn - Vn)²)
Pour en faire une similarité, on peut considérer:
SimDE (T , V) = 1/DE(T,V)
✓au cas où DE(T , V) = 0 considérer le plus grand float représentable, ou codifier
ce cas autrement, selon le but dans lequel on le traite (trier les résultats, etc.).
DR ZAHRA KODIA AOUINA 40
Similarité basée sur la distance
euclidienne en python
from [Link] import distance
a = (1,2,3)
b = (4,2,6)
dst = [Link](a,b)
print(dst)
DR ZAHRA KODIA AOUINA 41
Similarité basée sur le coefficient de
Jaccard
Le coefficient de Jaccard est défini comme étant le quotient du cardinal de
l'intersection par celui de l'union.
simJaccG(T , V) = (T . V) / (|T|2 + |V|² - (T . V))
DR ZAHRA KODIA AOUINA 42
Similarité basée sur le coefficient de
Jaccard en python
import numpy as np
from [Link] import jaccard_similarity_score
U = [0, 2, 1, 3]
T = [0, 1, 2, 3]
print(jaccard_similarity_score(U, T))
DR ZAHRA KODIA AOUINA 43
Matrice des similarités
Calculer la similarité des produits 2 à 2 pour enfin aboutir à la matrice des similarités :
DR ZAHRA KODIA AOUINA 44
Définition formelle de
« Top-N items recommandation problem »
Trouver une liste L de N items intéressants pour l’utilisateur.
Ce type de problème s’applique dans tous les contextes,
incluant celle où il n’existe pas d’évaluation.
SYSTÈME DE RECOMMANDATION 45
Définition formelle de
« Best item recommendation problem »
➢ Trouver le meilleur item, nommé i*u, à suggérer à un utilisateur u
avec i *u I \ I u
➢ Dans un contexte où il existe une mesure d’évaluation de la
pertinence d’un item i pour un utilisateur u, alors
i*u = arg max f (u, j )
jI \ I u
➢ f : U × I → S est une fonction qui prédit l’évaluation f (u, i) d’un
utilisateur u pour un nouvel item i.
Définir f peut être un problème de régression ou de classification. Le
chapitre suivant explique comment procéder pour classer un item en
fonction d’un type d’individu.
SYSTÈME DE RECOMMANDATION 46
Méthodes basées sur les clusters
Soit X la matrice de taille nbProduits * nbMots qui contient les tf*idf de chaque
mot pour chaque nom de produit.
Soit Xc la matrice centrée des données (on retire pour chaque produit (ie chaque
ligne) la valeur du produit moyen).
Soit Sigma la matrice de variance covariance Xc'*Xc /nbProduits
D le vecteur des valeurs propres de Sigma en Python ( en Matlab matrice diagonale)
V la matrice des vecteurs propres de Sigma
On trie D pour avoir les q premiers vecteurs propres.
Soit W la matrice des q premiers vecteurs propres, normalisés, de taille nbStems*q
Soit CP la matrice des q composantes principales,
◦ CP = Xc*W
DR ZAHRA KODIA AOUINA 50