• Aucun résultat trouvé

1.2 Les modèles à facteurs latents pour le filtrage collaboratif

1.2.1 Techniques de factorisation matricielle

En recommandation, la factorisation matricielle représente les items et les utilisateurs sous forme de vecteurs au sein d’un même espace latent Rnde sorte que la note d’un utilisateur u à propos d’un item i est donnée par le produit scalaire entre la représentation de l’utilisateur et celle de l’item. Pendant la phase d’apprentissage au cours de laquelle est construite cette représentation latente, il est possible d’exploiter d’autres sources d’informations, comme les interactions implicites (navigation, clics ou requêtes utilisateurs), ou encore la chronologie des évaluations (appelé horodatage) [Koren et al., 2009].

Décomposition en valeurs singulières

La décomposition en valeurs singulières (SVD) est couramment utilisée pour la réduction de dimension dans divers problèmes d’exploration de données et de recherche d’information. C’est une technique d’approximation matricielle de faible rang qui s’appuie sur un théorème selon lequel n’importe quelle matrice peut s’écrire sous la forme U SVT où S est une matrice diagonale contenant les valeurs singulières (le poids de chaque concept) et U ,V sont des matrices orthogonales d’ordre m et n. Formellement, cela consiste à trouver les matrices U , S et V tel que :

minR∈Rm×nkR − U SVTk2F (1.9)

où R est notre matrice de notes observées que l’on cherche à approximer et k · k2F la norme de Frobenius.

La solution exacte correspond à celle où le nombre de valeurs singulières est égal au rang de la matrice R. Mais, une approximation peut également être générée avec une dimension de l’espace latent fixée à une valeur k inférieure à ce rang : c’est une décomposition en valeurs singulières approchée [Eckart and Young, 1936]. Dans ce cas, on garde les k plus grandes valeurs singulières. La matrice de notes est alors approximée par la matrice Mk de rang k de sorte que l’on ait : Mk = UkSkVkT.

Une approche directe pour cette décomposition en valeurs singulières consiste à calculer les valeurs propres et les vecteurs propres des matrices carrées RRT ou RTR ; la matrice Uk

1.2. Les modèles à facteurs latents pour le filtrage collaboratif (respectivement Vk) contient alors les k vecteurs propres associés aux k plus grandes valeurs propres de la matrice RRT (resp. RTR). Le principal inconvénient de cette méthode est qu’elle n’est pas appropriée pour les matrices creuses. En effet, il faut dans ce cas compléter les données manquantes par des valeurs neutres (par exemple la note 0) de manière à rendre la matrice dense et exploitable [Sarwar et al., 2000]. La quantité de valeurs ajoutées rend également cette technique non envisageable pour de gros jeux de données.

De nombreux travaux récents [Koren et al., 2009, Canny, 2002, Koren, 2008, Paterek, 2007, Salakhutdinov et al., 2007] ont contourné ce problème en modifiant la fonction de coût (1.9) pour apprendre uniquement sur les observations. Autrement dit, il s’agit de minimiser une fonction de coût égale à la somme des erreurs empiriques sur les données d’entraînement constituées d’une partie de l’historique à disposition. Formellement, la fonction objectif est définie de la manière suivante :

minqi,pu∈Rn X

(u,i)∈J

(rui− qiTpu)2 (1.10)

sur l’ensemble des couples J de notes (u, i) observées.

Prise en compte des biais utilisateur et item

L’un des points les plus délicats rencontrés dans les systèmes de recommandation provient de l’existence de biais utilisateur et item. Pour bien comprendre cela, il suffit de revenir à un système non-personnalisé qui suppose alors qu’un item ayant une forte utilité pour un grand nombre d’utilisateurs devrait satisfaire n’importe quel utilisateur actif mieux qu’un item choisi au hasard. Derrière cette approche se cache l’idée que les items ne sont pas tous évalués de la même manière et que certains sont plus populaires que d’autres : ils obtiennent des notes plus nombreuses et plus favorables, donnant alors une utilité moyenne plus élevée. C’est la notion de biais item. Ce qui est vrai pour les items l’est également pour les utilisateurs qui ne perçoivent pas le barème de notation de la même manière. Certains notent plus favorablement, d’autres n’évaluent que certains items. Cela correspond au biais utilisateur [Funk, 2006].

