Modèle de factorisation matricielle pour les systèmes recommandés comment déterminer le nombre de fonctionnalités latentes?

8

J'essaie de concevoir une technique de factorisation matricielle pour un élément utilisateur simple, un système de recommandation de notes. J'ai 2 questions à ce sujet.

Tout d'abord dans une implémentation simple que j'ai vue de la technique de factorisation matricielle pour la recommandation de film, l'auteur vient d'initialiser les dimensions des fonctionnalités latentes appelons-le K des deux matrices utilisateur et élément de fonctionnalité latente, à une constante K disons 2 et donc chacune ses matrices de caractéristiques latentes P et Q étaient NXK et MXK où R est la matrice de notation des éléments utilisateur d'origine que nous essayons d'approximer avec les dimensions NXM (N utilisateurs et M éléments). Ma question est donc de savoir comment déterminer le «K» optimal (nombre de fonctionnalités latentes) dans ce cas au lieu de simplement le définir sur une constante?

Existe-t-il également un moyen d'incorporer les informations sur l'utilisateur ou l'article que j'ai déjà dans mon ensemble de données, telles que la note moyenne d'un utilisateur particulier, le sexe de l'utilisateur, l'emplacement_utilisateur, etc. dans ce résultat de la factorisation de la matrice tout en faisant ma recommandation finale (je suppose peut-être qu'un modèle de fusion avec les informations sur l'utilisateur et l'élément représenté dans un autre modèle de filtrage basé sur le contenu avec mon modèle de factorisation matricielle fonctionnerait?).

1> Ma première question est de savoir comment déterminer le nombre optimal de caractéristiques latentes K 2> quelqu'un connaît-il la littérature récente qui implémente un modèle de mélange de factorisation matricielle et de filtrage basé sur le contenu (parce que je suppose que ce serait la seule façon de représenter les informations démographiques d'utilisateurs et d'éléments dans un espace de fonctionnalité commun.)

user1009091
la source

Réponses:

3

En réponse à votre première question, la validation croisée est une approche largement utilisée. Un schéma possible est le suivant.

Pour chaque valeur K dans une plage présélectionnée, utilisez la validation croisée pour estimer les performances du modèle (par exemple, la précision de la prédiction). Cela fournira une mesure de performance estimée du modèle par valeur k. Sélectionnez ensuite le k qui correspond à la performance la plus élevée.

En réponse à votre deuxième question, je voudrais examiner des exemples d'une «approche hybride», par exemple dans http://www.stanford.edu/~abhijeet/papers/cs345areport.pdf

joel38237
la source
0

Pour répondre à votre première question, je ferais une validation croisée, et pour la deuxième question, je dirais que vous devriez examiner la factorisation du tenseur. Si vous avez une représentation de données multidimensionnelle, vous pouvez certainement envisager la factorisation du tenseur qui vous permet de jouer avec des données supplémentaires comme d'autres dimensions.

Vous pouvez vérifier le lien suivant pour cela.

https://github.com/kuleshov/tensor-factorization
mgokhanbakal
la source