¿Qué métodos estadísticos existen para recomendar una película como en Netflix?


14

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?


3
No creo que esto sea demasiado amplio para responder. Por ejemplo, tiene 2 respuestas votadas.
gung - Restablece a Monica

2
¡Prueba los conjuntos de datos masivos de Mining de Coursera y su libro gratis!
Felipe Gerard

2
Probablemente desee buscar la factorización de matriz y / o tensor.
Marc Claesen

1
@ usεr11852 Mi respuesta es más amplia que la pregunta.
shadowtalker

1
@ usεr11852, el título de la pregunta pregunta: "¿Qué métodos estadísticos hay ...?" La última oración pregunta si hay otros métodos además de la regresión. Creo que varias respuestas a continuación proporcionan este tipo de información.
gung - Restablece a Monica

Respuestas:


14

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.


2
+1 para el premio de Netflix. Como señaló, ese premio es un buen indicador de cuán enorme es este desafío.
Cort Ammon

11

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.


De hecho, miré más profundamente en la etiqueta, y encontré principalmente ejemplos de filtrado colaborativo. El problema que tengo con ese método es que depende de la entrada de otros usuarios, si entendí el concepto. Estoy más buscando métodos en una situación de un usuario, sin otros datos u opcionalmente otros datos. Echaré un vistazo a sus otras referencias.
JohnAndrews

1
@JohnAndrews: Creo que ssdecontrol le brinda los consejos más relevantes. Debe consultar la literatura sobre sistemas de recomendación. Hay muchas técnicas involucradas, por ejemplo. NNMF , Funk SVD , muchas variantes diferentes de clasificadores de vecinos más cercanos , etc. para nombrar algunos obvios. Al final, desea utilizar el filtrado colaborativo, pero no puede simplemente "sumergirse" sin ningún fondo.
usεr11852 dice Reinstate Monic

@JohnAndrews CrossValidated suele ser un mal lugar para comenzar a aprender sobre un tema, especialmente si solo busca por etiqueta. ¿Qué tal mirar las referencias que vinculé en su lugar? Los artículos de estadísticas de Wikipedia no siempre son confiables, pero son bastante buenos y citan muchas referencias.
shadowtalker

6

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.


3
¡Bienvenido a nuestro sitio! Gracias por incluir información que resume el contenido del enlace, en lugar de simplemente proporcionar un enlace "desnudo", lo apreciamos.
Silverfish

4

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


¿Qué usó Netflix antes?
jona

2
Un algoritmo llamado "Cinematch" que no es público pero se ha descrito como "combinación lineal de varios factores refinados a lo largo de los años", por ejemplo, calificación global promedio ponderada (G) + calificación promedio ponderada del usuario [u] + película promedio ponderada [m] calificación, ... etc.
arielf

Gracias por la respuesta elaborada. Cavaré en eso. En cuanto a las combinaciones lineales, ¿no es un gran problema esa sobreparamización? Ese sería mi enfoque preferido. Pero SVD suena prometedor.
JohnAndrews

No es un problema si solo agrega factores que mejoran el error de generalización . Obviamente, debe probar cada una de esas adiciones en datos invisibles para obtener la confianza necesaria.
arielf
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.