• Aucun résultat trouvé

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

i

Ji( ˆ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

i

Ji( ˆUi),

0=

"

U

i

X

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=

µ

YiCiV>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(CiI)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(CiI)V>peut être calculé efficacement. L’idée est d’annuler un maximum

de termes diagonaux de la matriceCiI. Fixer le poids comme dans l’équation4.12est un choix

intéressant.

ci j=1+βYi j, (4.12)

βest une constante donnant plus ou moins de poids aux données connues. En effet, les termes

diagonaux deCiI seront nuls pour chaque jYi j=0. Ainsi il ne sera pas nécessaire de calculer

V(CiI)V>, mais seulementVY

i

(CiI)Y

i

V>

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(Ui0VjYi 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

j

J( ˆVj),

0=

"

V

j

X

i

ci j(Ui0VjYi j)2+λ2kVjk2

#

ˆ

V

j

,

0=2(U0>Cj(U0VˆjYj)+2λ2Vˆj,

0=U0>CjU0VˆjU0>CjYj+λ2Vˆj,

ˆ

Vj=³U0>CjU0+λ2Id´1U0>CjYj. (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

(CjI)Y

j

U0

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

(CjI)Y

j

UY0

j

est 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

=(YiCiV>UF>

i

UiV CiV>UF>

i

)

ÃUF

i

V 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

0

pour deux utilisateursieti0donnés.

Nnous calculons ici la dérivée partielle de la fonction objectif par rapport àαi i

0

et nous l’annulons

pour obtenir la règle de mise à jour suivante :

ˆ

αi i

0

=

Yi•−UiVX

k∈F

i

k6=i

0

αi kUkV

|Fi|

CiV>Ui>

0

Ã

Ui

0

V 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

(CiI)Y

i

V>

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.

Documents relatifs