4.3 D’une pierre deux coups : recommandation et apprentissage d’influence
4.3.2 Optimisation
Bien que l’équation4.10ne soit pas convexe selonU,V etA, elle l’est disjointement selon
cha-cun des trois paramètres à condition de fixer les deux autres. Nous proposons d’optimiser la fonction
objectif de l’équation4.10en utilisant un processus relaxation dans l’idée de celui de Gauss-Seidel :
nous fixons alternativement deux des trois paramètres (U,V ouA) et nous mettons à jour le
troi-sième. Lorsque deux des trois paramètres sont fixés, le problème résultant est un problème simple et
convexe de minimisation quadratique des moindres carrés et peut être résolu efficacement. Ainsi le
processus d’optimisation consiste à mettre à jour de façon efficace alternativement à chaque
itéra-tion la matrice utilisateurU, la matrice articleV et la matrice poidsA. Pour obtenir les bonnes règles
de mise à jour pour chacun des trois paramètres (Ui,Vjetαi i
0), nous devons calculer les gradients de
la fonction objectif par rapport aux différents paramètres.
Comme nous sommes dans le cas de données d’appréciation implicite (i.e.nous ne pouvons
dé-cider siYi j =0 signifie que l’utilisateuri n’aime pas l’article j ou qu’il ne le connait pas), nous ne
pouvons pas donner la même importance aux informations que nous savons vraies (comme les 1
dans la matriceY), et aux informations dont nous ne connaissons pas le vrai sens (comme les 0 dans
la matriceY). Nous discuterons plus loin de la meilleure façon de définirci j afin de pénaliser plus
lourdement les données observées. Il est à noter qu’en opposition aux modèles de factorisation pour
des données explicites, comme des données de vote (rating), où l’apprentissage est réalisé en
par-courant uniquement les données observées, nous réalisons notre optimisation sur l’ensemble de la
matriceY, ceci inclut donc les entrées non observées qui peuvent être vues comme une forme faible
d’appréciation négative (negative feedback).
4.3.2.1 Mise à jour de U
Pour trouver la règle de mise à jour d’un vecteur facteur pour un unique utilisateuri,Ui, nous
calculons le gradient de la fonction objectif pour un utilisateur donné par rapport au facteurUi de
cet utilisateur et nous l’annulons. Nous pouvons ensuite analytiquement résoudre cette expression
par rapport àUien trouvant le vecteur ˆUitel que∇U
iJi( ˆUi)=0. Pour formuler la règle de mise à jour,
il est pratique de l’écrire sous forme matricielle. Pour cela, nous définissons une matrice diagonale
Ci∈Rp×ptelle queCij j=ci j (Cij k=0, sij6=k). On peut noter égalementCi=diag(ci•).
0= ∇U
iJi( ˆUi),
0=
"
∇U
iX
j
ci j
¡
UiVj+ X
k∈F
iαi kUkVj
|Fi| −Yi j
¢2
+λ1kUik2
#
ˆ
U
i,
0=2( ˆUiV+AiUV
|Fi| −Yi•)C
iV>+2λ1Uˆi (carAiU= X
k∈F
iαi kUk),
ˆ
Ui=
µ
Yi•CiV>−AiUV C
iV>
|Fi|
¶
(V CiV>+λ1Id)−1. (4.11)
Dans cette règle de mise à jour, le vrai problème n’est pas l’inversion de la matriced×dmais le calcul
de la matriceV CiV>, qui est de complexité enO(p×d2) (puisqueCiest diagonale) et que nous allons
réduire grâce à une astuce de calcul.
Ce produit est trop coûteux même pour de petites données car il faut le calculer pour chaque
utilisateur. En reprenant l’astuce présentée par [Huet al.2008], nous remplaçonsV CiV>parV V>+
V(Ci−I)V>. Comme le produitV V>est indépendant de l’utilisateuri, il peut être calculé une fois
pour toute avant chaque itération (et non pas pour chaque utilisateuri), et en choisissant
intelligem-mentci j, le produitV(Ci−I)V>peut être calculé efficacement. L’idée est d’annuler un maximum
de termes diagonaux de la matriceCi−I. Fixer le poids comme dans l’équation4.12est un choix
intéressant.
ci j=1+βYi j, (4.12)
oùβest une constante donnant plus ou moins de poids aux données connues. En effet, les termes
diagonaux deCi−I seront nuls pour chaque j oùYi j=0. Ainsi il ne sera pas nécessaire de calculer
V(Ci−I)V>, mais seulementVY
i(Ci−I)Y
iV>
Y
i, oùYi est l’ensemble des articles qu’un utilisateuri
apprécie. Étant donné que la matriceY est par nature parcimonieuse, nous avons |Yi| ¿ p. Ceci
conduit à une complexité enO(|Yi| ×d2) linéaire par rapport au nombre d’articles que l’utilisateuri
4.3. D’une pierre deux coups : recommandation et apprentissage d’influence 53
4.3.2.2 Mise à jour de V
Pour mettre à jour la matriceV, nous utilisons la matriceU0définie parU0
i=Ui+ X
k∈F
iαi kUk
|Fi| pour
chaque utilisateuri. En injectantU0dans la fonction coût, on obtient :
L(U,V,A)=X
i,j
ci j(Ui0Vj−Yi j)2.
Le calcul du gradient par rapport àVjest alors direct et la règle de mise à jour peut s’écrire sous forme
matricielle en définissant la matrice diagonaleCjparCi ij =ci j2. Ainsi la règle de mise à jour deVjest
la suivante :
0= ∇V
jJ( ˆVj),
0=
"
∇V
jX
i
ci j(Ui0Vj−Yi j)2+λ2kVjk2
#
ˆ
V
j,
0=2(U0>Cj(U0Vˆj−Y•j)+2λ2Vˆj,
0=U0>CjU0Vˆj−U0>CjY•j+λ2Vˆj,
ˆ
Vj=³U0>CjU0+λ2Id´−1U0>CjY•j. (4.13)
Pour calculer le produit coûteux, nous proposons de réutiliser l’astuce décrite plus haut en réécrivant
U0>CjU0=U0>U0+U0>
Y
j(Cj−I)Y
jU0
Y
j, oùYj désigne l’ensemble des utilisateurs qui apprécient
l’ar-ticlej. Tout comme dans le paragraphe concernant la mise à jour deU, nous calculonsU0>U0une fois
avant chaque itération et non pour chaque article j, et la complexité du calcul deUY0>
j
(Cj−I)Y
jUY0
jest enO(|Yj| ×d2).
4.3.2.3 Mise à jour de A
Nous allons proposer dans cette partie deux approches permettant la mise à jour de la matriceA.
Une première approche consiste à travailler ligne par ligne, c’est-à-dire mettre à jourAi• pour
chaque utilisateuri. Comme nous ne cherchons pas à prédire de nouveaux liens d’amitié entre
uti-lisateurs, mais simplement le niveau d’influence des amis d’un utilisateuridonné, la mise à jour de
Ai•se ramène à celle deAiF
i. Nous annulons le gradient comme précédemment pour obtenir la règle
de mise à jour suivante sous forme matricielle :
ˆ
AiF
i=(Yi•CiV>UF>
i−UiV CiV>UF>
i)
ÃUF
iV CiV>UF>
i|Fi| +λ3IF
i!−1
. (4.14)
Notons à nouveau que le coût de calcul du produitUiV CiV>UF>
i
, peut être réduit si nous appliquons
la même astuce que celle des règles de mise à jour deUi et deVj. Le principal obstacle en terme
de complexité de cette approche se situe dans le calcul de l’inverse de la matrice qui est de taille
|Fi| × |Fi|, ce qui implique une complexité enO(|Fi|3), c’est-à-dire que la complexité est cubique
par rapport au nombre d’amis de l’utilisateuri. Suivant le réseau social, si nous avonsd¿ |Fi|pour
un pourcentage significatif d’utilisateur, cette règle de mise à jour peut s’avérer coûteuse en terme de
temps de calcul.
Une seconde approche pour mettre à jourAconsiste à calculer les termes deA, non pas utilisateur
par utilisateur mais terme à terme, c’est-à-dire mettre à jourαi i
0pour deux utilisateursieti0donnés.
Nnous calculons ici la dérivée partielle de la fonction objectif par rapport àαi i
0et nous l’annulons
pour obtenir la règle de mise à jour suivante :
ˆ
αi i
0=
Yi•−UiV− X
k∈F
ik6=i
0αi kUkV
|Fi|
CiV>Ui>
0Ã
Ui
0V CiV>Ui>
0|Fi| +λ3
!−1
(4.15)
Dans ce cas, nous avons seulement à inverser un scalaire au lieu d’une matrice. Nous pouvons
éga-lement utiliser la même astuce que précédemment pour le produit apparemment coûteuxV CiV>.
Celui-ci peut en effet être réécrit commeV CiV>=V V>+VY
i(Ci−I)Y
iV>
Y
i, oùYiest l’ensemble des
articles appréciés par l’utilisateuri. Dans cette approche, l’obstacle computationnel majeur peut être
le nombre d’itérations qui est exactement le nombre de relations dans le graphe social.
Pour comparer ces deux approches, nous devons considérer le calcul de l’ensemble des termes
Ai•pour un utilisateuri donné. La complexité de l’équation4.15croît linéairement par rapport au
nombre d’amis dei(enO(|Fi| ×d3)), tandis que la complexité dans l’équation4.14est polynomiale
par rapport au nombre d’amis dei (enO(|Fi|3)). Suivant la nature des données, il faudra choisir la
méthode la plus intéressante. Toutefois, il est plus que courant de rencontrer des réseaux sociaux où
un grand nombre d’utilisateurs ont beaucoup d’amis, bien plus que le rang que l’on choisit pour le
modèle (|Fi| Àd). Dans ce cas la règle de mise à jour de l’équation4.15sera clairement plus
perfor-mante que celle de l’équation4.14en terme de complexité.
4.3.2.4 Algorithme
À partir de ces règles de mise à jour, nous posons l’algorithme6d’optimisation de la fonction
objectif4.10selonU,V et A. Nous discuterons de l’initialisation des différents paramètres dans la
partie expérimentation.
Entrées :Y,F
InitialiserU,V etA
Répéter
Pouri∈U faire
mettre à jourUicomme spécifié dans l’équation (4.11)
Fin Pour
Pourj∈V faire
mettre à jourVj comme spécifié dans l’équation (4.13)
Fin Pour
Pouri∈U faire
Pourk∈Fifaire
mettre à jourαi kcomme spécifié dans l’équation (4.15)
Fin Pour
Fin Pour
jusqu’à ce que(convergence globale)
4.3. D’une pierre deux coups : recommandation et apprentissage d’influence 55
Nous avons également proposé une version légèrement modifiée de l’algorithme6. Au lieu de
mettre à jour alternativementU,V etA, nous fixonsAet optimisons alternativementU etV jusqu’à
convergence. Une fois la convergence atteinte, nous mettonsAà jour pourUetV fixés. Nous itérons
ce processus jusqu’à une convergence globale. Ainsi obtenons-nous l’algorithme7.
Entrées :Y,F
InitialiserU,V etA
Répéter
Répéter
Pouri∈U faire
mettre à jourUicomme spécifié dans l’équation (4.11)
Fin Pour
Pourj∈V faire
mettre à jourVjcomme spécifié dans l’équation (4.13)
Fin Pour
jusqu’à ce que(UetV aient convergé)
Pouri∈U faire
Pourk∈Fifaire
mettre à jourαi kcomme spécifié dans l’équation (4.15)
Fin Pour
Fin Pour
jusqu’à ce que(convergence globale)
Algorithme 7 – Socially-Enabled Collaborative Filtering v2
Nous avons constaté que ce deuxième algorithme permettait une convergence plus rapide vers
une solution, tout en assurant une meilleure stabilité.
4.3.2.5 Prédiction
Notons qu’une fois le modèle appris, les prédictions peuvent être réalisées en utilisant la fonction
de décision de l’équation4.9. Ceci nécessite qu’au moment de la prédiction l’ensemble du réseau
social soit en mémoire et de nombreux accès mémoire risquent de ralentir le calcul du score. Les
sys-tèmes de recommandation commerciaux modernes n’ont généralement que quelques millisecondes
pour fournir des recommandations. Pour accélerer cette opération nous pouvons précalculer les
fac-teurs utilisafac-teursUi0=Ui+P
k∈F
iα
i k|F
i|Uk. Le calcul du score devient alorsFi j=Ui0Vj, et le modèle est
simplement composé de la matriceU0et la matriceV et non plus deU,V etA.
Dans le document
Factorisation Matricielle, Application à la Recommandation Personnalisée de Préférences
(Page 58-62)