En ce qui concerne les données réelles, il se trouve qu’une partie des variations des notes observées provient des biais utilisateur et item [Koren et al., 2009] et pour en tenir compte, il est possible de modifier l’équation (1.10) en définissant la note prédite par :

ˆ

rui= µ + bi+ bu+ qTi pu (1.11)

où µ correspond à la moyenne des notes sur l’ensemble du corpus et bi (respectivement bu) est la différence entre les notes de i (resp. u) et la moyenne du corpus.

La fonction objectif (1.10) devient alors dans ce contexte : minqi,pu∈Rn

X

(u,i)∈T

Optimisation

Le manque de données peut rapidement poser problème. Résoudre l’équation (1.12) est un problème inverse mal posé, c’est-à-dire un problème de minimisation dans lequel les para-mètres sont identifiés à partir d’observations et dont la solution n’est pas une fonction conti-nue des données. En d’autres termes, le fait que la matrice soit particulièrement creuse (i.e. le nombre de notes est faible) conduit au surapprentissage puisque chaque nouvelle donnée intégrée peut considérablement modifier les paramètres du modèle. Pour pallier ce phéno-mène qui pénalise la généralisation et donc la recommandation, un terme de régularisation est utilisé [Koren et al., 2009] :

minqi,pu∈Rn X

(u,i)∈T

(rui− µ − bi− bu− qTi pu)2+ λ(kqik2+ kpuk2+ b2i + b2u) (1.13)

avec λ est le paramètre permettant de contrôler l’importance de la régularisation. Plus le terme est élevé ou moins l’utilisateur n’a de notes, plus les vecteurs sont de norme faible. Un utilisateur n’ayant qu’une seule note aura un vecteur proche de 0 et donc aura des notes proches de la moyenne.

Les méthodes de type descente de gradient sont des méthodes adaptées pour résoudre ce type de problème. D’un point de vue optimisation, on utilise souvent soit une descente sto-chastique soit une descente par lot. Pour la descente de gradient stosto-chastique (ou séquentielle), chaque couple (u, i) ∈ T de l’ensemble d’entraînement est considéré de manière indépendante et aléatoire pour la mise à jour des vecteurs pu et qi associés. Pour la descente par lot, les exemples d’entraînement sont parcourus par paquets, par exemple en mettant à jour le vecteur de l’utilisateur une fois parcouru l’ensemble de son historique.

Formellement, en posant eui = rui− µ − bi− bu− qT

i pu l’erreur pour le couple (u, i), la descente de gradient stochastique met à jour chaque vecteur pu et qi de la manière suivante [Funk, 2006]. Pour chaque observation (u, i) :

qi ← qi+ γ(eui· pu− λ · qi) pu ← pu+ γ(eui· qi− λ · pu)

bu← bu+ γ(eui− λ · bu) bi ← bi+ γ(eui− λ · bi)

alors qu’une descente par lot alternée procédera de la façon suivante : qi← qi+ γ(X u eui· pu− λ · qi) pu← pu+ γ(X i eui· qi− λ · pu) bu ← bu+ γ(X u eui− λ · bu) bi ← bi+ γ(X i eui− λ · bi)

1.2. Les modèles à facteurs latents pour le filtrage collaboratif La facilité d’implémentation, la rapidité d’apprentissage et les très bonnes performances sont à l’origine de la popularité des techniques de descente de gradient stochastique parmi les systèmes de recommandation de la littérature. Nous les retrouvons d’ailleurs massivement utilisées dans les challenges Netflix [Bennett and Lanning, 2007] et Yahoo ! KDD Cup 2011 [Dror et al., 2012].