Quelles méthodes statistiques existe-t-il pour recommander un film comme sur Netflix?

14

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?

JohnAndrews
la source
3
Je ne pense pas que ce soit trop large pour être responsable. Par exemple, il a 2 réponses votées.
gung - Réintégrer Monica
2
Essayez Minas Massive Datasets de coursera et son livre gratuit!
Felipe Gerard
2
Vous souhaitez probablement rechercher la factorisation matricielle et / ou tensorielle.
Marc Claesen
1
@ usεr11852 Ma réponse est plus large que la question.
shadowtalker
1
@ usεr11852, le titre de la question demande: "Quelles méthodes statistiques existe-t-il ...?" La dernière phrase demande s'il existe des méthodes autres que la régression. Je pense que plusieurs réponses ci-dessous fournissent ce genre d'informations.
gung - Rétablir Monica

Réponses:

14

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.

d0rmLife
la source
2
+1 pour le prix Netflix. Comme vous l'avez souligné, ce prix est un bon indicateur de l'ampleur de ce défi.
Cort Ammon
11

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.

shadowtalker
la source
J'ai en effet regardé plus profondément dans la balise et j'ai surtout rencontré des exemples de filtrage collaboratif. Le problème que j'ai avec cette méthode est qu'elle dépend de la contribution d'autres utilisateurs, si j'ai bien compris le concept. Je recherche plutôt des méthodes dans une situation d'un utilisateur, pas d'autres données ou éventuellement d'autres données. Va jeter un oeil à vos autres références.
JohnAndrews
1
@JohnAndrews: Je pense que ssdecontrol vous donne les conseils les plus pertinents. Vous devez consulter la documentation relative aux systèmes recommandés. Il existe de nombreuses techniques impliquées, par exemple. NNMF , Funk SVD , de nombreuses variantes différentes des classificateurs de voisins les plus proches , etc. pour n'en nommer que quelques-uns évidents. En fin de compte, vous souhaitez utiliser le filtrage collaboratif, mais vous ne pouvez pas simplement "plonger" sans arrière-plan.
usεr11852
@JohnAndrews CrossValidated est généralement un mauvais endroit pour commencer à apprendre sur un sujet, surtout si vous effectuez simplement une recherche par tag. Que diriez-vous de regarder les références que j'ai liées à la place? Les articles sur les statistiques de Wikipédia ne sont pas toujours fiables, mais ils sont assez bons et citent de nombreuses références.
shadowtalker
6

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.

Raphael Nikolaus
la source
3
Bienvenue sur notre site! Merci d'avoir inclus des informations résumant le contenu du lien, plutôt que de simplement fournir un lien "nu" - nous l'apprécions.
Silverfish
4

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:

arielf
la source
Qu'est-ce que Netflix utilisait auparavant?
jona
2
Un algorithme appelé "Cinematch" qui n'est pas public mais a été décrit comme "une combinaison linéaire de divers facteurs affinés au fil des ans", par exemple pondéré la note globale moyenne (G) + la moyenne pondérée des utilisateurs [u] la note + la moyenne pondérée du film [m] rating, ... etc.
arielf
Merci pour la réponse élaborée. Va creuser dedans. Quant aux combinaisons linéaires, n'est-ce pas un gros problème de cette sur-paramétrisation? Ce serait mon approche préférée. Mais SVD semble prometteur.
JohnAndrews
Pas de problème si vous ajoutez uniquement des facteurs qui améliorent l' erreur de généralisation . De toute évidence, vous devez tester chaque ajout de ce type sur des données invisibles pour gagner la confiance nécessaire.
arielf