Je cherche à implémenter un modèle dynamique pour recommander un film à un utilisateur. La recommandation doit être mise à jour chaque fois que l'utilisateur regarde un film ou le note. Pour faire simple, je pense à prendre en compte deux facteurs:
- les notes antérieures d'autres films par l'utilisateur
- le temps que l'utilisateur a regardé certains films passés
Comment établir un tel modèle et que recommande la littérature universitaire?
Je suis nouveau dans ce domaine et je suppose qu'un modèle de régression linéaire pourrait fournir un bon résultat, à ne pas imaginer avec des méthodes plus complexes pour éviter d'imposer une incertitude inutile dans les estimations des paramètres. Mais peut-être existe-t-il déjà des méthodes couramment utilisées dans la pratique?
Réponses:
Il s'agit en fait d'un problème relativement célèbre dans le domaine de l'apprentissage automatique. En ~ 2006, Netflix a offert 1 million de dollars à l'algorithme qui a fourni la meilleure amélioration raisonnable à son système de recommandation. La théorie de la solution gagnante est brièvement discutée dans ce manuel Caltech sur l'apprentissage automatique d'introduction.
Fondamentalement, une méthode d'apprentissage d'ensemble a été utilisée. En particulier, un type de mélange ou empilage a été utilisé. Ce n'est pas anodin, mais plutôt intuitif. Pour comprendre l'intuition d'utiliser différentes approches statistiques en harmonie, considérez les différentes raisons pour lesquelles différentes personnes aiment les mêmes films: par exemple, Joe peut aimer Topgun parce qu'il aime les films d'action des années 80, tandis que Jane aime Topgun parce qu'elle aime les films avec les bandes sonores de Kenny Loggins. Donc, le fait que les deux téléspectateurs aient regardé (et évalué le film très bien) ne signifie pas nécessairement qu'ils aimeront d'autres films à forte probabilité. Idéalement, l'algorithme de prédiction serait capable de tenir compte de ces différences, au moins dans une certaine mesure.
Cela peut rendre la solution assez simple, mais équilibrer les algorithmes concurrents et hiérarchiser la meilleure estimation pour chaque cas n'est certainement pas simple. Le fait que Netflix ait offert une telle prime devrait rendre l'ampleur du défi plutôt évidente.
Si vous débutez dans l'apprentissage automatique, consulter les ressources ci-dessus peut être utile en fonction de votre niveau d'intérêt et de votre formation en mathématiques. La régression fonctionnerait donc probablement bien, mais des performances nettement meilleures sont possibles.
la source
La moitié du défi dans ces problèmes est de savoir quoi rechercher.
Vous avez peut-être ajouté la balise sans vous en rendre compte, mais vous recherchez en fait des informations sur les systèmes de recommandation . Vous voudrez peut-être commencer par le filtrage collaboratif , ou mieux encore le manuel Introduction to Recommender Systems de Ricci, Rokach et Shapira cité sur cette page.
la source
Vous devriez consulter le cours d'Andrew Ng sur Coursera: https://www.coursera.org/learn/machine-learning Il contient une leçon sur la construction de systèmes de recommandation, qui semble être ce que vous recherchez. Il s'agit essentiellement d'une forme de régression linéaire qui apprend les attributs synthétiques des films auprès des personnes qui ont évalué les films et les utilise pour prévoir des recommandations pour les personnes qui n'ont pas noté / regardé les films.
la source
Dans le défi Netflix (octobre 2006 - septembre 2009), un très grand ensemble (107 sous-modèles distincts) a finalement remporté le grand prix de 1 million de dollars, mais il est instructif de noter que les premiers algorithmes simples (non assemblés) pour battre le Netflix Cinematch les valeurs de référence étaient basées sur une SVD généralisée (matrice clairsemée). Ce premier jalon de battre Cinematch a été atteint à peine 6 jours après la compétition commencée par une équipe appelée WXYZConsulting.
SVD (Singular Value Decomposition) est un algorithme de factorisation matricielle où vous commencez avec une
[user, movie]
matrice 2d avec une note (1 à 5 étoiles) dans chaque[u, m]
position (*), et le divisez en 3 matrices où la matrice du milieu est une matrice carrée de interactions latentes entre les utilisateurs et les films.Vous pouvez réduire ou agrandir le classement de la matrice carrée pour inclure respectivement plus ou moins de telles interactions de facteurs latents.
Il existe plusieurs implémentations logicielles gratuites de SVD éparse rapide et efficace. Par exemple, redsvd ou vowpal-wabbit, donc avant d'écrire le vôtre, vous voudrez peut-être les essayer.
(*) La plupart de ces entrées sont nulles, car la plupart des utilisateurs n'ont pas évalué la plupart des films. c'est-à-dire que la matrice est très clairsemée.
Les références:
la source