Estoy buscando implementar un modelo dinámico para recomendar una película a un usuario. La recomendación debe actualizarse cada vez que el usuario mira una película o la califica. Para simplificar, estoy pensando en tener en cuenta dos factores:
- las calificaciones pasadas de otras películas por el usuario
- el tiempo que el usuario vio ciertas películas pasadas
¿Cómo se configuraría un modelo así y qué recomienda la literatura académica?
Soy nuevo en este campo y supongo que un modelo de regresión lineal podría proporcionar un buen resultado, no para imaginar métodos más complejos para evitar imponer incertidumbres innecesarias en las estimaciones de los parámetros. ¿Pero quizás ya hay métodos establecidos que se usan comúnmente en la práctica?
machine-learning
recommender-system
dynamic-regression
JohnAndrews
fuente
fuente
Respuestas:
Este es en realidad un problema relativamente famoso en el campo del aprendizaje automático. En ~ 2006, Netflix ofreció $ 1 millón al algoritmo que proporcionó la mejor mejora razonable a su sistema de recomendación. La teoría de la solución ganadora se analiza brevemente en este libro de texto de Caltech sobre el aprendizaje automático introductorio.
Básicamente se utilizó un método de aprendizaje conjunto . En particular, se empleó un tipo de mezcla o apilamiento . Esto no es trivial, sino algo intuitivo. Para comprender la intuición de usar diferentes enfoques estadísticos en armonía, considere las diferentes razones por las que a las personas les gustan las mismas películas: es decir, a Joe le puede gustar Topgun porque le encantan las películas de acción de los 80, mientras que a Jane le gusta Topgun porque le gustan las películas con bandas sonoras de Kenny Loggins. Por lo tanto, el hecho de que ambos espectadores vieron (y calificaron la película altamente) no necesariamente significa que les gustarán otras películas con alta probabilidad. El algoritmo de predicción idealmente podría acomodar estas diferencias, al menos en cierta capacidad.
Esto puede hacer que la solución parezca bastante simple, pero equilibrar algoritmos competidores y priorizar la mejor suposición para cada caso definitivamente no es simple. El hecho de que Netflix ofreciera una recompensa tan grande debería hacer que la magnitud del desafío sea bastante obvia.
Si recién está comenzando en el aprendizaje automático, consultar los recursos anteriores puede ser útil según su nivel de interés y sus antecedentes matemáticos. Por lo tanto, la regresión probablemente funcionaría bien o bien, pero es posible un rendimiento significativamente mejor.
fuente
La mitad del desafío en estos problemas es saber qué buscar.
Es posible que haya agregado la etiqueta sin darse cuenta, pero de hecho está buscando información sobre los sistemas de recomendación . Es posible que desee comenzar con el filtrado colaborativo , o mejor aún, el Manual de Introducción a los Sistemas de Recomendaciones de Ricci, Rokach y Shapira, citado en esa página.
fuente
Debería consultar el curso de Andrew Ng sobre Coursera: https://www.coursera.org/learn/machine-learning. Tiene una lección sobre la creación de sistemas de recomendación, que parece ser lo que está buscando. Esencialmente es una forma de regresión lineal que aprende atributos sintéticos para películas de personas que calificaron películas y las usa para predecir recomendaciones para personas que no calificaron / vieron las películas.
fuente
En el desafío de Netflix (octubre de 2006 - septiembre de 2009) un conjunto muy grande (107 submodelos separados) ganó el gran premio de $ 1M al final, pero es instructivo tener en cuenta que los primeros algoritmos simples (no ensamblados) para vencer a Netflix Cinematch El punto de referencia se basó en una SVD generalizada (matriz dispersa). Este primer hito de vencer a Cinematch se logró apenas 6 días después del comienzo de la competencia por un equipo llamado WXYZConsulting.
SVD (Singular Value Decomposition) es un algoritmo de factorización matricial donde comienzas con un 2d
[user, movie]
matriz con una calificación (1 a 5 estrellas) en cada[u, m]
posición (*), y la divide en 3 matrices donde la matriz central es una matriz cuadrada de interacciones latentes entre usuarios y películas.Puede hacer que el rango de la matriz cuadrada sea más pequeño o más grande para incluir más o menos interacciones de factores latentes, respectivamente.
Hay varias implementaciones de software libre de SVD disperso rápido / eficiente. Por ejemplo, redsvd, o votepal-wabbit, así que antes de escribir el suyo, es posible que desee probarlos.
(*) La mayoría de estas entradas son cero, ya que la mayoría de los usuarios no han calificado la mayoría de las películas. es decir, la matriz es muy escasa.
Referencias
fuente