title | author | mathtools | homework-assignment | numbersections | lang | toc | loc | lof | margin-top | margin-bottom | margin-left | bibliography |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Transport optimal appliqué à la recommandation d'œuvres |
\textsc{Ryan Lahfa} |
true |
true |
true |
fr |
true |
true |
true |
0.3in |
0.7in |
1in |
true |
À partir d'un ensemble de préférences exprimées par des utilisateurs, on voudrait une méthode de prédiction des futures préférences des utilisateurs. On s'attachera à résoudre ce problème grâce à l'apprentissage automatique supervisé.
Précisément, on se donne une base de données représentée par une matrice
À partir de
On notera aussi
Le modèle sera testé sur le jeu de données fournis par le site [@mangaki] qui comporte:
- 2289 utilisateurs ;
- 12479 œuvres issus de l'animation japonaise (anime, mangas) ;
- plus de 350000 notes
Pour
- Pour chaque utilisateur
$i$ , déterminer les$k$ plus proches voisins, qu'on notera$\mathcal{N}(i) \subset [[1, n]]^k$ . Par voisin proche, on entend au sens d'une métrique$d : \R^m \times \R^m \to \R_{+}$ opérant sur les distributions d'utilisateurs. - Pour classifier une nouvelle entrée pour un utilisateur
$i$ , on demande l'avis de ses voisins qui connaissent la nouvelle entrée (en question) et on prend l'avis majoritaire sur cette nouvelle entrée comme prédiction, i.e.
En notant $\mathcal{N}'(i)j = { j \in \mathcal{N}(i) \mid m{u,j} \text{ est connu} }$ et
On abrégera par KNN le modèle des
Le choix du paramètre
Remarque 1 : En pratique, on peut apprendre
Ensuite, pour la métrique, on utilise la similarité cosinus qui possède empiriquement de bonnes performances sur les tâches de recommandation d'après [@sarwar2001item], dont on rappelle la définition:
\begin{equation*} \Sim(u, u') = \dfrac{r_u^{\intercal} r_{u'}}{\norm{r_u}2 \norm{r{u'}}_2} \end{equation*}
où
\begin{samepage} On peut aussi procéder à une visualisation des graphes de voisins dans les figures \ref{knn_graph} et \ref{giant_sub_graph}. \begin{figure}[H] \centering \includegraphics[scale=0.5]{assets/knn_graph.png} \caption[20 plus proches voisins d'un utilisateur avec plus de 200 notes sur le jeu de données Mangaki]{20 plus proches voisins d'un utilisateur avec plus de 200 notes sur le jeu de données Mangaki\footnotemark} \label{knn_graph} \end{figure} \end{samepage} \begin{figure}[h] \centering \includegraphics[scale=0.7]{assets/giant_knn_graph.png} \caption{Sous-graphe des 20 plus proches voisins sur le jeu de données Mangaki entier} \label{giant_sub_graph} \end{figure}
\footnotetext{Les étiquettes sont les identifiants d'utilisateurs.}
Comme défini en introduction, l'entraînement de 20-KNN dépend de la métrique
\begin{equation*} \Supp(u) = { j \in [[1, m]] \mid m_{u,j} \text{ est connu} } \end{equation*}
Ainsi, pour
Or, la situation dans laquelle l'utilisateur
Nous répondrons aux questions suivantes:
- Sachant qu'on dispose de l'ensemble des couvertures des œuvres, peut-on calculer une métrique qui tient compte de l'information visuelle de ces couvertures et des similarités entre les distributions d'utilisateurs ?
- En la remplaçant par la similarité cosinus, obtient-on une meilleure performance au sens d'une métrique d'erreur ?
- Est-ce qu'on constate des transferts d'information pertinents et intéressants tels que: la saison
$i$ d'une œuvre vers la saison$i + j$ de la même œuvre, du format manga vers le format anime ou vice versa ?
Ces travaux sont motivés notamment par [@vie2017] et forment un prolongement possible de cet article.
À notre connaissance, la littérature ne mentionne pas beaucoup de travaux qui cherche à intégrer des métadonnées visuelles dans un système de recommandation afin d'en améliorer sa qualité et son interprétabilité.
On notera: [@chu2017hybrid], [@prompt] et
- [@vie2017] où il s'agit d'un modèle qui combine un filtrage collaboratif et ensemble de régresseurs linéaires par utilisateur afin d'apprendre des préférences visuelles dans un cadre de démarrage à froid, ce travail permet l'interprétabilité des goûts d'un utilisateur en inspectant la matrice du régresseur linéaire, travaux qui ont inspiré celui-ci ;
- [@messina2019] où il s'agit d'un modèle purement basé sur le contenu qui extrait automatiquement des représentations visuelles profondes et des métadonnées telles que le contraste afin de recommander des œuvres artistiques digitales-- « artworks ».
Le transport optimal est un domaine qui est de plus en plus appliqué notamment grâce à [@cuturi2013] qui a permis le calcul effectif et approximatif des objets de façon traitable.
Au préalable, notons
Si l'on dispose de
On pose
Ainsi, on définit la distance de Wasserstein comme étant:
\begin{equation*} \mathcal{W}(r, c) = \min_{\gamma \in U(r, c)} \dps{\gamma}{C}_F \end{equation*}
où
Remarque : On rencontre aussi le nom de « Earth's Mover Distance » ou EMD pour la distance de Wasserstein, cela peut s'expliquer par l'interprétation intuitive suivante: si les distributions
En revanche, son temps de calcul est prohibitif, en effet, il est en
Intérêt: calcul efficace et rapide $\mathcal{W}$ , propagation de l'information visuelle dans le modèle
On introduit
- Rendre le calcul plus rapide ;
- Rendre le plan de transport optimal le plus simple\footnote{Lire: parcimonieux, avec le plus de zéros.} possible en forçant son entropie à être faible
\begin{equation*} \mathcal{W}{\varepsilon}(r, c) = \min{\gamma \in U(r, c)} \dps{\gamma}{C}_F + \varepsilon \Omega(\gamma). \end{equation*}
où
De plus, le minimum est atteint pour un
\begin{equation*} \forall (i, j) \in [[1, d]]^2, \gamma_{i,j} = u_i \exp(-C/\varepsilon) v_j \end{equation*}
Pour
C'est l'algorithme de Sinkhorn-Knopp, présenté initialement dans [@sinkhorn1967diagonal], réutilisé de façon fondamentale dans [@cuturi2013]. Il permet donc de calculer une approximation de
On prouve aussi dans [@cuturi2013] que $(r, c) \mapsto \mathbbm{1}{r \neq c} \mathcal{W}{\varepsilon}(r, c)$ est une distance par la même approche employée dans [@villani2008].
Remarque 1 : En raison de la nature itérative de l'algorithme de Sinkhorn-Knopp, on peut très facilement paralléliser le calcul des facteurs de dilatations (qui sont des vecteurs dans l'algorithme original) en des matrices lorsqu'on calcule des distances d'une distribution de probabilité vers
En utilisant les travaux de [@saito2015] et [@vie2017], on peut calculer des représentations parcimonieuses de couvertures
\begin{equation*} C = \left(\norm{p_i - p_j}2^2\right){(i, j) \in [[1, m]]^2} \end{equation*}
\begin{samepage} Donc, la matrice de coût représente la similarité visuelle entre deux couvertures, que l'on illustre entre les deux saisons de l'anime \textbf{Code Geass: Lelouch of the Rebellion} :
\begin{figure}[!ht] \centering \includegraphics[scale=0.4]{assets/cg_similarity.png} \caption{Distance entre les deux couvertures où le coût de déplacement est minimal sur toutes les œuvres du jeu de données} \end{figure} \end{samepage}
En vertu de cette propriété de coût minimal, la distance de Wasserstein propagera correctement l'information visuelle entre les deux couvertures, qui s'avère être l'information : « ces deux œuvres font partie du même univers et sont directement la suite ou l'antépisode l'un de l'autre ».
Le troisième objectif du TIPE a été donc atteint.
On appellera donc désormais 20-W-KNN le modèle 20-KNN dans lequel on remplace la similarité cosinus par une approximation de la distance de Wasserstein
Le premier objectif du TIPE a été atteint.
Dans le modèle à similarité cosinus, on fait voter les voisins afin de calculer une prédiction. En revanche, puisqu'on manipule des distributions de probabilités, on ne peut plus procéder à la détermination de la classe majoritaire.
Au lieu de cela, on calcule le barycentre des distances de Wasserstein, pour un utilisateur
\begin{equation*} v = \dfrac{1}{\card \mathcal{N}(u)} \argmin_{v \in \Sigma_m} \sum_{u' \in \mathcal{N}(u)} \mathcal{W}(v, u') \end{equation*}
Remarque 1 : Ce calcul peut être encore effectué rapidement par l'algorithme de Sinkhorn-Knopp, d'après [@cuturi2014fast].
Ainsi, on connaît le germe de probabilité:
\begin{equation*} \left(\PR(m_{u,j} = 1)\right){j \in [[1, m]]} = (v_j){j \in [[1, m]]} \end{equation*}
À partir de cela, on peut opter pour une méthode à base de seuil, on fixe un paramètre
\begin{equation*} \widehat{m_{u,j}} = \left{ \begin{aligned} & 1 \text{ si } \PR(m_{u,j} = 1) \geq \alpha \ & 0 \text{ sinon.} \end{aligned} \right. \end{equation*}
On appelle
Remarque 1 : Ce paramètre peut être appris par recherche d'hyper-paramètres pendant l'entraînement du modèle.
Remarque 2 : Il peut être rendu dépendant de l'utilisateur, lors de l'entraînement en déterminant le profil d'un utilisateur. Par exemple, une approche naïve consisterait à dire que plus un utilisateur a de préférences négatives, plus le seuil de discrimination sera élevé, et vice versa.
Remarque 3 : Si les
Les codes des expériences sont fournies sur le référentiel GitHub: https://github.com/mangaki/hiyajo-ot et reproductibles.
Le matériel employé pour l'expérience est un serveur muni d'un Intel(R) Atom(TM) CPU C2750 @ 2.40GHz à 8 cœurs et 16 Gio de RAM.
Plusieurs implémentations de référence seront réutilisées directement plutôt que de les réécrire car leur (ré)-implémentation ne concerne pas le fond de ce TIPE, on utilisera notamment NumPy, SciPy, NetworkX, IPyParallel et enfin POT [@flamary2017pot] qui fournit des implémentations de l'algorithme de Sinkhorn.
Une courbe ROC est un graphique exprimant le taux de vrai positifs (TPR) par rapport au taux de faux positifs (FPR). On calcule l'ensemble des seuils de discriminations possibles et on trace une courbe ROC montrant ces seuils et on peut calculer l'aire sous la courbe, ce résultat est indépendant des seuils de discrimination. Ce qui rend le choix de cet outil intéressant puisque 20-WKNN dépend d'un seuil de discrimination pour effectuer des prédictions. Ce résultat est pris comme l'erreur de recommandation que l'on note en tant que « AUROC » pour « Area Under Receiving Operating Characteristics ».
\begin{figure}[!ht]
\centering
\begin{tabular}{cccc} \toprule
AUROC & Ensemble de test\ \midrule
KNN & 0.514 \
W-KNN & \textbf{0.625}\ \bottomrule
\end{tabular}
\caption{$5$-fold où l'on s'assure que les classes sont équilibrées, répété 3 fois avec un seed de
Le second objectif du TIPE a été atteint, on constate que W-KNN a une meilleure performance que KNN de façon stable et reproductible.
Après avoir atteint tous les objectifs fixés par le TIPE, nous n'avons pas discuté des différences entre les temps d'entraînement et de prédiction de KNN et W-KNN. En l'état, W-KNN est 100 fois plus lent à entraîner que KNN malgré l'algorithme de Sinkhorn, cela s'explique que les expériences n'ont pas exploité le caractère hautement parallélisable de cet algorithme afin de faire diminuer les temps de calcul.
Cependant, une alternative est envisageable par [@altschuler2017near], un algorithme quasi linéaire de calcul des distances approximatifs de Wasserstein est possible, et mis en place sous le nom de Greenkhorn dans la librairie POT, cependant il est très sensible aux erreurs numériques et n'est pas conçu pour la parallélisation automatique. Durant les essais préliminaires, aucune renormalisation n'a été fructueuse.
De plus, l'algorithme de Sinkhorn possède une version stabilisée qui fonctionne selon le principe décrit dans [@schmitzer2019stabilized] mais Greenkhorn n'en possède aucune, il serait intéressant de contribuer à POT afin d'ajouter le support pour un tel schéma de calcul numérique et de résoudre le problème décrit ici: PythonOT/POT#54 par la même occasion.
Ces travaux feront l'objet d'une publication scientifique plus tard.