Filtrage collaboratif par factorisation matricielle avec fonction de perte logistique


9

Envisagez un problème de filtrage collaboratif. Nous avons une matrice de taille #users * #items. si l'utilisateur i aime l'article j, si l'utilisateur i n'aime pas l'article j ets'il n'y a pas de données sur la paire (i, j). Nous voulons prédire pour les futurs utilisateurs, paires d'articles.MMi,j=1Mi,j=0Mi,j=?Mi,j

L'approche de filtrage collaboratif standard consiste à représenter M comme le produit de 2 matrices telles que est minimale (par exemple en minimisant l'erreur quadratique moyenne pour les éléments connus de ).U×V||MU×V||2M

La fonction de perte logistique me semble plus appropriée, pourquoi tous les algorithmes utilisent-ils MSE?


1
Dans ce cas, cela a du sens, mais la plupart du temps M_i, j peut être une note et dans ce cas, le MSE est plus utile. Je dirais que le MSE est plus général.
ThiS

Réponses:


9

Nous utilisons la perte logistique pour la factorisation matricielle implicite chez Spotify dans le contexte des recommandations musicales (en utilisant le nombre de jeux). Nous venons de publier un article sur notre méthode dans un prochain atelier NIPS 2014. Le document est intitulé Factorisation de la matrice logistique pour les données de rétroaction implicite et peut être trouvé ici http://stanford.edu/~rezab/nips2014workshop/submits/logmat.pdf

Le code du document peut être trouvé sur mon Github https://github.com/MrChrisJohnson/logistic-mf


1
L (R | X, Y, β) = Prod (p (lui | xu, yi, βu, βi) ^ α.r_ui * (1 - p (lui | xu, yi, βu, βi)) ^ (1 - α.r_ui) A a regardé votre code et vous utilisez 1 + α.r_ui l64: A = (self.counts + self.ones) * A github.com/MrChrisJohnson/logistic-mf/blob/master/ … Par conséquent, est-ce que je manque quelque chose?
Cordialement

J'ai jeté un œil au document que vous avez publié. C'est très intéressant car la factorisation matricielle avec régression logistique n'a pas été étudiée activement. Quoi qu'il en soit, je suis un peu confus avec votre fonction de perte (2) L (R | X, Y, β) = Prod (p (lui | xu, yi, βu, βi) ^ α.r_ui * (1 - p (lui | xu, yi, βu, βi)) Concernant (3), je pense qu'il y a une faute de frappe L (R | X, Y, β) = Prod (p (lui | xu, yi, βu, βi) ^ α .r_ui * (1 - p (lui | xu, yi, βu, βi)) ^ (1 + α.r_ui ) Mais, en fait, je suis encore un peu confus. En effet, je m'attendais à une loi de type Bernouilli telle as
fstrub

Peut-être que je suis assez en retard sur le sujet .. quelqu'un a eu la chance d'essayer cet algo en dehors du contexte de la recommandation musicale et au lieu du contexte classique de la recommandation de produit? Merci.
Marco Fumagalli

3

La plupart des articles que vous trouverez sur le sujet traiteront de matrices où les notes sont sur une échelle [0,5]. Dans le cadre du prix Netflix par exemple, les matrices ont des notes discrètes de 1 à 5 (+ les valeurs manquantes). C'est pourquoi l'erreur quadratique est la fonction de coût la plus répandue. D'autres mesures d'erreur telles que la divergence Kullback-Leibler peuvent être observées.

Un autre problème qui peut survenir avec la factorisation matricielle standard est que certains des éléments des matrices U et V peuvent être négatifs (notamment lors des premières étapes). C'est une raison pour laquelle vous n'utiliseriez pas la perte de journal ici comme fonction de coût.

Cependant, si vous parlez de factorisation matricielle non négative, vous devriez pouvoir utiliser la perte de journal comme fonction de coût. Vous êtes dans un cas similaire à la régression logistique où la perte de log est utilisée comme fonction de coût: vos valeurs observées sont des 0 et des 1 et vous prédisez un nombre (probabilité) entre 0 et 1.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.