Matrix Factorization Techniques for Recommender Systems
Este paper¹ informa y explica acerca de las técnicas de factorización matricial utilizadas en sistemas recomendadores. La idea principal de esta algoritmo es que busca asociar las características principales de un usuario o un ítem a un vector de factores (números). Luego, el producto punto entre un vector de un ítem “i” y un vector de un usuario “u” predecirá el rating que el usuario “u” le dará al item “i”. Esto parece mágico, ¿Cómo el producto de dos vectores puede predecir el rating?, ¿Cómo se determinan los factores de los vectores que representan al ítem y al usuario?. La verdad, es que no es tan mágico como parece. Hay dos técnicas que permiten encontrar estos vectores:
- “Stochastic gradient descent”: se parte con valores al azar en los vectores del usuario e ítem (en el paper no especifican esto, por lo que podría no ser completamente al azar) y luego, con los datos de training, se calcula el error entre el rating real y el predecido por el producto punto entre los vectores. Finalmente se reajustan estos vectores de acuerdo al error y se vuelve a iterar con otro dato de training.
- “Alternating least squares”: esta técnica es simplemente resolver mínimos cuadrados manteniendo uno de los vectores constante.
En el paper también muestran cómo manejar el hecho de que algunos ítems tienden a ser popularmente bien valorados o que algún usuario dé, en promedio, ratings altos a los ítems. Este es el llamado “bias” del usuario o del ítem, un rasgo que es general en el comportamiento de los ratings. Además, se muestra que es posible añadir feedback implícito al modelo: clicks, tiempo en una página, búsquedas, etc. Así como también añadir un modelamiento a través del tiempo de los gustos del usuario o de los cambios del “bias” que presente tanto un ítem como un usuario. Finalmente añaden niveles de confianza variados para ciertos ratings observados ya que, por ejemplo, si se hace publicidad masiva de un ítem esto afectará directamente el rating a corto plazo pero puede que no refleje la real tendencia a largo plazo.
El paper en general está bien explicado. Para todos los factores comentados en el párrafo anterior, hay una ecuación explicando cómo podría aplicarse en un modelo real. Además, se hacen referencias a investigaciones que profundizan más en las técnicas mencionadas en el paper, por lo tanto, si no queda totalmente claro, uno podría acceder a esta bibliografía y profundizar en algún tema.
Sin embargo, a pesar de tener la forma de un paper informativo sobre la técnica de factorización matricial, en las páginas finales hacen referencias a resultados de experimentos realizados con sistemas recomendadores que han aplicado las técnicas que mencionan, pero no entran en detalles sobre el algoritmo que utilizaron. De hecho, durante todo el paper hablan de manera general de la factorización matricial y no de cómo precisamente ellos la aplicaron en un sistema recomendador real. Esto puede, sin embargo, ser entendible, ya que a la fecha en que se escribe el trabajo estaban en plena competencia por el Netflix Prize, por lo tanto, no creo que hayan creído que otros equipos mejoraran sus sistemas recomendadores basándose en los detalles del propuesto en el paper.
Personalmente, tuve curiosidad acerca de cómo es que se puede modelar a través del tiempo el “bias” de los usuarios y de los ítems, ya que ellos solo dicen que se pueden modelar bajo una función f(t) y la añaden al modelo. Por esto, busqué información en el paper final, luego de que ganaron el Netflix Prize².
Para el “bias” del ítem, o sea, cómo se comportaba de manera general los ratings que los usuarios le daban a un ítem en particular, lo modelaron de manera bastante simple: dividieron los datos de los ítems en cierto periodo de tiempo (10 semanas, para ser exactos) y luego asociaron una constante a cada período de timpo. En el paper no especifican qué tipo de constante, pero supongo que será una asociada al “bias” del ítem en ese período de tiempo en particular.
Modelar el “bias” del usuario fue un poco más difícil. Para modelar los cambios graduales del usuario, utilizaron una medida de desviación entre la fecha en que el usuario dio el rating con respecto a la fecha promedio en que el usuario da ratings en general. No fue solo esto, sino que añadieron unos cuantos ponderadores que fueron ajustados a través de la etapa de entrenamiento.
Pero lo anterior solo modelaba los cambios graduales de los usuarios. Para abarcar los cambios drásticos, se ocupó otra medida. Los autores descubrieron que los ratings que se daban un mismo día tendían a rondar un valor específico. Para modelar esto de alguna forma, simplemente calculaban un “bias” diario del usuario y lo utilizaban junto con el “bias” general del usuario para afinar la predicción.
Para finalizar esta modelación temporal, los autores tomaron en cuenta la escala promedio de rating que un usuario daba a los ítems para ajustar el rating que se iría a predecir. Este promedio cambia entre cada usuario porque puede haber algunos que acostumbren a dar ratings bajos y otros que den en general ratings altos, por lo que es importante diferenciarlos. Además, esta escala suele cambiar a través del tiempo, por lo que añadieron un ponderador temporal que reflejaba este aspecto y que sería ajustado mediante la etapa de training.
Como podemos ver, el algoritmo que se presenta en el primer paper es complejo (solo expliqué el modelamiento temporal de algunos parámetros, y de maner muy general). Tiene tantos detalles que, si se hubieran explicado, no se habría podido exponer de una manera simple y generalizada la técnica de factorización matricial (junto con los modelos que se podrían incluir en esta) como se hace en el paper. Sin embargo, al mostrar los resultados de sus algoritmos en la parte final, nos dejan intrigados con saber cómo funciona el algoritmo en su conjunto. Si quieren saber más detalles (como yo), busquen el paper final en donde se muestra con más detalles el modelamiento temporal que comenté más arriba junto con todos los otros detalles (se adjunta en la bibliografía más abajo).
- Koren, Y., Bell, R., & Volinsky, C. (2009). Matrix factorization techniques for recommender systems. Computer IEEE Magazine, 42(8), 30–37.
- Koren, Y. (2009). The bellkor solution to the netflix grand prize. Netflix prize documentation, 81, 1–10.