ESCUELA TÉCNICA SUPERIOR DE INGENIEROS...

100
UNIVERSIDAD POLITÉCNICA DE MADRID ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOS MÁSTER UNIVERSITARIO EN SOFTWARE Y SISTEMAS RECOMENDACIONES EN TIEMPO REAL MEDIANTE FILTRADO COLABORATIVO INCREMENTAL Y REAL-TIME BIG DATA TRABAJO FIN DE MÁSTER AUTORA: Paloma Pérez Yagüe TUTOR: Ricardo Jiménez-Peris DIRECTORA: Marta Patiño Martínez July 29, 2016

Transcript of ESCUELA TÉCNICA SUPERIOR DE INGENIEROS...

Page 1: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

UNIVERSIDAD POLITÉCNICA DE MADRID

ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOS

MÁSTER UNIVERSITARIO EN SOFTWARE Y SISTEMAS

RECOMENDACIONES EN TIEMPO REAL MEDIANTEFILTRADO COLABORATIVO INCREMENTAL Y REAL-TIME

BIG DATA

TRABAJO FIN DE MÁSTER

AUTORA: Paloma Pérez YagüeTUTOR: Ricardo Jiménez-PerisDIRECTORA: Marta Patiño Martínez

July 29, 2016

Page 2: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos
Page 3: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

A todos los que me habéis compañado y apoyado en este nuevo reto.Un agradecimiento especial a mi familia, que me han tenido que aguantar

(otra vez) y por supuesto a Amadeo y a nuestro gato Lynx, que han estado ami lado, y esta vez además, con noches en vela y sacrificio de vacaciones

incluido.Gracias, porque entre todos me habéis ayudado a hacerlo posible.

Gracias.

i

Page 4: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

ii

Page 5: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

Resumen

La gran cantidad de información y de servicios/productos ofrecidos hoy en día a cualquierusuario en la red, hace cada vez más difícil la tarea de filtrar entre tanta información ypoder encontrar realmente aquello que se ajuste a los gustos y/o necesidades de cada uno.

Por este motivo surgieron los primeros Sistemas de Recomendación, los cuales hancambiado el modo en que las personas encuentran productos, información o incluso a otraspersonas, que quizá, de otra forma no conocerían.

Se pueden encontrar famosos ejemplos de Sistemas de Recomendación en grandescompañías como Amazon.com o Netflix, con un catálogo casi infinito que mostrar a susclientes, o el gigante Google, que emplea famosos algoritmos de búsqueda como Page Ranko su ya famosa personalización de búsquedas en usuarios registrados, que tiene en cuentael historial de navegación previo e incluso la propia localización en la que se encuentra elusuario, para mostrar sus resultados en un orden completamente personalizado.

Estos sistemas se encargan de estudiar patrones de comportamiento de los distintosusuarios y similaridades entre los distintos servicios/productos, para poder decidir de entretoda la información disponible aquella que se va a adaptar a los gustos/necesidades de losusuarios, haciéndoles la vida más fácil.

En los últimos 20 años estos sistemas se han vuelto cada vez más complejos, tratando deajustarse lo máximo posible al perfil y necesidades de los distintos usuarios, dando lugar aalgoritmos basados en costosos cálculos computacionales. Entonces, con la inercia con la queestán evolucionando los denominados sistemas de recomendación, ¿podrán estos sistemashacer frente al crecimiento exponencial de estos servicios/productos? ¿Estos sistemasserán/son capaces de ajustarse a las necesidades de los usuarios a medida que su perfil decomportamiento cambia en un tiempo de respuesta y calidad aceptables para el usuario final?

Estas preguntas intentarán ser contestadas en este trabajo mediante el estudio yposterior análisis de algunas de las principales metodologías adoptadas en los modelosalgorítmicos en los que se basan los actuales sistemas de recomendación.

Keywords: Sistemas de Recomendación, Escalabilidad, Tiempo Real, Filtrado Colabora-tivo

iii

Page 6: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

iv

Page 7: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

Abstract

Due to the large amount of information and products/services offered in nowadays toany user on the Net, the task of information filtering is increasingly difficult and being ableto find what really suits the needs or tastes of each one is really tough.

For this reason, early Recommender Systems emerged. Those systems have changeddrastically the way in which people find products, information or even to other people, thatotherwise, maybe, they won’t know about.

Famous examples of Recommender Systems can be found, in big companies likeAmazon.com or Netflix, with an almost infinite catalog to show their customers, or thegiant Google, that uses famous search algorithms like Page Rank or his popular searchcustomization available for registered users, that takes into account the previous browsinghistory and even the location of the user, to show his results in a totally personalized order.

These systems attempt to study behavior patterns of different users and try to findsimilarities between various services/products, to decide the data that fits the best to thetastes/needs of the users between all available information, to make their lifes easier.

In the last 20 years, these systems have become increasingly complex because theytry to fit as much as possible to the profile and needs of the different users, resulting inalgorithms based on expensive computational calculations. Then, if we analyze the inertiaof the evolution of the so-called recommendation systems, could these systems deal with theexponential growth of these services/products?, could they be able of fit the needs of theusers according as their behavioral profile changes in an acceptable response time and withthe accuracy that a final user expects?

This work is going to try to answer these questions through the study and subsequentanalysis of some of the main methodologies adopted in algorithmic models that currentrecommendation systems are based on.

Keywords: Recommender Systems, Scalability, Real Time, Collaborative Filtering

v

Page 8: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

vi

Page 9: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

Índice general

1. Introducción 11.1. Motivación del proyecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.3. Contenido de la memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2. Estado del arte 52.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.2. Sistemas de Recomendación . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.3. Clasificación de Sistemas de Recomendación . . . . . . . . . . . . . . . . . . 9

2.3.1. No personalizados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.3.2. Basados en Contenido (Content-based Filtering) . . . . . . . . . . . . 11

2.3.2.1. Term frequency Inverse Document Frequency (TFIDF) . . . 122.3.3. Basados en Conocimiento (Knowledge-based Filtering) . . . . . . . . 122.3.4. Filtrado Colaborativo . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2.3.4.1. Modelos de Vecindario . . . . . . . . . . . . . . . . . . . . . 152.3.4.1.1. User-User collaborative filtering . . . . . . . . . . . 152.3.4.1.2. Item-Item collaborative filtering . . . . . . . . . . . 16

2.3.4.2. Modelos de Factores Latentes . . . . . . . . . . . . . . . . . 192.3.4.2.1. Métodos de Factorización Matricial . . . . . . . . . 19

2.3.4.2.1.1. Descomposición Singular de Valores (SVD) . 202.3.4.2.1.2. Stochastic Gradient Descent (SGD) . . . . . 212.3.4.2.1.3. Mínimos cuadrados alternantes (ALS) . . . . 22

2.4. Filtrado Colaborativo Incremental . . . . . . . . . . . . . . . . . . . . . . . . 232.4.1. Técnica Folding-in . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242.4.2. Factorización de Matriz Kernel Regularizada (RKMF) . . . . . . . . 242.4.3. Stochastic Gradient Descent Incremental (RISMF) . . . . . . . . . . 252.4.4. Factorización Matricial Regularizada Incremental (IRMF) . . . . . . 26

3. Solución adoptada para la resolución del problema 293.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293.2. Diseño Sistema Recomendador en Tiempo Real . . . . . . . . . . . . . . . . 293.3. Algoritmo del Sistema de Recomendación en Tiempo Real . . . . . . . . . . 30

3.3.1. Filtrado Colaborativo Incremental . . . . . . . . . . . . . . . . . . . . 303.3.1.1. RMF Secuencialmente Independiente (SI-RMF) . . . . . . . 323.3.1.2. RMF Incremental . . . . . . . . . . . . . . . . . . . . . . . . 33

3.4. Conjunto de Datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

vii

Page 10: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

3.4.1. OMDb API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383.5. Tecnologías utilizadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

3.5.1. Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383.5.2. Django . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393.5.3. Pandas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413.5.4. Scikit-learn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413.5.5. NumPy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413.5.6. SQLite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413.5.7. ZeroMQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

4. Implementación del Sistema de Recomendación en Tiempo Real 434.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434.2. Procedimientos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

4.2.1. Obtención de datos de entrada . . . . . . . . . . . . . . . . . . . . . . 434.2.2. Entrenamiento del modelo . . . . . . . . . . . . . . . . . . . . . . . . 444.2.3. Sistema de Recomendación Incremental . . . . . . . . . . . . . . . . . 47

4.2.3.1. Actualización Incremental del Modelo . . . . . . . . . . . . 474.2.3.2. Recomendaciones en Tiempo Real . . . . . . . . . . . . . . 48

4.3. Arquitectura del Sistema de Recomendación en Tiempo Real . . . . . . . . . 49

5. Implementación de la aplicación Web 515.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515.2. Funcionalidades de la Aplicación Web . . . . . . . . . . . . . . . . . . . . . . 515.3. Diseño del modelo de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . 585.4. Diseño de la lógica de negocio de la aplicación . . . . . . . . . . . . . . . . . 595.5. Diseño de la interfaz de usuario . . . . . . . . . . . . . . . . . . . . . . . . . 62

6. Resultados 656.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 656.2. Resultados obtenidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

6.2.1. Resultados Entrenamiento Algoritmo Batch . . . . . . . . . . . . . . 666.2.2. Resultados Entrenamiento Algoritmo Incremental . . . . . . . . . . . 68

7. Gestión del proyecto 717.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 717.2. Planificación del proyecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . 717.3. Análisis de costes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

7.3.1. Costes de personal . . . . . . . . . . . . . . . . . . . . . . . . . . . . 737.3.2. Costes materiales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 757.3.3. Presupuesto total . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

8. Conclusiones y trabajos futuros 778.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 778.2. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 778.3. Trabajos futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

Glosario de términos 81

viii

Page 11: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

Bibliografía 84

ix

Page 12: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

x

Page 13: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

Índice de figuras

2.1. Sistema de Recomendación de Netflix [Img13b] . . . . . . . . . . . . . . . . . 62.2. Servicio de Clipping: Flipboard [Img11b] . . . . . . . . . . . . . . . . . . . . 72.3. MovieLens [Img16] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82.4. Recomendaciones personalizadas en Amazon.com [Img13a] . . . . . . . . . . 92.5. Sistema de Recomendación no Personalizado: Tripadvisor [Img14] . . . . . . 102.6. Sistema de Recomendación basado en Contenido: Krakatoa Chronicle -1995

[Img93] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.7. Sistema de Recomendación basado en Conocimiento: Entree Restaurant [Img00] 132.8. Diagrama esquemático de la técnica Folding-in [SKKR02] . . . . . . . . . . . 242.9. Factorización Matricial Regularizada Incremental (IRMF): Comparativa (I)

[LXZ12] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262.10. Factorización Matricial Regularizada Incremental (IRMF): Comparativa (II)

[LXZ12] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

3.1. Efecto de la diferencia incremental en pu causada por un nuevo ejemplo [LXZ12] 353.2. Patrón MVC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

4.1. Validación Cruzada, Diagrama representativo para k=4 [Img11a]. . . . . . . 444.2. Diagrama de flujo: Entrenamiento offline del modelo . . . . . . . . . . . . . 464.3. Diagrama de flujo: Actualización incremental del modelo (online) . . . . . . 474.4. Diagrama de flujo: Recomendaciones en Tiempo Real (online) . . . . . . . . 484.5. Arquitectura Sistema de Recomendación en Tiempo Real . . . . . . . . . . . 49

5.1. Inicio de Sesión de Usuario en Aplicación Web y Detalles botones de Inicio deSesión y Registro de Nuevo Usuario en Aplicación Web . . . . . . . . . . . . 52

5.2. Detalle botón de Cierre de Sesión de Usuario en Aplicación Web . . . . . . . 525.3. Administración de Usuarios en Aplicación Web . . . . . . . . . . . . . . . . . 535.4. Visualización Listado Últimas Películas Valoradas . . . . . . . . . . . . . . . 535.5. Visualización Listado Películas . . . . . . . . . . . . . . . . . . . . . . . . . . 545.6. Búsqueda en Listado de Películas . . . . . . . . . . . . . . . . . . . . . . . . 545.7. Administración de Películas en Aplicación Web . . . . . . . . . . . . . . . . 555.8. Listado de Puntuaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555.9. Administración de Puntuaciones en Aplicación Web . . . . . . . . . . . . . . 565.10. Listado de Puntuaciones de Usuario . . . . . . . . . . . . . . . . . . . . . . . 565.11. Puntuar una película . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575.12. Detalle de Película puntuada por un usuario . . . . . . . . . . . . . . . . . . 575.13. Lista de Películas Recomendadas . . . . . . . . . . . . . . . . . . . . . . . . 58

xi

Page 14: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

5.14. Diagrama relacional del modelo de datos . . . . . . . . . . . . . . . . . . . . 595.15. Diagrama de vistas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 615.16. Diseño interfaz web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

6.1. Evolución rendimiento RMSE algoritmo SI-RMF (75% datos de entrada) . . 676.2. Evolución rendimiento RMSE algoritmo SI-RMF (10% datos de entrenamiento) 676.3. Evolución Rendimiento algoritmo RMF Incremental . . . . . . . . . . . . . . 686.4. Tiempos Medios Actualización del Algoritmo Incremental . . . . . . . . . . . 696.5. Tiempo de Respuesta del Sistema de Recomendación . . . . . . . . . . . . . 70

7.1. Diagrama de Gantt del proyecto . . . . . . . . . . . . . . . . . . . . . . . . . 72

xii

Page 15: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

Índice de cuadros

3.1. Cabecera Fichero de Datos de Películas: movies.dat . . . . . . . . . . . . . . 353.2. Cabecera Fichero de Datos de Usuarios: users.dat . . . . . . . . . . . . . . . 363.3. Rangos de edad de los usuarios . . . . . . . . . . . . . . . . . . . . . . . . . 373.4. Ocupaciones de los usuarios . . . . . . . . . . . . . . . . . . . . . . . . . . . 373.5. Cabecera Fichero de Datos de Puntuaciones: ratings.dat . . . . . . . . . . . 38

6.1. Rendimiento algoritmo SI-RMF con 75% de los datos de entrada. . . . . . . 666.2. Rendimiento algoritmo SI-RMF con 10% de los datos de entrenamiento batch. 66

7.1. Costes de personal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 747.2. Costes Personal (Cont.) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 757.3. Costes Material . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 757.4. Costes Totales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

xiii

Page 16: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

xiv

Page 17: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

Capítulo 1

Introducción

“People influences people. Nothing influences people more than a recommenda-tion from a trusted friend. A trusted referral influences people more than thebest broadcast message. A trusted referral is the Holy Grail of advertising”

Mark Zuckerberg

1.1. Motivación del proyecto

Debido a la gran cantidad de información y de servicios/productos disponibles hoy endía al alcance de cualquier usuario, a estos cada vez les resulta más difícil poder filtrarentre tanta información y poder encontrar realmente aquello que se ajuste a sus gustos y/onecesidades.

Por este motivo surgieron los primeros Sistemas de Recomendación, los cuales hancambiado el modo en que las personas encuentran productos, información o incluso aotras personas. Estos sistemas se encargan de estudiar patrones de comportamiento de losdistintos usuarios para poder decidir de entre toda la información disponible aquella que seva a adaptar a los gustos/necesidades de un determinado usuario.

Estos sistemas han evolucionado a lo largo de los últimos 20 años, convirtiéndose enherramientas cada vez más efectivas y exactas, pero a su vez cada vez más complejas.

Los primeros sistemas se basaban en comprender los productos en sí mismos y susrelaciones con otros productos, en lugar de conocer las necesidades del usuario, los denomi-nados sistemas basados en contenido, pero a medida que se incrementaba el númerode productos en este tipo de sistema, los primeros problemas aparecieron, puesto que lacomplejidad de análisis crecía exponencialmente, y por tanto, el esfuerzo en obtener nuevaspredicciones se hacía más y más excesivo.

A raíz de dichos problemas, surgieron los denominados sistemas de recomendaciónde filtrado colaborativo, que ya empezaron a tener en cuenta el comportamiento delusuario, asumiendo que las predicciones podían realizarse teniendo en cuenta las decisiones

1

Page 18: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

2 CAPÍTULO 1. INTRODUCCIÓN

en el pasado de los usuarios y a su vez, buscando semejanzas entre los distintos tipos deusuarios del sistema. Pero este tipo de sistemas también se vuelven bastante complejos, puesrequieren que se almacene una gran cantidad de datos históricos de los distintos usuarios, yel comportamiento errático de algunos usuarios puede afectar al rendimiento del sistema derecomendación.

Otros problemas bien conocidos que afectan a este tipo de sistemas, son el conocidoproblema de Cold Start producido por la falta inicial de datos al comienzo de la experienciade usuarios, la escasez de datos de comportamiento de usuarios, provocado por la grancantidad de datos de productos disponibles y que cada usuario puede únicamente aportarcomportamiento en un pequeño conjunto de los mismos. Pero el problema que afecta a todosellos es la escalabilidad, puesto que a medida que crece el número de ítems y usuarios enestos sistemas, la carga computacional crece también exponencialmente.

Para tratar de mitigar estos problemas, se han construido sistemas híbridos, con lacreencia de que combinando las propiedades de varios enfoques, será igualmente posibleestablecer predicciones con una precisión razonable, pero la realidad es que es bastantecostoso mantener un sistema de estas características relativamente confiable que sea capazde predecir con exactitud el comportamiento del usuario [Tec16].

Los métodos propuestos para manejar el problema de la escalabiidad y la aceleración delas recomendaciones están basados en mecanismos de aproximación que aunque mejoren elrendimiento del sistema la mayoría de las veces resultan en una degradación de la precisión delos mismos. El método más adecuado para resolver el problema de la escalabilidad en este tipode sistema pasa por ser capaces de actualizar de forma incremental los algoritmos subyacentesque permitan recomendaciones de alta calidad y proporcione recomendaciones más rápidasque los sistemas clásicos de recomendación, que sean adecuados para una aplicación online.

1.2. Objetivos

El objetivo principal de este proyecto consistirá en el estudio de los actuales algoritmosde Sistemas de Recomendación, y verificar si existe algún algoritmo que se pueda actualizarde forma incremental en memoria, de tal forma que se pueda emplear en un sistema online,e integrarlo, con un prototipo de aplicación real que haga uso de un sistema de estascaracterísticas.

1. Si se encuentra un algoritmo incremental que satisfaga nuestras expectativas:

Se llevará a cabo una implementación del algoritmo seleccionado y se demostrarála correcta actualización incremental del mismo. Se verificará si los tiempos derespuesta ofrecidos por el algoritmo son resultados válidos para su aplicación enun sistema online en tiempo real.

Se realizará un prototipo de aplicación que haga uso de un algoritmo de estascaracterísticas, para ver su correcta integración con un algoritmo incremental, y

Page 19: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

1.3. CONTENIDO DE LA MEMORIA 3

comprobar desde el punto de vista de un usuario final, la correcta actualizaciónen tiempo real de las recomendaciones ofrecidas por el algoritmo.

2. Si por el contrario, no se encuentra un algoritmo incremental:

Se realizará un estado del arte de los actuales sistemas de recomendación.

Se argumentará sobre la necesidad de implementar un algoritmo incremental quepermita escalar en memoria y que nos permita integrar este tipo de sistemas enun entorno online.

1.3. Contenido de la memoria

A continuación se detalla la distribución del presente documento

Capítulo 1. Introducción: En este capítulo se da una justificación del porqué dela realización del proyecto. Además de un acercamiento a los objetivos fundamentalesperseguidos con la realización del mismo.

Capítulo 2. Estado del Arte: Este capítulo tiene como objetivo presentar las distintastecnologías que constituyen la base para el desarrollo de este proyecto. Se presenta un Estadodel Arte de los actuales Sistemas de Recomendación existentes, así como las aproximacionesy el estado actual de Sistemas de Recomendación incrementales.

Capítulo 3. Solución adoptada para la resolución del problema: En estecapítulo se presentará en detalle el algoritmo seleccionado para el desarrollo del presen-te proyecto, así como las tecnologías y el entorno de desarrollo empleados para llevarlo a cabo.

Capítulo 4. Implementación del Sistema de Recomendación en Tiempo Real:En este capítulo se detallará el proceso de implementación de los procedimientos quecomponen el Sistema de Recomendación en Tiempo Real.

Capítulo 5. Implementación de la aplicación Web: En este capítulo se realizaráuna descripción detallada del proceso de implementación de la aplicación Web que utilizaráel usuario para visualizar sus puntuaciones, realizar nuevas puntuaciones y obtener reco-mendaciones personalizadas basadas en sus puntuaciones anteriores.

Capítulo 6. Resultados: En este capítulo se incluye el plan de pruebas llevado a cabopara la valoración de los resultados obtenidos.

Capítulo 7. Gestión del proyecto: En este capítulo se muestra la planificación delproyecto, describiendo las tareas a seguir así como el tiempo planificado para cada una deellas. Se añade también un presupuesto orientativo del coste de la aplicación.

Capítulo 8. Conclusiones y trabajos futuros: En este capítulo, se exponen lasreflexiones acerca de la consecución de los objetivos iniciales del proyecto y los resultados

Page 20: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

4 CAPÍTULO 1. INTRODUCCIÓN

obtenidos. Finalmente, se esbozan líneas de trabajo futuras para la posible ampliación delproyecto.

Page 21: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

Capítulo 2

Estado del arte

2.1. Introducción

Este capítulo tiene como objetivo presentar las distintas tecnologías que constituyen labase para el desarrollo de este trabajo. Aunque en esta introducción no se incluyan a priorialgunos de los términos utilizados, es objetivo de este capítulo que a la finalización delmismo se comprendan en su mayor parte.

En primer lugar, se realiza una presentación del concepto de Sistemas de Recomendacióny se hablará de su evolución hasta nuestros días para que se entienda mejor cuál es su origen.

A continuación, se hablará de los distintos tipos de sistemas de recomendación, así como delos campos de aplicación, haciendo hincapié en las ventajas e inconvenientes de cada tipo.

Para terminar, puesto que el objetivo general de este proyecto es la implementación deun sistema de recomendación incremental que permita realizar recomendaciones en tiemporeal, se analizarán las distintas alternativas existentes para hacer frente a este punto.

2.2. Sistemas de Recomendación

“Un sistema de recomendación es, aquel sistema que utiliza las opiniones delos usuarios de una comunidad para ayudar a usuarios de esa comunidad aencontrar contenidos de su gusto entre un conjunto sobrecargado de posibleselecciones [Men16].”

El ser humano necesita información para tomar decisiones de cualquier tipo, pero muchasveces se encuentra con que la que tiene disponible es demasiado amplia o inconexa,produciéndose una sobrecarga en la misma, y desembocando en una incapacidad en laextracción de la información realmente relevante para el usuario. Por ello, es convenienteque los sistemas actuales permitan filtrar toda esa información (diseminada en grandesvolúmenes), para que los distintos usuarios puedan enfocarse en la que realmente les es

5

Page 22: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

6 CAPÍTULO 2. ESTADO DEL ARTE

relevante de acuerdo a su perfil [Men16].

Figura 2.1: Sistema de Recomendación de Netflix [Img13b]

Basados en algoritmos informáticos, los sistemas de recomendación ayudan a los usuariosa seleccionar productos o ítems de acuerdo a sus gustos personales, basándose en suhistorial de navegación, búsquedas, compras y preferencias. Hoy en día, los sistemas derecomendación son sistemas extremadamente sofisticados y especializados que a menudoparecen conocernos mejor que nosotros mismos.

Por este motivo, su aplicación es cada vez más común. Hoy en día es habitual encontrarsistemas de recomendación en sitios de venta Web, así como en Universidades, que hacenuso de dichos sistemas para guiar a los estudiantes a través de los distintos cursos. Lascompañías de teléfono también dependen de ellos para predecir qué usuarios están en riesgode cambiar a otro proveedor, etc [KR12].

El concepto surge a partir de la noción de reutilización de la información y persistenciade las preferencias de los usuarios. Este concepto, al contrario de lo que pueda parecer, noviene del mundo de los ordenadores y la tecnología, es una noción que se puede encontraren el comportamiento de los hombres de las cavernas, de las hormigas o de cualquier otracriatura. Por ejemplo, las hormigas están preparadas genéticamente, para dejar marcadoresal resto de hormigas, de tal modo que pueden señalizar caminos para encontrar comida.Este concepto, es conocido en el mundo de la investigación como navegación social, quese basa en seguir los pasos de otros para encontrar lo que se quiere. La navegación socialtambién es utilizada por los humanos. Por ejemplo, si un humano se encuentra en un estadiode fúltbol o teatro que no conoce y a la hora de finalización del evento desea encontrarla ubicación de la salida más próxima, le bastará con seguir al resto de individuos queprobablemente también se dirigen hacia ella. Otro ejemplo de navegación social en humanos,está representado en sitios de ventas Web que cuentan con opiniones de usuarios. Losusuarios con alta probabilidad se basarán en las opiniones de los demás usuarios que hayan

Page 23: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

2.2. SISTEMAS DE RECOMENDACIÓN 7

adquirido previamente el artículo, para decidir si dicho artículo cumple sus espectativas.

Posteriormente, una vez se introduce la tecnología en este ámbito, en los años 60’s, surgendos nuevos conceptos: Recuperación de la información (Information Retrieval) yFiltrado de la información (Information Filtering). El concepto de recuperación dela información surge del problema de tener una base de datos con una gran cantidad deinformación cuyo contenido no sea estático, es decir, cuyo contenido varíe con bastantefrecuencia y del enorme esfuerzo que supone el tratar de indexar toda esa información pararealizar consultas de forma óptima contra dicha base de datos (Ej.: Motores de búsquedacomo Google). El concepto de filtrado de la información invierte esfuerzo en modelar lasnecesidades del usuario, y aplica dichas necesidades para filtrar el contenido disponible, detal forma que únicamente se presenta al usuario aquella información que encaje con susnecesidades (Ej.: Servicios de Clipping)

Figura 2.2: Servicio de Clipping: Flipboard [Img11b]

Años más tarde, en 1992, se desarrollaría Tapestry (Xerox Park), el primer sistema queaplicaría la técnica de Filtrado Colaborativo. Esta técnica considera que las preferenciasde un usuario no se pueden modelar únicamente a través de un conjunto de palabras clavesque las representen, considera que los gustos y preferencias de un usuario, se pueden verreflejados en los gustos y preferencias de otro usuario. Para ello, construyeron una base dedatos de contenido, junto con comentarios sobre dicho contenido. Igualmente construyeronun lenguaje de consulta sobre dicha base de datos, que permitía realizar búsquedas sobre elcontenido, y también basadas en características colaborativas, consultando lo que hicieronotras personas con dicho contenido.

En 1995, David Maltz and Kate Ehrlich, crearon un sistema denominado “Active Collabora-tive Filtering”, que permitía a los propios usuarios del sistema ser centros de información. Los

Page 24: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

8 CAPÍTULO 2. ESTADO DEL ARTE

usuarios encargados de obtener la información, también son capaces de hacer llegar dicha in-formación únicamente a aquellos usuarios que estén interesados en ella (Ej.: Listas de correo).

En esta época, surgen otros proyectos en torno a sistemas basados en filtrado colaborativo,como el proyecto GroupLens, que desarrolló distintos sistemas como Usenet News o Movie-Lens. Usenet News es un sistema que permite a sus usuarios valorar las distintas noticias,y es capaz de predecir qué tipo de noticia le gustará leer a cada usuario basándose en laspreferencias de otros usuarios que comparten las mismas opiniones (Nearest NeighborAproach). MovieLens es un sistema de recomendación de películas que igualmente permitea sus usuarios crear opiniones. Este sistema obtiene la correlación de cada usuario conrespecto al resto de usuarios del sistema, basándose en dichas opiniones, para encontrarun grupo de usuarios afines a dicho usuario, de tal modo que el sistema pueda realizarrecomendaciones a dicho usuario basándose en los gustos de dicho grupo.

Figura 2.3: MovieLens [Img16]

Los desarrolladores de sistemas de recomendación actuales han aplicado distintos enfoquespara manejar y procesar todos los datos, pero el enfoque que se ha asentado principalmenteen todos ellos es el de la recomendación colaborativa personalizada. Este tipo desistema de recomendación es el corazón de Amazon, Netflix, las recomendaciones de amigosen la famosa red social Facebook y Last.fm. Estos sistemas se denominan “personalizados”porque rastrean el comportamiento de cada usuario — páginas visitadas, compras ypuntuaciones — para generar recomendaciones adaptadas a las necesidades y gustos decada usuario. Del mismo modo, son “colaborativas” porque relacionan los distintos artículosbasándose en el hecho de que varios usuarios hayan comprado el mismo artículo o bienmuestran cierta preferencia por ellos.

En la actualidad, uno de los sistemas de recomendación más populares se puede encontraren Amazon. En dicho sistema, cada usuario es una larga columna de números de una

Page 25: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

2.3. CLASIFICACIÓN DE SISTEMAS DE RECOMENDACIÓN 9

tabla muy grande que contiene datos que representan el comportamiento de los millonesde usuarios de dicho sitio Web. Cada columna almacena datos sobre todo aquello que unusuario ha buscado, sobre aquellos ítems que un usuario ha pulsado, y todo aquello que elusuario haya comprado en dicho sitio Web. Esta columna varía cada vez que un usuarioentra en el sitio Web, y cambia cada vez que un usuario realiza una acción dentro del sitioWeb. Dicha información afecta al contenido que cada usuario visualiza en cada página quevisita y también a los correos y ofertas personalizadas que cada usuario recibirá por partede la compañía [KR12].

Figura 2.4: Recomendaciones personalizadas en Amazon.com [Img13a]

2.3. Clasificación de Sistemas de Recomendación

2.3.1. No personalizados

Estos sistemas no conocen nada acerca del usuario, pues carecen de contexto. Sólo tieneninformación de cuáles son los ítems más populares en una determinada categoría. Ej.: Zagatguide, TripAdvisor

Las recomendaciones personalizadas que realizan este tipo de sistemas de recomendaciónson efímeras pues están basadas en la acción que el usuario está realizando en ese momento(ver un producto determinado, comprando un producto determinado — People who X alsoY )

Estas recomendaciones están basadas en la agregación de productos y se muestran por iguala todos los usuarios sin tener en cuenta su perfil, únicamente se tiene en cuenta el productoque se está viendo/comprando.

Para el cálculo de estas preferencias agregadas, se puede tener en cuenta:

Page 26: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

10 CAPÍTULO 2. ESTADO DEL ARTE

La media de las votaciones.

La proporción de votos que un ítem a recibido (cuántos usuarios han votado positiva-mente un ítem).

El objetivo de una predicción o el objetivo de mostrar el conjunto de preferencias agregadases ayudar a los usuarios a decidir si comprar/leer/ver un determinado ítem.

Figura 2.5: Sistema de Recomendación no Personalizado: Tripadvisor [Img14]

Aspectos a tener en cuenta

1. Los usuarios utilizan la escala de votación de distintas maneras. Algunos usuariossiempre tienden a puntuar bastante alto, mientras que otros reservan la máxima pun-tuación para valoraciones realmente extraordinarias. Es necesaria la normalización delas puntuaciones.

2. Es necesario tener en cuenta el tiempo, a la hora de tener en cuenta las votaciones.

Inconvenientes

1. Si se tienen pocas puntuaciones, el nivel de seguridad sobre si un ítem es recomendablees bajo.

Page 27: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

2.3. CLASIFICACIÓN DE SISTEMAS DE RECOMENDACIÓN 11

2.3.2. Basados en Contenido (Content-based Filtering)

Los sistemas de recomendación basados en contenido tienen el ítem como base de lapredicción, en lugar de tener al usuario. Un sistema de recomendación basado en contenido,básicamente monitorizará los hábitos de consumo de sus usuarios y aprenderá sus preferenciasen forma de palabras clave (keywords) o atributos:

Los usuarios pueden construir su propio perfil, definir sus preferencias o modificarlas.

El sistema puede inferir este perfil a partir de las acciones llevadas a cabo por el usuario(clicks, visualizaciones, compras,etc.) - (Información implícita).

El sistema puede inferir el perfil a partir de las votaciones explícitas del usuario sobrelos objetos - (Información explícita)

El sistema puede inferir el perfil del usuario mezclando las acciones llevadas a cabo porel usuario junto con las votaciones (Implícito y Explícito)

Aunque el sistema infiera el perfil del usuario, éste también podrá ver su perfil ymodificarlo si cree que algo no es correcto.

Figura 2.6: Sistema de Recomendación basado en Contenido: Krakatoa Chronicle -1995[Img93]

Las fuentes que utilizan este tipo de sistemas de recomendación serán fuentes con contenidode calidad y analizables, que generalmente formaran parte de un catálogo. Estos sistemasestán muy enfocados a fuentes textuales, puesto que estos se pueden analizar mediantetécnicas clásicas de Minería de Datos y Procesamiento del Lenguaje Natural, que permitenextraer de forma sencilla perfiles de usuarios e ítems, pero también está enfocado a cualquier

Page 28: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

12 CAPÍTULO 2. ESTADO DEL ARTE

fuente que disponga de información como pueden ser fuentes multimedia, como imágenes ovídeo (Ej.: En una tienda online, se dispone de contenido acerca de sus productos y de sususuarios: descripción del producto, comentarios, valoraciones textuales, etc.) [Mar16]. Estossistemas utilizan técnicas de recuperación de la información (similares a las que utilizanlos buscadores en Internet) o de clasificación en base a un criterio y utilizan aprendizajemáquina supervisado para inducir un clasificador que pueda discriminar entre aquellosítems que puedan ser de interés para un determinado usuario de aquellos que no son desu interés, por ello, a la hora de construir un perfil de este tipo, es importante conocerla importancia de un atributo a la hora de definir un objeto/ítem (relevancia de un atributo).

Dado un vector de preferencias de usuario, y dado un nuevo ítem, el sistema será capaz dedeterminar la probabilidad de que a un usuario le guste este nuevo ítem.

Ventajas

1. A diferencia del Filtrado Colaborativo, si los ítems tienes descripciones suficientes, nosevitamos el “new-item problem/cold-start”

2. Las representaciones del contenido son variadas y permiten utilizar diversas técnicasde procesamiento del texto, uso de información semántica, inferencias, etc.

3. Es sencillo hacer un sistema más transparente: usamos el mismo contenido para explicarlas recomendaciones.

Inconvenientes

1. Tienden a la sobre-especialización: va a recomendar items similares a los ya consumidos.Este problema puede ser resuelto agregando a la búsqueda aleatoreridad (por ejemplomediante algoritmos genéticos) [Par15].

2. No evitan el “new-user problem”. Es necesario disponer de información o puntuacionesde los distintos usuarios para poder realizar una predicción.

2.3.2.1. Term frequency Inverse Document Frequency (TFIDF)

Esta técnica es muy usada en el área de Information Retrieval (IR). Esta técnica ayuda aentender qué términos son más relevantes o menos relevantes en una fuente textual, buscandocon qué frecuencia ocurre cada término en el conjunto entero de ítems. Si un término ocurrecon mucha frecuencia en un conjunto de ítems indica que no es relevante para discriminarun objeto de otro.

2.3.3. Basados en Conocimiento (Knowledge-based Filtering)

También conocidos como Case Based Approaches (Knowledge-based o Database-Driven).En este tipo de sistemas son los usuarios quienes establecen requisitos específicos y el sistematrata de identificar qué items encajan con dichos requisitos. Estos sistemas son útiles paraexperiencias personalizadas de forma efímera, por ejemplo, en periódicos para recomendarnoticias relacionadas con un determinado artículo, recomendación de restaurantes basadas

Page 29: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

2.3. CLASIFICACIÓN DE SISTEMAS DE RECOMENDACIÓN 13

en geolocalización y hora para un evento particular, etc.

Estos sistemas están pensados para dominios en los que hay un número pequeño depuntuaciones sobre los que aplicar otro tipo de sistemas de recomendación que requierenun número mayor de puntuaciones para entrenar su modelo. Estos sistemas ayudan a losusuarios a explorar y a entender un espacio de información. Los usuarios son una parteintegral del proceso de descubrimiento del conocimiento, elaborando sus necesidades deinformación a medida que interactúan con el sistema. El sistema únicamente debe tenerconocimiento general acerca de los ítems que forman el dominio y las estrategias de búsquedaútiles en el mismo [Bur00].

Figura 2.7: Sistema de Recomendación basado en Conocimiento: Entree Restaurant [Img00]

Aspectos a tener en cuenta

1. Para construir un sistema de este tipo, es necesario que los datos de los atributos esténbien estructurados y que se alineen con las preferencias de un usuario.

2. Se ha de tener en cuenta la distribución de atributos a lo largo de los ítems (??). (Ej.:Si el 90% de las camisas de una tienda son de algodón, “algodón” no puede ser unatributo que identifique una preferencia de usuario).

Ventajas

Page 30: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

14 CAPÍTULO 2. ESTADO DEL ARTE

1. No es necesario tener una base de datos de usuarios, sólo es necesario disponer deuna base de datos de ítems y se puede utilizar con la primera persona que entre en elsistema.

2. Sus recomendaciones no dependen de una base de valoraciones de usuarios y no tienepor qué manejar la información sobre un usuario particular puesto que sus recomen-daciones son totalmente independientes.

3. Son buenos para encontrar sustitutos.

4. Son buenos para ayudar a decidirse entre varios productos a la hora de realizar unacompra.

5. Son autoexplicativos.

6. Este tipo de sistemas de recomendación es altamente recomendable para complementarotro tipo de sistemas de recomendación.

Inconvenientes

1. Alto coste para construir el dominio de conocimiento (conocimiento de expertos, usua-rios)

2. Para que el resultado arrojado por el sistema de recomendación sea preciso, se requierede un elevado número de iteraciones con el usuario.

3. Los requisitos no son siempre independientes y no son buenos divisores del dominio deconocimiento para llegar a una solución óptima.

4. Estos sistemas no son buenos para recomendar complementos porque no entiendeninterdependencias. El espacio de vectores (VSM - Vector Space Model) no entiendeel concepto de multiplicar diferentes dimensiones juntas. Para ello habría que utilizartécnicas colaborativas.

2.3.4. Filtrado Colaborativo

Este tipo de sistema sabe lo que puede gustar a un usuario basándose en las preferenciasde otras personas con gustos similares. Como ya se ha comentado anteriormente, a este tipode sistema pertenecen los siguientes proyectos:

1992 — Tapestry (Xerox Park): Sistema basado en contenido y colaborativo manual.

1995 — Active Collaborative Filtering: Sistema basado en Information Hub People pararedirigir información a aquellas personas que con certeza pueden estar interesadas enella (Ej.: Joke mailing lists.)

1994 — GroupLens Project (Automated Collaborative Filtering (Nearest-Neighbor Ap-proach)): Red de documentos. Basándose en las puntuaciones para los artículos leídos,recomienda automáticamente otros artículos que cada usuario debería leer basándo-se en los gustos de otras personas que tienen gustos similares al suyo. Este proyecto

Page 31: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

2.3. CLASIFICACIÓN DE SISTEMAS DE RECOMENDACIÓN 15

demostró que es mejor computar las coincidencias en gustos separando los gustos endistintos grupos — Solamente porque un grupo de usuarios comparta su gusto por lasrecetas de cocina no significa que también compartan el gusto por la programación.

En la actualidad — MovieLens: Los usuarios puntúan películas para recibir recomen-daciones sobre otras películas basándose en sus gustos

Ventajas

Su dominio es abierto.

Puede abordar aspectos de los datos que son a menudo difíciles de alcanzar y difícilesde perfilar usando filtrado basado en contenido.

Generalmente son más precisos que las técnicas basadas en contenido.

Inconvenientes

Sufren del conocido problema Cold Start, debido a su incapacidad para manejar ítemsy usuarios nuevos en el sistema.

Este tipo de sistema de recomendación, se divide a su vez en dos subgrupos

2.3.4.1. Modelos de Vecindario

Se centran en el cálculo de relaciones entre ítems o, alternativamente, entre usuarios

2.3.4.1.1 User-User collaborative filtering

Estos sistemas son capaces de recomendar ítems basándose en los gustos de otraspersonas que muestren gustos similares. Estos sistemas recogen medidas de interés o ratingsde los distintos usuarios. El algoritmo calcula la distancia entre cada par de usuarios delsistema para medir cuánto se parecen dos usuarios que han puntuado los mismos ítems.Los usuarios cuyos gustos son afines de acuerdo a estos cálculos forman un vecindario(“neighborhood”).

Aspectos a tener en cuenta

1. ¿Cuántos usuarios vecinos se necesitan para que el cálculo tenga sentido? En teoría,cuantos más mejor, pero el ruido que introducirá un elevado número de usuarios tam-bién hará disminuir la utilidad del sistema. Entre 25 y 100 vecinos es lo aconsejablepara recomendar cada ítem, pero no hay una regla exacta.

Si se escogen todos — Muy costoso computacionalmente y además se estaríanteniendo en cuenta usuarios muy poco o nada similares al usuario en cuestión.

Aplicando un umbral de similaridad.

Eligiendo vecinos aleatorios

Eligiendo los n-top vecinos por similaridad o distancia.

Page 32: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

16 CAPÍTULO 2. ESTADO DEL ARTE

2. Es necesario normalizar los datos puesto que la escala de puntuaciones varía con cadausuario. Por ejemplo, hay usuarios a los que le gusta todo y valoran con puntuacionesmuy elevadas y otros usuarios muy exigentes que suelen dar puntuaciones muy bajasy que rara vez dan puntuaciones elevadas.

Se puede calcular el desvío de las puntuaciones de cada usuario respecto a sumedia junto con una medida de similaridad — Ej.: Correlación de Pearson —Si dos usuarios únicamente tienen un ítem en común, la correlación de Pearsonserá 1, y por tanto estarán altamente correlacionados. Sin embargo no deberíamosconfiar demasiado en su similaridad puesto que únicamente comparten un ítem encomún. Por ello se recomienda añador un término de significancia a la ecuaciónque será multiplicado a la similaridad para evitar estos casos.

Z-score

3. ¿Qué hacer si tenemos pocos datos? Obtener los N-top usuarios para un determinadoítem.

4. Se suele utilizar la media con pesos para calcular la recomendación porque es bastantesimple y funciona bastante bien.

Inconvenientes

Dadosm usuarios y n ítems, la computación del algoritmo se puede convertir en un cue-llo de botella. Lo primero que hay que hacer es calcular la correlación entre los distintosusuarios para obtener un conjunto de usuarios similares al usuario objetivo (O(n)), ycalcular esta operación para cada usuario del sistema es muy costoso (O(mn)).

No siempre es fácil obtener “neighborhoods” que tengan sentido.

La distancia entre dos usuarios varía con mucha facilidad y es necesario recalcularestas distancias continuamente. Para evitar recomputar en cada momento el grupo deusuarios afines a otro (O(m2n)), se pueden recomputar estas distancias una vez al díapor la noche o una vez a la semana, se pueden calcular dichas correlaciones de formaincremental y únicamente calcular en tiempo real las recomendaciones.

Este sistema se vuelve demasiado lento conforme el tamaño de usuarios en el sistemaaumenta. Son sistemas pensados en cientos o miles de usuarios, pero no para millonesde usuarios.

Este algoritmo no funciona bien cuando hay escasez de puntuaciones, es decir, cuandose tienen muchos ítems pero pocos usuarios han realizado puntuaciones sobre los mis-mos. En estos casos es muy difícil encontrar conexiones entre los distintos usuarios delsistema.

2.3.4.1.2 Item-Item collaborative filtering

Estos sistemas calculan la distancia entre cada par de ítems basándose en la calificaciónque les han otorgado los distintos usuarios que comparten gustos similares. El algoritmo

Page 33: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

2.3. CLASIFICACIÓN DE SISTEMAS DE RECOMENDACIÓN 17

calcula similaridad entre pares de ítems.

Aspectos a tener en cuenta

1. Es necesario calcular la correlación entre dos pares de vectores de puntuaciones(puntuaciones en común). El método más utilizado es el coseno de los vectores depuntuaciones, que puede utilizarse también con valores unarios. Normalmente senormalizan los datos antes de calcularlo (sustrayendo la media de usuario o bien delítem) para que de esta forma se calcule la similaridad sobre datos normalizados.

sim(i, j) =

∑u∈U(i)∩U(j)

r̂uir̂uj√∑u

r̂ui√∑

u

r̂uj(2.1)

2. Una vez obtenidas las correlaciones, es necesario calcular la predicción de una puntua-ción de un ítem para un usuario. Para ello es necesario encontrar ítems similares que elusuario haya puntuado, para lo cual se calculará la media con pesos de las puntuacionesdel usuario y se utilizará el valor absoluto en el denominador para excluir similarida-des negativas y únicamente considerar ítems con puntuaciones no negativas o positivas.

Pui =

∑j∈N

sim(i, j)rui∑j∈N|sim(i, j)|

(2.2)

Esta formula se calcula sobre el número de vecinos N , que son los ítems más similaresque ha puntuado el usuario. Un buen valor de N es importante porque:

si N es demasiado pequeña tendremos puntuaciones imprecisas.

si N es demasiado grande acumularemos mucho ruido (ítems con baja similaridad)

N = 20 a menudo funciona bien.

3. Este modelo también funciona bien con datos unarios. Estos datos vienen representa-dos con matrices de 0s y 1s (si el usuario ha comprado un ítem, si el usuario ha vistoun ítem). El problema de este tipo de datos es que no se puede saber lo que significaun 0 en la matriz, por ese motivo se ignoran las puntuaciones con cero en este modeloy el modelo seguirá funcionando correctamente.En este caso lo que se normaliza es el vector de usuario a vectores unitarios. También sepuede realizar un conteo del número de veces que un usuario realiza una determinadaacción.

cos sim(i, j) =~i ·~j‖~i‖‖~j‖

(2.3)

Page 34: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

18 CAPÍTULO 2. ESTADO DEL ARTE

cond prob sim(i,j) = P (j|i) =P (i, j)

P (i)=

|u(i)∩u(j)|#nusers

|u(i)|#nusers

=|u(i) ∩ u(j)||u(i)|

(2.4)

El problema de esta última fórmula es que los ítems que son populares aparecerán rela-cionados con muchos ítems, por lo que la siguiente modificación a la fórmula minimizael famoso impacto de los ítems populares:

cond prob sim(i,j) = P (j|i) =P (i, j)

P (i) · P (j)α, 0 < α < 1 (2.5)

4. Para calcular la predicción de una puntuación de un ítem para un usuario, en este casotambién buscaremos ítems similares que el usuario haya puntuado, pero en este casono tendremos que calcular la media con pesos de las puntuaciones del usuario, bastarácon sumar las similaridades de los ítems encontrados.

score(u.i) =∑j∈N

sim(i, j) (2.6)

Ventajas

1. Ciertas partes del algoritmo se pueden precalcular (offline): Las distancias entre paresde ítems basadas en las puntuaciones de cientos de miles de usuarios son bastanteestables a lo largo del tiempo, por lo que los sistemas de recomendación de este tipopueden precalcular las distancias entre los ítems cada noche y generar recomendacionesen tiempo real a mayor velocidad.

2. Este modelo también se puede aplicar para calcular la lista top-N para un determinadoperfil de ítem.

3. Este modelo funciona bastante bien: presenta un buen rendimiento MAE y buen ren-dimiento en Rank Metric.

4. Implementación eficiente (al menos en el caso en el que el conjunto de ítems es muchomenor que el número de usuarios).

Inconvenientes

1. El problema en ambos sistemas es la inconsistencia en las puntuaciones. Si a un usuariole dieran la oportunidad de puntuar varias veces el mismo ítem, su propia puntuaciónpodría variar puesto que los gustos cambian, las modas pasan, etc.

2. Ambos sistemas son muy rígidos. Ambos sistemas saben si dos usuarios compartengustos por un mismo ítem pero fallan en averiguar si dos usuarios comparten gustospor ítems similares.

3. Falla en la métrica de Serendipia, porque se basa en encontrar ítems altamente co-rrelacionados con otros, y por tanto muy similares.

Page 35: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

2.3. CLASIFICACIÓN DE SISTEMAS DE RECOMENDACIÓN 19

2.3.4.2. Modelos de Factores Latentes

Hace una década que los investigadores se dieron cuenta de cómo poder tener en cuentaítems que son similares mediante la técnica de reducción de dimensionalidad. Estosnuevos sistemas de recomendación nacen para tener en cuenta los gustos subyacentes de losusuarios y descubrir similaridades no tan obvias entre los ítems.

El primer ámbito que se interesó en abordar el problema de la similaridad fue el de“Búsqueda y Recuperación de la Información” (Information Retrieval (IR)) en 1988.En este ámbito tenían especial interés en representar conceptos en lugar de palabras parallevar a cabo la recuperación de la información, puesto que si un usuario no encuentra lapalabra correcta a la hora de hacer una consulta, no podrá recuperar la información quedesea encontrar.

Este modelo es un enfoque alternativo que intenta explicar las puntuaciones a través de lacaracterización de los ítems y de los usuarios. Es decir, este método se basa en la puntuaciónque un usuario da a un conjunto de ítems (por ejemplo, distintas comidas), pero tambiénúnicamente en qué ítems el usuario ha puntuado mejor o peor, busca las característicasque comparten estos ítems (por ejemplo, si son salados, si están preparados al grill, sicontienen pollo, etc.) y busca a usuarios que comparten gustos similares basándose en estascaracterísticas, de este modo puede aplicar este conocimiento a una amplia variedad de ítems

2.3.4.2.1 Métodos de Factorización Matricial

El método de factorización de matrices caracteriza ambos conjuntos (ítems y usuarios)por vectores de factores inferidos a través de patrones encontrados en la matriz de pun-tuaciones R. Una fuerte correspondencia entre los factores de un ítem y los factores deun usuario da lugar a una Recomendación. Este método se ha vuelto muy popular enlos últimos años porque combina una alta escalabilidad con una buena precisión. Ademásofrecen mucha flexibilidad para modelar situaciones de la vida real.

Los modelos de factorización matricial mapean conjuntuamente a los usuarios y los ítemsen un espacio de factores latentes de dimensionalidad f . Cada ítem i se encuentra asociadocon un vector qi ∈ Rf , y cada usuario u se encuentra asociado con un vector pu ∈ Rf .Para un ítem dado i, los elementos de qi miden el grado en el que el ítem posee dichascaracterísticas o factores. Para un usuario dado u, los elementos de pu miden el grado deinterés que el usuario tiene por los ítems que están en lo alto de la correspondiente matrizfactorial. El producto escalar de ambos vectores devuelve el interés general del usuario enlas características de un ítem dado.

r̂ui = qTi · pu (2.7)

El mayor reto se encuentra en la computación del mapeo de cada ítem y cada usuario avectores factoriales qi, pu ∈ Rf

Page 36: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

20 CAPÍTULO 2. ESTADO DEL ARTE

Este procesamiento compacta la matriz, lo que hace que el sistema de recomendación seamás eficiente, puesto que el número de estos atributos será más pequeño que el número totalde ítems posibles, y además, buscando en esta dimensión, un sistema de recomendaciónpodrá rápidamente determinar si a un usuario le gustará un determinado ítem, comparandosus dimensiones contra el perfil del propio usuario.

Ventajas

1. Reduce la dimensionalidad del problema, lo que produce un modelo más pequeño ymás rápido.

2. Genera una red de vecinos más enriquecida, puesto que ahora los usuarios están co-nectados en el mismo espacio de características.

3. Son superiores a los métodos de vecindario clásicos, puesto que permiten la incorpo-ración de información adicional como datos implícitos, efectos temporales y niveles deconfianza [KBV09].

2.3.4.2.1.1 Descomposición Singular de Valores (SVD)La Descomposición Singular de Valores (Singular Value Decomposition (SVD)) es

una técnica matemática que permite identificar factores latentes semánticos en el ámbitode Recuperación de la Información (IR) . Para aplicar SVD en el ámbito de FiltradoColaborativo (CF) requiere factorizar la matriz de puntuaciones R.

Esta técnica toma una matriz y la comprime en una más pequeña y compacta, robusta y quetiene la menor perdida posible. Esta técnica permite generar una matriz de característicaspara los ítems y para los usuarios, pero las matrices resultantes no son legibles por humanos,puesto que estas características no son descriptivas o intuitivas, son valores abstractos queen última instancia proporcionan recomendaciones precisas.

En la técnica SVD, se parte de la matriz de puntuaciones R, matriz MxN , siendo M elnúmero de usuarios y N el número de puntuaciones, para descomponer dicha matriz enotras 3:

U : Matriz de características de usuarios, matriz MxK, siendo K el número de carac-terísticas. Esta matriz representa cómo de importante es cada característica del ítempara cada usuario.

V : Matriz de características de los ítems, matriz NxK, siendo K el número de carac-terísticas. Esta matriz representa cómo de importante es cada característica para cadaítem.∑

: Matriz de pesos o Valores Singulares, matriz KxK. Es una matriz diagonal depesos, únicamente tiene un valor en la diagonal por cada fila. En el caso de los siste-mas de recomendación se utiliza una matriz truncada manteniendo únicamente los Kprincipales valores singulares Esta matriz representa cómo de importante es cada unade las características de los ítems para el modelo.

Page 37: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

2.3. CLASIFICACIÓN DE SISTEMAS DE RECOMENDACIÓN 21

U y V son ortogonales. Si se multiplican estas tres matrices, se obtiene de nuevo la matrizoriginal R.

R̂ ≈ U ·∑·V T (2.8)

La predicción para un usuario a de un ítem i, se calcula como:

Pai =K∑

f=1

uafσfvif (2.9)

Aspectos a tener en cuenta

1. Es necesario escoger un valor apropiado de características (por ejemplo, en el dominiode las películas se ha demostrado que es suficiente con 30 ) puesto que si escogemosmás, el algoritmo tiende a sobreentrenarse.

2. Esta técnica matemática esta basada en matrices, y no está pensada para matricespoco densas, por lo que si se tiene una matriz poco densa, es necesario rellenar loshuecos (mediante promedios inteligentes, predicciones, . . . ) porque la teoría de álgebraen la que subyace este algoritmo necesita una matriz completa para realizar el cálculo.Para ello se aplica una técnica denominada imputación. En esta técnica se asume quelos valores que faltan son iguales a la media (user mean rating, ítem mean rating, userpersonalized rating). Lo que se suele hacer en estos casos es normalizar la matriz R,por lo que si se asumen estos datos como la media, entonces los valores que faltan enuna matriz normalizada serán igual a 0.

Inconvenientes

1. Este método es más costoso computacionalmente. Para una matrizMxN (siendoM <N), el orden es de O(m2n+ n3).

2. Esta técnica es muy lenta cuando se trata de matrices muy grandes.

3. ¿Qué pasa si un usuario nuevo llega al sistema o un usuario que ya existía cambia algunade sus puntuaciones? Computar este modelo SVD cada vez que un usuario puntúa unnuevo ítem es muy costoso. Se pueden aplicar conjuntamente técnicas como FoldingIn que mejora la computación, o bien utilizar en su lugar un algoritmo incremental.

2.3.4.2.1.2 Stochastic Gradient Descent (SGD)

Básicamente, este método trata de encontrar los valores máximos o mínimos de unafunción. Mediante la aplicación de este método se intenta encontrar las matrices de caracte-rísticas de usuarios y de ítems que minimicen el error global del sistema de recomendación.

Simon Funk popularizó una optimización de este método denominado “Método Funk SVD”.Este método fue uno uno de los finalistas del famoso concurso Netflix Challenge Prix [Net09].

Page 38: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

22 CAPÍTULO 2. ESTADO DEL ARTE

La técnica matemática denominada Singular Value Decomposition (SVD) tradicional nose encuentra preparada para procesar una matriz incompleta, por lo que en su lugar estemétodo entrena cada una de las características aplicando SGD hasta que el modelo convergeignorando missing values en la matriz de puntuaciones. Funk SVD descompone la matrizR de puntuaciones (con missing values) en dos componentes P y Q. Los valores singularesse encuentran contenidos en dichas matrices. La aproximación a la matriz original puedeobtenerse mediante:

R̂ ≈ PQT (2.10)

Por lo tanto, este método solamente tiene en cuenta las características que conoce y mideel error en cada iteración del algoritmo [Fun09].

eui = rui − r̂ui = rui − pu · qTi (2.11)

Y finalmente, este algoritmo modifica los parámetros por una magnitud proporcional aγ en la dirección opuesta del gradiente:

qi ← qi + γ · (eui · pu − λ · qi)pu ← pu + γ · (eui · qi − λ · pu) (2.12)

Ventajas

1. Es más rápido que SVD.

2. Puede tratar con missing values.

Inconvenientes

1. La desventaja de esta técnica es que el tiempo que cuesta factorizar la matriz crece muyrápidamente con el número de usuarios e ítems (factorizar una matriz de 250.000.000 deusuarios y 10.000.000 de ítems cuesta un millón de veces más que factorizar una matrizde 250.000 usuarios y 10.000 productos), y el proceso necesita repetirse frecuentemente.La matriz comienza a crecer tan pronto como se reciben nuevas puntuaciones.

2. Este método no permite explicaciones claras al usuario de cómo surge una determinadarecomendación (falta de transparencia y capacidad explicativa)

2.3.4.2.1.3 Mínimos cuadrados alternantes (ALS)Puesto que qi y pu son desconocidos, el problema de resolver ambas incógnitas no es

convexo. Sin embargo, si se fija una de las incógnitas, el problema de optimización se vuelvecuadrático y se puede resolver de forma óptima.

Esta técnica rota a la hora de fijar cada uno de los vectores qi y pu. Cuando todos losvectores pu están fijos, el sistema recomputa los vectores qi y vice versa. Este procesoasegura la convergencia del algoritmo.

Ventajas

Page 39: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

2.4. FILTRADO COLABORATIVO INCREMENTAL 23

1. Esta técnica permite paralelización. El sistema calcula cada qi de forma independientedel resto de factores de ítem y calcula cada pu de forma independiente del resto defactores de usuario, por lo que permite la paralelización masiva del algoritmo.

2. ALS maneja eficientemente los datos implícitos cuyos datos de entrenamiento seandispersos o escasos (“sparse”)

Inconvenientes

1. Si no se aplica paralelización del algoritmo, ALS es más complejo y lento que SGD.

2.4. Filtrado Colaborativo Incremental

Por lo general, un sistema de recomendación trabaja en dos pasos completamente dife-renciados.

El primer paso es el paso offline o de construcción del modelo. Normalmente, estepaso es muy costoso en computación y tiempo, por lo este paso se intenta realizar elmínimo número de veces posibles. Por ejemplo, un sitio Web de comercio electrónico,intentará computar este paso una vez al día, en momentos de baja carga del sistema(por ejemplo, en la madrugada) o bien, una vez a la semana. Esto funciona bien, si labase de datos de puntuaciones es relativamente estática y si el comportamiento de sususuarios no cambia de forma significativa en un periodo corto de tiempo.

El segundo paso es el paso online o el paso de ejecución, es decir, la generación de lapredicción.

En la actualidad, los sistemas de recomendación basados en Filtrado Colaborativo queutilizan factorización matricial son los más extendidos, debido a su alta precisión yescalabilidad. Sin embargo, la mayoría de estos sistemas basados en factorización matricialson modelos de procesamiento batch que son incapaces de ser actualizados de formaincremental y que se encuentran entrenados sobre conjuntos de datos estáticos, mientrasque en las aplicaciones del mundo real los usuarios esperan recibir una respuesta rápidapor parte de dichos sistemas, una vez que han proporcionado reseñas o puntuaciones sobrelos ítems, a la vez que sus puntuaciones varían cada segundo y son generadas contínuamente.

Una estrategia que se tiene en cuenta para manejar esta rápida expansión de datos consisteen reconstruir totalmente el modelo, si el crecimiento de los datos excede un determinadoumbral, puesto que es la única forma de descubrir nuevos patrones. Sin embargo, estatécnica conlleva un sobrecoste por la elevada cantidad de reentrenamientos que seríannecesarios, estaría teniendo en cuenta como estáticos ambos conjuntos (ítems y usuarios) yno permitiría una respuesta en tiempo real por parte del sistema de recomendación.

Para evitar costosos reentrenamientos y conseguir proporcionar recomendaciones en tiemporeal al usuario, con cierto grado de precisión, lo deseable es conseguir implementar un algo-ritmo de Filtrado Colaborativo Incremental que aprenda de los nuevos datos que entren alsistema.

Page 40: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

24 CAPÍTULO 2. ESTADO DEL ARTE

2.4.1. Técnica Folding-in

Es una técnica de proyección en el ámbito de la Descomposición Singular de Valores(SVD). La técnica de proyección se basa en el modelo SVD ya existente y los nuevos usua-rios o ítems que lleguen no afectarán al modelo ya calculado. Esta técnica permite realizarrecomendaciones y predicciones a usuarios que inicialmente, no fueron considerados duranteel entrenamiento del modelo durante el cual se realiza la factorización de la matriz de pun-tuaciones. Esta técnica genera un nuevo vector de preferencias para el usuario y un vectorde relevancia de características de ítems para el nuevo usuario, pero no recalcula la matrizfactorizada [SKKR02].

R̂ ≈ U · Σ · V T (2.13)

Figura 2.8: Diagrama esquemático de la técnica Folding-in [SKKR02]

Para un nuevo usuario u, cuyo vector de puntuaciones es ru, se puede obtener su vector depreferencias de usuario como:

Uu = (Σ · V T )−1ru = V · Σ−1ru (2.14)

Una vez calculado el vector de preferencias del usuario, se puede obtener su vector de interesesde ítems como:

Iu = UuΣ · V T (2.15)

Aunque esta técnica permite realizar recomendaciones a nuevos usuarios, la precisión delmodelo irá disminuyendo a lo largo del tiempo, por lo que es necesario recomputar el modelollevando a cabo la refactorización completa de la matriz cada cierto tiempo durante el pasooffline y en momentos de baja carga del sistema [ERK11].

2.4.2. Factorización de Matriz Kernel Regularizada (RKMF)

Este método utiliza una función Kernel que permite transformar el resultado del pro-ducto de las matrices de características de tal forma que se pueden aplicar actualizacionesonline en un modelo RKMF sin tener que reentrenar el modelo entero. Al igual que la facto-rización de matrices (MF), la factorización Kernel de matrices (KMF) usa dos matrices decaracterísticas: de usuarios y de ítems, pero la interacción entre un vector de características

Page 41: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

2.4. FILTRADO COLABORATIVO INCREMENTAL 25

de usuario pu y un vector de características de un ítem qi está afectada por una funciónKernel.

r̂ui = a+ c ·K(pu, qi), K : Rk × Rk → R (2.16)

Los términos a y c permiten reescalar las predicciones.

Este método no actualiza los factores latentes ya entrenados pu y qi, si no que trata de actua-lizar el modelo de forma aproximada incluyendo la información de los nuevos usuarios/ítems[RST08].

2.4.3. Stochastic Gradient Descent Incremental (RISMF)

Este método no tiene en cuenta el orden cronológico de las puntuaciones. Para unapuntuación dada del conjunto de entrenamiento rui, si se dispone del interés calculado r̂ui,este algoritmo cambia los pesos de las matrices de características P y Q para disminuir elerror cuadrático medio (RMSE), y aproximar mejor así el valor de r̂ui al valor real rui. Paraello, este método calcula el gradiente del error:

∂puke′ui = −eui · qki,

∂qkie′ui = −eui · puk (2.17)

y actualiza los pesos de las características en la dirección opuesta del gradiente, donde η esla tasa de aprendizaje:

p′uk = puk + η · eui · qkiq′ki = qki + η · eui · puk

(2.18)

Esta fórmula puede provocar un sobreajuste en los casos en los que haya usuarios conpocas puntuaciones. Un modo habitual de evitar este situación es mediante la aplicación deun parámetro de regularización penalizando la raíz cuadrada de la norma Euclídea de lospesos. Este parámetro es λ >= 0:

e′ui = (e2ui + λ · pu · pTu + λ · qTi · qi)/2 (2.19)

Con dicho parámetro de regularización, el gradiente del error quedaría como:

∂puke′ui = −eui · qki + λ · puk,

∂qkie′ui = −eui · puk + λ · qki (2.20)

y la actualización de los pesos de las características en la dirección opuesta del gradientetambién se ve ajustada con el parámetro λ:

p′uk = puk + η · (eui · qki − λ · puk)

q′ki = qki + η · (eui · puk − λ · qki)(2.21)

En dicho algoritmo se calcula cada característica de forma simultánea y las matrices P y Qse inicializan de forma aleatoria.

Page 42: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

26 CAPÍTULO 2. ESTADO DEL ARTE

Igualmente, este método permite entrenar de forma incremental el modelo con los datos delconjunto de entrenamiento, pero una vez entrenado el modelo, este algoritmo no permiterealimentar el modelo con las nuevas puntuaciones de los usuarios, de tal forma que no seanecesario recomputarlo [TPNT09].

2.4.4. Factorización Matricial Regularizada Incremental (IRMF)

Este algoritmo permite tratar datos de nuevos usuarios/items de forma incremental conlos datos del conjunto de entrenamiento, puesto que parte del algoritmo base formuladopor Takács et al. [TPNT09] y a su vez permite reentrenar de forma incremental lascaracterísticas del algoritmo a medida que nuevos datos de nuevos usuarios/ítems lleguen alsistema, tal y como sucede en el mundo real [LXZ12].

Figura 2.9: Factorización Matricial Regularizada Incremental (IRMF): Comparativa (I)[LXZ12]

Como se puede observar en la Figura 2.9, al inicio del algoritmo, la precisión de losalgoritmos batch tradicionales y las versiones incrementales (IRMF, IRMF-B) es muysimilar, pero debido a la actualización incremental del algoritmo, a medida que los nuevosdatos de usuarios llegan al sistema, las versiones incrementales superan en precisión a losalgoritmos convencionales. Este fenómeno es debido a las actualizaciones incrementales quepermiten al propio sistema de recomendación realizar un seguimiento de la varianza en lospatrones de puntuación de los distintos usuarios.

La principal desventaja de este tipo de sistema incremental es la necesidad de cachear losresultados intermedios del algoritmo de cada época de entrenamiento, lo que supone unaalta complejidad de almacenamiento en memoria si se quieren dar tiempos de respuesta bajos.

Page 43: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

2.4. FILTRADO COLABORATIVO INCREMENTAL 27

Figura 2.10: Factorización Matricial Regularizada Incremental (IRMF): Comparativa (II)[LXZ12]

Page 44: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

28 CAPÍTULO 2. ESTADO DEL ARTE

Page 45: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

Capítulo 3

Solución adoptada para la resolución delproblema

3.1. Introducción

En este capítulo se presentará más en detalle el algoritmo seleccionado para el desarrollodel presente proyecto, así como las tecnologías y el entorno de desarrollo empleados parallevarlo a cabo.

3.2. Diseño Sistema Recomendador en Tiempo Real

La solución adoptada para desarrollar el prototipo de Sistema de Recomendación enTiempo Real se divide en dos partes diferenciadas:

1. Por una parte, la que corresponde el núcleo principal del proyecto, se encuentra lasolución adoptada para la implementación del Sistema de Recomendación Incremen-tal, para lo cual se ha decidido desarrollar un conjunto de procedimientos/tareasdiferenciadas, las cuales se albergarán en un servidor.

Cada procedimiento será encargado de ejecutar cada una de las tareas que conformanel funcionamiento del Sistema de Recomendación:

Obtención/Selección de datos históricos para entrenamiento y validación del mo-delo de recomendación. Este paso es fundamental en el proceso. Es necesariodisponer de una cantidad suficiente de datos válidos que permitan la correctaconstrucción del modelo. En este paso se seleccionarán dos conjuntos de datos:uno para el entrenamiento del modelo y otro para la validación del mismo (pro-cedimiento offline).

Construcción del modelo. Este procedimiento será el encargado de construir elmodelo a partir del conjunto de datos de entrenamiento, validando los resultadosdel mismo contra el conjunto de datos de validación (procedimiento offline).

29

Page 46: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

30CAPÍTULO 3. SOLUCIÓN ADOPTADA PARA LA RESOLUCIÓN DEL PROBLEMA

Sistema de Recomendación en Tiempo Real. Este procedimiento será el encar-gado de dada una nueva puntuación sobre un ítem por un usuario, reajustar elmodelo de forma incremental y proporcionar una nueva recomendación al usuario(procedimiento online).

2. Por otra parte, se encontrará la solución adoptada para desarrollar una interfaz, eneste caso Web, a través de la cual los usuarios podrán introducir valoraciones sobrelos distintos ítems y también dicha interfaz, hará de puente de comunicación entre elusuario y el procedimiento encargado del Sistema de Recomendación en Tiempo Realpara obtener nuevas recomendaciones para los usuarios a medida que estos introducenvaloraciones sobre los mismos.

Ambas partes serán capaces de comunicarse con el servidor de Base de datos escogidopara el almacenamiento/obtención/actualización de datos necesarios para el correctofuncionamiento del Sistema de Recomendación.

3.3. Algoritmo del Sistema de Recomendación en Tiem-po Real

3.3.1. Filtrado Colaborativo Incremental

La solución adoptada como algoritmo para la creación de un sistema de recomen-dación que aprenda de forma incremental de las acciones de los distintos usuarios entiempo real, es el algoritmo de Filtrado Colaborativo Incremental basado en FactorizaciónMatricial Regularizada [2.4.4] presentado en el trabajo de investigación de Luo et al. [LXZ12].

Dicho algoritmo parte del conjunto de datos de entrada, que viene dado por una matrizde puntuaciones R, de orden mxn donde |m| es el número de usuarios y |n| es el númerode ítems disponibles, cada fila de la matriz representa un vector de usuario ru, donde cadaentrada del vector rui ∈ R representa la puntuación del usuario u sobre el ítem i.

Rm,n =

r1,1 r1,2 · · · r1,nr2,1 r2,2 · · · r2,n...

... . . . ...rm,1 rm,2 · · · rm,n

(3.1)

Siendo Rk el conjunto de entrada conocidas de R, es decir las entradas para las cualesrui > 0, dado un subconjunto de puntuaciones T ⊂ Rk conocido como conjunto dedatos de entrenamiento, el objetivo del algoritmo es construir un estimador heurístico(sistema de recomendación), que permita estimar las puntuaciones desconocidas con elmenor error acumulativo, basándose en estas puntuaciones conocidas del conjunto de datos

Page 47: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

3.3. ALGORITMO DEL SISTEMA DE RECOMENDACIÓN EN TIEMPO REAL 31

de entrenamiento.

El error acumulativo del recomendador se calculará sobre el subconjunto de datos conocidosrestantes, V ⊂ Rk, denominado conjunto de datos de validación, para evitar sobreajuste(V ∩ T = ∅).

El objetivo de la Factorización Regularizada de Matrices (RMF) es construir una aproxi-mación de rango bajo de la matriz de entrada R o lo que es lo mismo, una descomposiciónde la misma en valores singulares [RM99]. Y como ya se comentó anteriormente, una de lasventajas de RMF es la de que puede tratar con matrices con missing values.

Siendo f el número de características, aplicando RMF se obtendrán dos matrices: la matriz decaracterísticas de usuarios P ∈ Rmxf , donde cada fila de la matriz representa las preferenciasde un usuario, y la matriz de características de ítems Q ∈ Rnxf , donde cada fila de la matrizrepresenta las características de cada ítem, y el valor estimado de la puntuación de un usuariou sobre un ítem i podrá obtenerse como:

r̂ui = pu · qTi (3.2)

Para estimar apropiadamente los valores de los parámetros P y Q, se inicializa cada caracte-rística con valores aleatorios uniformemente distribuidos elegidos de una escala predefinida,y se aplica la técnica SGD [2.3.4.2.1.2] a la aproximación del error, que se encuentra dadopor el error cuadrático regularizado.

RSE =∑u,i∈T

(rui − puqTi ) + λ(‖pu‖2 + ‖qi‖2) (3.3)

donde λ es el término de regularización para evitar sobreajuste. Aplicando SGD se iterarásobre todas las puntuaciones del conjunto de entrenamiento T y se modificarán los paráme-tros involucrados en la dirección opuesta del gradiente. Dichos parámetros se modifican deforma simultánea para cada ejemplo del conjunto de entrenamiento de forma secuencial:

(P,Q) = arg min RSE =⇒

{∂

∂puRSE = −2(rui − puqTi )qi − 2λpu)

∂∂qiRSE = −2(rui − puqTi )pu − 2λqi)

=⇒

{pu ← pu + η((rui − puqTi )qi − λpu)

qi ← qi + η((rui − puqTi )pu − λqi)

(3.4)

siendo η la tasa de aprendizaje. Este proceso de entrenamiento se repetirá varias veces,y cada una de estas etapas se conoce como época de entrenamiento. es común que senecesiten varias épocas hasta que el algoritmo converja, y el número de épocas necesarias

Page 48: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

32CAPÍTULO 3. SOLUCIÓN ADOPTADA PARA LA RESOLUCIÓN DEL PROBLEMA

dependerá de los valores de η y λ y del tamaño del conjunto de entrenamiento.

RMF es un método iterativo de aprendizaje, en el que los datos de entrenamiento sonaprendidos de forma secuencial.

Siento R(u) el conjunto de puntuaciones conocidas de un usuario u, R(u) = ru,1, ru,2, . . . , ru,K(K es el número de puntuaciones conocidas para el usuario u), y siendo R(i) el conjunto depuntuaciones conocidas de un ítem i, R(i) = r1,i, r2,i, . . . , rH,i (H es el número de puntuacio-nes conocidas para el ítem i), se puede obtener las expresiones del resultado de entrenar puy qi después de una época de entrenamiento.

p(K)u = cKp(0)u + cK−1η(ru,1 − p(0)u qh1

1 )qh11 + cK−2η(ru,2 − p(1)u qh2

2 )qh22

+ · · ·+ η(ru,K − p(K−1)u qhKK )qhK

K

q(H)i = cHq

(0)i + cH−1η(r1,i − p(k1)1 q0i )pk11 + cH−2η(r2,i − p(k2)2 q1i )pk22

+ · · ·+ η(rH,i − p(kH)H qH−1i )pkHH

(3.5)

3.3.1.1. RMF Secuencialmente Independiente (SI-RMF)

Estas salidas son sensibles a la secuencia de entrada y mientras que c < 1, el impactode las primeras puntuaciones de entrada va disminuyendo a medida que el proceso deentrenamiento progresa. Por lo tanto en este ejemplo, la varianza de las característicaslatentes aprendidas de un ejemplo dado, dependerá del valor inicial y del estado temporalde las características latentes relevantes para el ejemplo actual que está siendo aprendido,por ello el valor de p(K)

u depende del valor de qhKk

p(K)u = cKp(0)u + A, A = cK−1η(ru,1 − p(0)u qh1

1 )qh11 + · · ·+ η(ru,K − p(K−1)u qhK

K )qhKK

q(H)i = cHq

(0)i +B, B = cH−1η(r1,i − p(k1)1 q0i )pk11 + · · ·+ η(rH,i − p(kH)

H qH−1i )pkHH(3.6)

La complejidad del proceso de entrenamiento del algoritmo RMF se encuentra causadaprincipalmente por esta fuerte dependencia de la secuencia de los ejemplos de entrada. Decara a tener una menor complejidad, para llevar a cabo la actualización incremental, elprimer paso es eliminar esta sensibilidad a la secuencia de entrada, si consideramos quetodas las entradas son aprendidas de forma simultánea, la formula anterior quedaría comosigue:

A′ = αKη(ru,1 − p(0)u q(0)1 )q

(0)1 + · · ·+ αKη(ru,K − p(0)u q

(0)K )q

(0)K

B′ = βHη(r1,i − p(0)1 q(0)i )p

(0)1 + · · ·+ βHη(rH,i − p(0)H q

(0)i )p

(0)H

(3.7)

Page 49: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

3.3. ALGORITMO DEL SISTEMA DE RECOMENDACIÓN EN TIEMPO REAL 33

donde αK y βH dependen de los tamaños de R(u) y R(i) (K y H) respectivamente:

αK =

K−1∑k=0

ck

K=

1− cK

K(1− c); βH =

H−1∑h=0

ch

H=

1− cH

H(1− c)(3.8)

Dando lugar al algoritmo RMF secuencialmente independiente (SI-RMF):

p(K)u = ckp(0)u + A′, A′ = η

1− cK

K(1− c)

K−1∑k=0

(ru,k − p(0)u q(0)k )q

(0)k

q(H)i = chq

(0)i +B′, B′ = η

1− cH

H(1− c)

H−1∑h=0

(rh,i − p(0)h q(0)i )p

(0)h

(3.9)

3.3.1.2. RMF Incremental

Una vez se haya completado el proceso de entrenamiento aplicando el algoritmo SI-RMFD veces, hasta que el modelo converja y se hayan obtenido los valores finales p(K)

u(D)

y q(H)i(D)

junto con sus valores intemedios: p(K)u(1)

, · · · , p(K)u(D)

y q(H)i(1)

, · · · , q(H)i(D)

y hayan sido cacheados en

memoria, se podrán aplicar las formulas correspondientes del módelo RMF Incremental.

Para un nuevo ejemplo ru,K+1, la regla para actualizar de forma incremental cada vector pude la matriz de características de usuario quedaría como sigue:

Para actualizar los valores de características cacheados para la primera época (d = 1)

p(K+1u(1)

=αK+1

αK

(p(Ku(1)

− cKp(0)u

)+ cK+1p(0)u︸ ︷︷ ︸

Rebalanceamiento del parámetro de entrenamiento

+αK+1η(ru,K+1 − p(0)u q(0)K+1)q

(0)K+1︸ ︷︷ ︸

Inclusión del nuevo ejemplo

(3.10)

Para actualizar los valores de características cacheados a partir de la primera época

Page 50: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

34CAPÍTULO 3. SOLUCIÓN ADOPTADA PARA LA RESOLUCIÓN DEL PROBLEMA

(d > 1)

p(K+1u(d)

=αK+1

αK

(p(Ku(d)

− cKp(K)u

(d−1)

)+ cK+1p(K+1)

u(d−1)︸ ︷︷ ︸

Rebalanceamiento del parámetro de entrenamiento

+αK+1η

[(ru,K+1 − p(K+1)

u(d−1)

q(HK+1)K+1(d−1)

)q(HK+1)K+1(d−1)︸ ︷︷ ︸

Inclusión del nuevo ejemplo

−K∑k=1

(4pu(d−1)

q(Hk)k(d−1)

)q(Hk)k(d−1)

]︸ ︷︷ ︸

Manejo de la diferencia inicial de pu

(3.11)

Para cada ítem k ∈ R(u), k 6= K + 1:

q′k(Hk)

(d+1)

= q(Hk)k(d+1)

+ βHkη

[(ru,k − p(K+1)

u(d)

q(HK)i(d)

)4pu(d)

−(4pu(d)

q(Hk)i(d)

)p(K)u(d)

]︸ ︷︷ ︸

Manejo de la diferencia inicial de pu

(3.12)

Para un nuevo ejemplo rH+1,i, la regla para actualizar de forma incremental cada vector qide la matriz de características de ítems quedaría como sigue:

Para actualizar los valores de características cacheados para la primera época (d = 1)

q(H+1i(1)

=βH+1

βH

(q(Hi(1)

− cHq(0)i

)+ cH+1q

(0)i︸ ︷︷ ︸

Rebalanceamiento del parámetro de entrenamiento

+ βH+1η(rH+1,i − p(0)H+1q(0)i )p

(0)H+1︸ ︷︷ ︸

Inclusión del nuevo ejemplo

(3.13)

Para actualizar los valores de características cacheados a partir de la primera época(d > 1)

q(H+1i(d)

=βH+1

βH

(q(Hi(d)

− cH q(H)i

(d−1)

)+ cH+1q

(H+1)i(d−1)︸ ︷︷ ︸

Rebalanceamiento del parámetro de entrenamiento

+ βH+1η

[(rH+1,i − p(KH+1)

H+1(d−1)

q(H+1)i(d−1)

)p(KH+1)H+1(d−1)︸ ︷︷ ︸

Inclusión del nuevo ejemplo

−H∑

h=1

(p(Kh)h

(d−1)4qi(d−1)

)p(Kh)h

(d−1)

]︸ ︷︷ ︸

Manejo de la diferencia inicial de qi

(3.14)

Para cada usuario h ∈ R(i), h 6= H + 1:

p′h(Kh)

(d+1)

= p(Kh)h

(d+1)

+ αKhη

[(rh,i − p(Kh)

h(d)

q(H+1)i(d)

)4qi(d)

−(p(Kh)h(d)

4qi(d)

)q(H)i(d)

]︸ ︷︷ ︸

Manejo de la diferencia inicial de qi

(3.15)

En la Figura (3.1) se ilustra el efecto de la diferencia incremental en cada vector de la matrizde características de usuario P . Para garantizar que el algoritmo es capaz de responderrápidamente al usuario, únicamente se consideran las interacciones de las características enel nivel 1 y 2.

Page 51: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

3.4. CONJUNTO DE DATOS 35

Figura 3.1: Efecto de la diferencia incremental en pu causada por un nuevo ejemplo [LXZ12]

3.4. Conjunto de Datos

El conjunto de datos seleccionado para la realización del prototipo, es el conjunto dedatos de MovieLens 1M1. Se trata de un conjunto de datos recogido por el Proyecto de Inves-tigación de GroupLens2 de la Universidad de Minnesota a través del sitio Web de MovieLens3.

El conjunto de datos contiene un millón de puntuaciones anónimas, con valoracionesentre 1 y 5, sobre aproximadamente 3900 películas realizadas por 6040 usuarios recogi-das en MovieLens en el año 2000, siendo la densidad de la matriz de puntuaciones del 4.25%.

El conjunto de datos se encuentra formado por 3 ficheros:

1. movies.dat: La información relativa a cada una de las películas disponible en elconjunto de datos se encuentra en este fichero proporcionado en formato csv 4 con lascolumnas mostradas en la Tabla 3.1.

movie_id title genres0 1 Toy Story (1995) Animation|Children’s|Comedy1 2 Jumanji (1995) Adventure|Children’s|Fantasy2 3 Grumpier Old Men (1995) Comedy|Romance3 4 Waiting to Exhale (1995) Comedy|Drama4 5 Father of the Bride Part II (1995) Comedy

Cuadro 3.1: Cabecera Fichero de Datos de Películas: movies.dat

1http://grouplens.org/datasets/movielens/1m/2http://grouplens.org/about/what-is-grouplens/3https://movielens.org4https://en.wikipedia.org/wiki/Comma-separated_values

Page 52: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

36CAPÍTULO 3. SOLUCIÓN ADOPTADA PARA LA RESOLUCIÓN DEL PROBLEMA

MovieID: Identificador numérico único de la película.Title: Título de la película junto con el año de estreno. Los títulos son idénticosa los títulos proporcionados por la base de datos IMBD5.Genres: Lista de géneros separados por el caracter “|” al que pertenece la película:• Action• Adventure• Animation• Children’s• Comedy• Crime• Documentary• Drama• Fantasy• Film-Noir• Horror• Musical• Mystery• Romance• Sci-Fi• Thriller• War• Western

2. users.dat: La información relativa a cada uno de los usuarios disponible en elconjunto de datos se encuentra en este fichero proporcionado en formato csv con lascolumnas mostradas en la Tabla 3.2.

user_id gender age occupation zip_code0 1 F 1 10 480671 2 M 56 16 700722 3 M 25 15 551173 4 M 45 7 024604 5 M 25 20 55455

Cuadro 3.2: Cabecera Fichero de Datos de Usuarios: users.dat

UserID: Identificador numérico único del usuario.Gender: Indica el género del usuario: “M” para hombres y “F” para mujeres.Age: Es la edad del usuario, encontrada entre los siguientes rangos mostrados enla Tabla 3.3

5http://www.imdb.com

Page 53: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

3.4. CONJUNTO DE DATOS 37

1 Menos de 1818 18-2425 25-3435 35-4445 45-4950 50-5556 56+

Cuadro 3.3: Rangos de edad de los usuarios

Occupation: La profesión del usuario, clasificada entre las opciones mostradasen la Tabla 3.4:

0 other or not specified care1 academic/educator2 artist3 clerical/admin4 college/grad student5 customer service6 doctor/health7 executive/managerial8 farmer9 homemaker10 K-12 student11 lawyer12 programmer13 retired14 sales/marketing15 scientist16 self-employed17 technician/engineer18 tradesman/craftsman19 unemployed20 writer

Cuadro 3.4: Ocupaciones de los usuarios

3. ratings.dat: La información relativa a cada una de las puntuaciones de un usuariosobre una determinada película se encuentra disponible en este fichero proporcionadoen formato csv con las columnas mostradas en la Tabla 3.5. Cada usuario tiene almenos 20 puntuaciones.

UserIDs: Los identificadores de los distintos usuarios (Entre 1 y 6040)

MovieIDs: Los identificadores de las películas (Entre 1 y 3952)

Page 54: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

38CAPÍTULO 3. SOLUCIÓN ADOPTADA PARA LA RESOLUCIÓN DEL PROBLEMA

Ratings: Las puntuaciones dadas por cada uno de los usuarios (Entre 1 y 5).

Timestamp: Fecha y hora en la que se realizó la puntuación representada ensegundos desde la era.

user_id movie_id rating timestamp0 1 1193 5 9783007601 1 661 3 9783021092 1 914 3 9783019683 1 3408 4 9783002754 1 2355 5 978824291

Cuadro 3.5: Cabecera Fichero de Datos de Puntuaciones: ratings.dat

Se ha escogido este conjunto de datos porque es uno de los conjuntos de datos utilizado porLuo et al. [LXZ12] para entrenar el algoritmo incremental, del que se parte en este trabajopara realizar el prototipo.

3.4.1. OMDb API

El API OMDb6 es un servicio Web gratuito que permite obtener información sobrepelículas a través de un API sencillo.

Se ha utilizado el API OMDb para enriquecer la información de las películas disponibles enla base de datos y mejorar de este modo la experiencia de la Interfaz Web.

3.5. Tecnologías utilizadas

En esta sección se describen las distintas tecnologías empleadas para el desarrollo delproyecto.

3.5.1. Python

El lenguaje de programación con el que se han desarrollado los distintos componentes delprototipo, así como el lenguaje en el que están programadas las distintas librerías externasempleadas por la aplicación, es Python.

6http://www.omdbapi.com

Page 55: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

3.5. TECNOLOGÍAS UTILIZADAS 39

Python es un lenguaje dinámico de programación, interpretado, extremadamente sencilloy que se utiliza en una amplia variedad de dominios de aplicación. Es un lenguaje de altonivel. Suele ser comparado con otros lenguajes de programación con Tcl, Perl, Ruby o Java.Entre sus características distintivas se incluyen:

Sintaxis sencilla y clara.

Ofrece varios paradigmas: imperativo, orientado a objetos, funcional.

Permite al desarrollador escribir sus códigos de manera potente y rápida.

Gran cantidad de librerías estándar y módulos de terceros.

Extensiones y módulos que permiten su fácil integración con otros lenguajes de pro-gramación (Jython para Java, IronPython para .NET, etc.)

Se encuentra disponible para la mayoría de sistemas operativos: Windows, Linux/Unix,OS/2, Mac, Amiga, entre otros.

Es de código abierto. Cualquier persona es libre de descargar el intérprete de Pythony estudiar su código, modificarlo y hacer su propio interprete.

Se ha elegido dicho lenguaje para la implementación del proyecto, puesto que permitemantener una sintaxis clara, compacta y ordenada, está disponible en la mayoría de lossistemas operativos y ante todo, permite hacer lo mismo que otros lenguajes de programacióncomo Java, pero empleando la mitad de código y por tanto, la mitad de tiempo. Ademásposee de forma nativa todo el potencial de las expresiones regulares de otros lenguajes deprogramación como Perl.

3.5.2. Django

Django es un framework7 Web escrito en Python. Dicho framework utiliza un patrón dediseño aproximado al MVC(Modelo-Vista-Controlador). El patrón MVC define una formade desarrollar software en la que el código para definir y acceder a los datos (el modelo) seencuentra separado del pedido lógico de la asignación de ruta (el controlador), que a su vezse encuentra separado de la interfaz del usuario (la vista), permitiendo de esta forma quelos componentes tengan un acoplamiento débil entre sí, es decir, cada pieza de la aplicaciónWeb que funciona sobre Django tiene un único próposito clave y puede ser modificadaindependientemente sin afectar a las otras piezas.

En Django el patrón MVC se separa de la siguiente manera:

Modelo: es la pieza dedicada al acceso a la base de datos, y es manejada por la capade la base de datos de Django.

7En desarrollo Web, un framework o entorno de desarrollo Web es un conjunto de herramientas quecomponen un diseño reutilizable que facilita y agiliza el desarrollo de sistemas Web.http://www.lsi.us.es/~javierj/investigacion_ficheros/Framework.pdf

Page 56: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

40CAPÍTULO 3. SOLUCIÓN ADOPTADA PARA LA RESOLUCIÓN DEL PROBLEMA

Figura 3.2: Patrón MVC

Vista: es la pieza que selecciona qué datos mostrar y cómo mostrarlos. Es manejadapor la vista y las plantillas.

Controlador: es la pieza que delega a la vista dependiendo de la entrada del usuario.Es manejada por el propio framework llamando a la función adecuada de Python parala url obtenida

Para implementar dicho patrón, Django se basa en 4 archivos básicos para el desarrollode cualquier aplicación:

models.py: contiene una descripción de las tablas de la base de datos, como unaclase Python. A esto se le llama el modelo. Usando esta clase de pueden crear, buscar,actualizar y borrar entradas de la base de datos usando código Python sencillo en lugarde escribir declaraciones SQL repetitivas.

views.py: contiene la lógica de las distintas páginas de la aplicación Web. A cadafunción contenida en dicho fichero se la denomina vista.

urls.py: especifica qué vista es llamada en función del patrón URL dado. Este archivoes muy importante porque indicará al framework a qué función(vista) deberá llamarcuando le llega una petición a una URL específica, y por ello se deberá tener especialcuidado al definirlo.

{template}.html: son plantillas HTML que describen el diseño de las distintas pági-nas de las que consta la aplicación Web.

La aplicación ha sido desarrollada utilizando el framework Django, ya que dicho entornode desarrollo Web permite construir aplicaciones Web potentes utilizando Python, de una

Page 57: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

3.5. TECNOLOGÍAS UTILIZADAS 41

manera correcta, sencilla, usando menos código que si no se utilizara dicho framework y portanto mucho más rápido.

3.5.3. Pandas

Python Data Analysis Library8 es una librería de Python que permite manejar fácilmenteestructuras de datos y herramientas de análisis de datos. Permite manejar diferentes fuentesde datos: datos tabulados, series temporales, matrices de datos, datos estadísticos. Parainstalar dicho módulo es necesario Python 2.7 o superior y la librería Numpy(3.5.5) versión1.7 o superior.

Se utilizará dicha librería para manejar el conjunto de datos 3.4 escogido para entrenar elmodelo.

3.5.4. Scikit-learn

Scikit learn9 es una librería de Python de aprendizaje automático que contieneuna serie de herramientas para realizar análisis y minería de datos. Para instalar dichomódulo es necesario Python 2.6 o superior y la librería NumPy(3.5.5) versión 1.6.1 o superior.

En este trabajo se utilizarán las utilidades incluidas en dicha librería para realizar Valida-ción Cruzada y para la evaluación del rendimiento del algoritmo.

3.5.5. NumPy

NumPy10 es una librería que incluye la funcionalidad necesaria para poder llevar a cabocomputación científica con Python. Permite manejar vectores y matrices, así como realizaroperaciones de algebra lineal, transformaciones y manejo de números aleatorios.

Esta librería es fundamental para poder computar el algoritmo del sistema de recomendación.

3.5.6. SQLite

El sistema gestor de bases de datos utilizado por la aplicación Web es SQLite. Se tratade un sistema de base de datos autocontenido, que no necesita ser instalado y al que seaccede fácilmente sin un proceso servidor intermediario, puesto que cualquier proceso quequiera acceder a la base de datos leerá y escribirá directamente a disco a través de un ficherode base de datos.

Se trata de una base de datos transaccional y relacional, cuyos datos serán almacenados entablas entre las cuales se establecen unas relaciones para manejar los datos de una forma

8http://pandas.pydata.org9http://scikit-learn.org/stable/

10http://www.numpy.org

Page 58: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

42CAPÍTULO 3. SOLUCIÓN ADOPTADA PARA LA RESOLUCIÓN DEL PROBLEMA

eficiente y segura. SQLite incluyen transacciones de base de datos atómicas, consistenciade base de datos, aislamiento, y durabilidad (ACID)), triggers y la mayor parte de lasconsultas complejas del lenguaje de programación SQL.

El código fuente de SQLite es de código abierto, es decir, el código fuente se puede descargary está accesible.

El lenguaje de programación Python incluye soporte para SQLite de forma nativa (desde suversión 2.5) y también se encuentra soportado por el framework Django.

Se ha utilizado SQLite, por su facilidad de uso y rápidez de puesta en funcionamiento parapoder así desarrollar un prototipo de aplicación Web de forma rápida y sencilla para poderdemostrar todo el potencial de la respuesta en tiempo real del Sistema de Recomendación.Únicamente se utiliza esta base de datos para almacenar los datos necesarios para el correctofuncionamiento de la aplicación Web, puesto que si se utilizase una base de datos de este tipopara almacenar los datos del sistema de recomendación, esto penalizaría mucho los tiemposde respuesta, puesto que SQLite hace un uso intensivo del disco.

3.5.7. ZeroMQ

ZeroMQ11 es una librería de colas de mensajes que permite la comunicación entreprocesos a través de sockets en la capa de transporte, permitiendo así la comunicacióndistribuida de aplicaciones.

Para poder utilizar la librería de ZeroMQ desde Python, es necesaria la instalación de unbinding (PyZMQ12).

Se ha utilizado ZeroMQ para la comunicación entre la interfaz Web y el proceso encargadodel Sistema de Recomendación en Tiempo Real. De esta forma no sería necesario que elproceso del Sistema de Recomendación y la interfaz Web se alberguen en el mismo servidor.

11http://zeromq.org12http://zeromq.org/bindings:python

Page 59: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

Capítulo 4

Implementación del Sistema deRecomendación en Tiempo Real

4.1. Introducción

En este capítulo se detallará el proceso de implementación de los procedimientos quecomponen el Sistema de Recomendación en Tiempo Real.

4.2. Procedimientos

Para llevar a cabo el Sistema de Recomendación Incremental, se ha optado por eldesarrollo de un conjunto de procedimientos/tareas cada uno de los cuales será encargadode ejecutar cada una de las tareas que conforman el funcionamiento del Sistema deRecomendación.

Se han desarrollado dichos procedimientos mediante scripts de Python y dichos procedi-mientos son independientes entre sí.

4.2.1. Obtención de datos de entrada

Se trata de un procedimiento offline. Este procedimiento se encarga de la ob-tención/selección de datos históricos para entrenamiento y validación del modelo derecomendación.

Este paso es fundamental en el proceso, puesto que la calidad del Sistema de Recomendaciónfinal depende de la selección del conjunto de datos de entrenamiento, así como de la validezde los mismos.

Para entrenar correctamente el modelo del Sistema de Recomendación, es necesario disponerde una cantidad suficiente de datos válidos que permitan la correcta construcción del mismo.

43

Page 60: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

44CAPÍTULO 4. IMPLEMENTACIÓN DEL SISTEMA DE RECOMENDACIÓN EN TIEMPO REAL

En este paso se seleccionarán dos conjuntos de datos a partir de los datos de puntuacionesde los distintos usuarios de la aplicación, que se encuentran recogidos en el fichero deratings.dat[3.4]: uno para el entrenamiento del modelo y otro para la validación delmismo, aplicando para obtenerlos la técnica de validación cruzada, que consiste en realizarvarias divisiones del conjunto de datos en los correspondientes conjuntos de entrenamientoy validación, de tal modo que en cada una de las divisiones, el conjunto de validación esdistinto. Aplicando esta técnica en la obtención de los conjuntos de entrada, se está evitandosobreentrenar el modelo así como evaluar la variabilidad del conjunto de datos de entradajunto con la confiabilidad del modelo entrenado con dichos datos.

Figura 4.1: Validación Cruzada, Diagrama representativo para k=4 [Img11a].

Al igual que en los experimentos llevados a cabo por Luo et al. [LXZ12], se escogerá el 75%del conjunto de datos de puntuaciones para entrenamiento del modelo y el 25% para lavalidación del mismo.

Del mismo modo, una vez obtenido el correspondiente conjunto de datos de entrenamiento,se dividirá en dos subconjuntos, el 10% de los datos servirán para entrenar el modeloen el procedimiento batch y el 90% restante servirá para entrenar/validar el modelo derecomendación incremental.

Este procedimiento es el primero que se ejecuta y únicamente se ejecutará una vez, antes deproceder a entrenar el modelo, que sería el siguiente paso.

4.2.2. Entrenamiento del modelo

Se trata de un procedimiento offline. Este procedimiento será el encargado de construirel modelo aplicando el algoritmo RMF Secuencialmente Independiente [3.3.1.1] sobre elconjunto de datos de entrenamiento, validando los resultados del mismo contra el conjuntode datos de validación obtenido en el paso previo [4.2.1].

Al igual que en el paso previo, se aplican los mismos parámetros que los obtenidos durantelos experimentos llevados a cabo por Luo et al. [LXZ12] para conseguir que el algoritmo

Page 61: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

4.2. PROCEDIMIENTOS 45

converja: un parámetro de regularización λ = 0,02, una tasa de aprendizaje η = 0,0007 yteniendo en cuenta f = 20 factores.

A continuación se procede a explicar en detalle el Diagrama de Flujo mostrado en la Figura[4.2]

1. El primer paso es obtener el conjunto de datos de puntuaciones de entrenamientocorrespondiente a la fase batch y el conjunto de datos de puntuaciones de validación, yconvertirlos a las correspondientes matrices de puntuaciones Rtrain y Rtest con las quetrabajará el algoritmo.

2. El siguiente paso es obtener P y Q que inicialmente serán dos matrices aleatorias deorden (m× f) y (n× f) respectivamente, siendo m el número de usuarios del sistemay n el número de ítems del sistema. Los valores aleatorios iniciales corresponderán auna distribución uniforme de rangos [−0,02, 0,02]

3. A continuación se procede a entrenar al algoritmo hasta que converja. Para ello, paracada una de las iteraciones se actualizan los valores correspondientes de P y Q paracada puntuación rui del conjunto de entrenamiento.

p(K)u = ckp(0)u + A′, A′ = η

1− cK

K(1− c)

K−1∑k=0

(ru,k − p(0)u q(0)k )q

(0)k

q(H)i = chq

(0)i +B′, B′ = η

1− cH

H(1− c)

H−1∑h=0

(rh,i − p(0)h q(0)i )p

(0)h

(4.1)

4. Para cada iteración se mide la precisión del algoritmo. En este caso se mide la precisiónmidiendo el error cuadrático medio RMSE:

RMSE =√ ∑

u,i∈V(rui− ˆrui)/|V | (4.2)

Siendo V el conjunto de datos de validación

5. Una vez obtenida la precisión del algoritmo, se comprueba si dicha precisión superaun determinado umbral, y de ser así se considerará que el algoritmo ha convergido ypor lo tanto se habrá conseguido entrenar satisfactoriamente el modelo. La condiciónde parada que se ha tenido en cuenta para este caso es RMSE < 0,003

Durante esta fase se cachearán en memoria cada uno de los resultados obtenidos para Py Q en cada una de las iteraciones del algoritmo y se almacenarán de forma persistente,serializando las correspondientes matrices P y Q de cada iteración y volcándolas a unfichero, como medida de seguridad.

Al igual que el procedimiento anterior, este procedimiento únicamente se ejecutará una vez,antes de proceder a entrenar el modelo de forma incremental, que sería el siguiente paso.

Page 62: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

46CAPÍTULO 4. IMPLEMENTACIÓN DEL SISTEMA DE RECOMENDACIÓN EN TIEMPO REAL

Figura 4.2: Diagrama de flujo: Entrenamiento offline del modelo

Page 63: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

4.2. PROCEDIMIENTOS 47

4.2.3. Sistema de Recomendación Incremental

Se trata de un procedimiento online. Este procedimiento será el encargado de dada unanueva puntuación sobre un ítem por un usuario, reajustar el modelo de forma incrementaly proporcionar una nueva recomendación al usuario.

4.2.3.1. Actualización Incremental del Modelo

Tal y como se muestra en la Figura 4.3, cuando llegue al sistema una nueva pun-tuación rui realizada por un usuario u sobre un ítem i, el procedimiento se encargará deactualizar cada una de las etapas cacheadas en memoria por el procedimiento anterior [4.2.2.]

Figura 4.3: Diagrama de flujo: Actualización incremental del modelo (online)

Page 64: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

48CAPÍTULO 4. IMPLEMENTACIÓN DEL SISTEMA DE RECOMENDACIÓN EN TIEMPO REAL

Para cada usuario u y item k ∈ R(u), k 6= i:

Se actualiza incrementalmente pu y qk usando (3.10), (3.11) y (3.12)

Para cada item i y usuario h ∈ R(i), h 6= u:

Se actualiza incrementalmente qi y uh usando (3.13), (3.14) y (3.15)

Una vez actualizado correctamente el modelo, dicho procedimiento también se encargará dealmacenar, de forma persistente, la nueva puntuación rui.

4.2.3.2. Recomendaciones en Tiempo Real

Del mismo modo, este proceso también será el encargado de recomendar al usuario unconjunto de 10 películas como máximo que el usuario no haya puntuado todavía.

Figura 4.4: Diagrama de flujo: Recomendaciones en Tiempo Real (online)

Page 65: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

4.3. ARQUITECTURA DEL SISTEMA DE RECOMENDACIÓN EN TIEMPO REAL 49

Tal y como se observa en la Figura 4.4, dado un usuario u, el procedimiento se encargade obtener el conjunto de puntuaciones ya realizadas por el usuario u (R(u)) para evitarrecomendar al usuario películas que haya puntuado, y obteniendo las matrices P (u) y Q dela última época cacheada en memoria, obtener el conjunto de puntuaciones predichas por elsistema para el usuario indicado.

Rpred = P (u) ·QT (4.3)

De este modo, ordenando de mayor a menor puntuación el conjunto de puntuaciones predi-chas para el usuario, se podrá ofrecer una lista al usuario de películas recomendadas.

4.3. Arquitectura del Sistema de Recomendación enTiempo Real

Tal y como se muestra en la Figura 4.5, la arquitectura llevada a cabo para desarrollarel Sistema de Recomendación en Tiempo Real, cuenta con 3 procedimientos separadosimplementados como scripts de Python independientes.

Figura 4.5: Arquitectura Sistema de Recomendación en Tiempo Real

El procedimiento encargado de leer los datos de entrada de los ficheros users.dat, mo-vies.dat y ratings.dat, leerá dichos ficheros almacenados en algún punto del sistema

Page 66: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

50CAPÍTULO 4. IMPLEMENTACIÓN DEL SISTEMA DE RECOMENDACIÓN EN TIEMPO REAL

de ficheros y del mismo modo, almacenará los ficheros correspondientes a los datos deentrenamiento (offline/ online) y de validación en algún punto del sistema de ficheros delservidor. Este script se lanzará manualmente.

A continuación, se lanzará igualmente a mano, el procedimiento encargado del entrena-miento del modelo offline, que leerá los ficheros generados por el procedimiento anterior, yse encargará de entrenar las matrices P y Q que componen el modelo en cada una de lasépocas de entrenamiento y de ponerlas a disposición en la memoria del servidor.

Por último, el procedimiento encargado del entrenamiento incremental del modelo, accederáa dichas matrices dispuestas en la memoria del servidor, y se encargará de actualizarlasde forma incremental cada vez que un usuario u realice una nueva puntuación r sobre undeterminado ítem i. Para recibir nuevas puntuaciones, este procedimiento escucha peticionesde actualización vía socket TCP en un determinado puerto del servidor.

Igualmente este procedimiento escucha peticiones para elaborar listas de recomendación deítems para un usuario dado y dichas peticiones también serán atendidas vía socket TCP enun puerto del servidor.

Page 67: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

Capítulo 5

Implementación de la aplicación Web

5.1. Introducción

A continuación se realizará una descripción detallada del proceso de implementaciónde la aplicación Web que utilizará el usuario para visualizar sus puntuaciones, realizarnuevas puntuaciones y obtener recomendaciones personalizadas basadas en sus puntuacionesanteriores.

En primer lugar, se describirán las funcionalidades que implementa la aplicación Web.

A continuación se identificarán las distintas entidades necesarias para el correcto alma-cenamiento de la información, así como la representación del modelo de datos utilizado,que permite el almacenamiento persistente de información necesaria para el correctofuncionamiento del Sistema de Recomendación.

Una vez definido el modelo de datos, se describirá la lógica de negocio aplicada, así como larepresentación del diseño en vistas de la aplicación.

Por último se realizará una descripción general de la interfaz de usuario, mostrando el diseñoestructurado que se ha adoptado durante el diseño de la interfaz gráfica de la aplicación Web.

5.2. Funcionalidades de la Aplicación Web

En este apartado se describen las funcionalidades que implementará la aplicación Web.

En primer lugar se describen las funcionalidades que proporciona la aplicación en cuestiónde gestión y administración de usuarios.

DAR DE ALTA A USUARIO: Se permitirá dar de alta a nuevos usuarios en laaplicación. Para ello se pedirá a los nuevos usuarios que indiquen un nombre de usuarioy una contraseña. Tras la comprobación de los datos proporcionados por el usuario,se almacenará dicha información en base de datos para el control de autenticación de

51

Page 68: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

52 CAPÍTULO 5. IMPLEMENTACIÓN DE LA APLICACIÓN WEB

usuarios.

INICIAR SESIÓN: Se permitirá a los usuarios registrados en la aplicación el accesoa la misma, mediante un sistema de autenticación y gestión de usuarios.

Figura 5.1: Inicio de Sesión de Usuario en Aplicación Web y Detalles botones de Inicio deSesión y Registro de Nuevo Usuario en Aplicación Web

CERRAR SESIÓN: Se permitirá a los usuarios registrados en la aplicación y quehayan iniciado sesión en la misma, la finalización de la sesión y salida de la aplicación.

Figura 5.2: Detalle botón de Cierre de Sesión de Usuario en Aplicación Web

ADMINISTRACIÓN DE USUARIOS: Desde el panel de Administración deUsuarios del framework Django, se permitirá al usuario administrador gestionar a losdistintos usuarios: Añadir, modificar o eliminar un usuario.

Page 69: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

5.2. FUNCIONALIDADES DE LA APLICACIÓN WEB 53

Figura 5.3: Administración de Usuarios en Aplicación Web

A continuación se describen las funcionalidades que proporciona la aplicación a los distintosusuarios, estén registrados o no en la misma.

ULTIMAS PELÍCULAS PUNTUADAS: En la pantalla de inicio de la aplicaciónse permitirá visualizar un listado que mostrará las últimas películas puntuadas porlos distintos usuarios del sistema.

Figura 5.4: Visualización Listado Últimas Películas Valoradas

Page 70: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

54 CAPÍTULO 5. IMPLEMENTACIÓN DE LA APLICACIÓN WEB

LISTADO DE PELÍCULAS: Se permitirá visualizar un listado que mostrará todaslas películas disponibles en el sistema en orden alfabético.

Figura 5.5: Visualización Listado Películas

BÚSQUEDA DE PELÍCULAS: Se permitirá buscar películas determinadas queatiendan a una determinada cadena de búsqueda introducida por un usuario.

Figura 5.6: Búsqueda en Listado de Películas

Page 71: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

5.2. FUNCIONALIDADES DE LA APLICACIÓN WEB 55

ADMINISTRACIÓN DE PELÍCULAS: Desde el panel de Administración deUsuarios del framework Django, se permitirá al usuario administrador gestionar lasdistintas películas: Añadir, modificar o eliminar una película.

Figura 5.7: Administración de Películas en Aplicación Web

LISTADO DE PUNTUACIONES: Dada una película, se permitirá acceder al lis-tado de las distintas puntuaciones de los usuarios. En este caso, únicamente se disponede información acerca de la puntuación dada por un usuario, pero sería útil ampliar lainformación de esta pantalla con los distintos usuarios otorgados por los usuarios, encaso de que los hubiera.

Figura 5.8: Listado de Puntuaciones

Page 72: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

56 CAPÍTULO 5. IMPLEMENTACIÓN DE LA APLICACIÓN WEB

ADMINISTRACIÓN DE PUNTUACIONES: Desde el panel de Administraciónde Usuarios del framework Django, se permitirá al usuario administrador gestionar lasdistintas puntuaciones: Añadir, modificar o eliminar una puntuación.

Figura 5.9: Administración de Puntuaciones en Aplicación Web

A continuación se describen el resto de las funcionalidades que proporciona la aplicación alos distintos usuarios registrados en la misma.

LISTADO DE PUNTUACIONES DEL USUARIO: Dado un usuario registra-do, se le permitirá acceder al listado de las distintas películas que haya puntuado.En el listado se mostrará para cada película, la puntuación otorgada por dicho usuario.

Figura 5.10: Listado de Puntuaciones de Usuario

Page 73: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

5.2. FUNCIONALIDADES DE LA APLICACIÓN WEB 57

PUNTUAR UNA PELÍCULA: Se permitirá a un usuario registrado puntuar unapelícula que todavía no haya puntuado. Igualmente, en esta pantalla, se muestra alusuario la puntuación predicha para él por el sistema de recomendación.

Figura 5.11: Puntuar una película

Una vez puntuada la película, se mostrará al usuario la puntuación otorgada a dichapelícula.

Figura 5.12: Detalle de Película puntuada por un usuario

LISTA DE PELÍCULAS RECOMENDADAS: Esta es la funcionalidad más im-portante de la aplicación. Se permitirá a un usuario registrado, obtener una lista depelículas recomendadas que dependerá de la lista de películas anteriormente puntuadaspor el usuario.

Page 74: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

58 CAPÍTULO 5. IMPLEMENTACIÓN DE LA APLICACIÓN WEB

Figura 5.13: Lista de Películas Recomendadas

5.3. Diseño del modelo de datos

Para el diseño de la capa de persistencia de la aplicación Web, se han tenido en cuentalas entidades lógicas necesarias para el correcto almacenamiento de la información.

En la Figura 5.14, se muestra el esquema relacional que describe con detalle el diseño de labase de datos de la aplicación Web:

A continuación se describen las principales entidades lógicas de la aplicación Web:

USUARIO: Almacena la información asociada a los usuarios registrados en laaplicación. Un usuario vendrá definido por un identificador único de usuario (id)que lo identifica unívocamente en la base de datos y una contraseña. Igualmente, sealmacenará para cada usuario el género (F o M ), la edad del usuario (véase Tabla3.3), la ocupación (véase Tabla 3.4), si el usuario se encuentra activo, si se trata de unusuario administrador, y la fecha en la que se logueó por última vez en la aplicaciónWeb.

PELÍCULA: Almacena la información asociada a una película. Una película vendrádefinida por un identificador único de película (id) junto con el nombre de la película,el año de estreno de dicha película junto con el póster de la misma (si se dispone de

Page 75: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

5.4. DISEÑO DE LA LÓGICA DE NEGOCIO DE LA APLICACIÓN 59

dicha información).

PUNTUACIÓN: Almacena la información correspondiente a una puntuaciónrealizada por un usuario sobre una determinada película, que vendrá dada por unidentificador con el cual se identifica unívocamente en la base de datos (id), por unadetermina valoración (entre 1 y 5) y una fecha de publicación. Una puntuación seencontrará asociada de forma inequívoca con un único usuario (user_id) y con unaúnica película (film_id).

Figura 5.14: Diagrama relacional del modelo de datos

5.4. Diseño de la lógica de negocio de la aplicación

Puesto que la capa lógica de negocio de la aplicación viene dada por el patrón de diseñoMVC definido por el framework utilizado (Django), en este apartado se hablará de las vistasque componen la aplicación, puesto que son las encargadas de gestionar la lógica de negociode la misma.

Una vista es una simple función de Python que toma como argumento una petición Web ydevuelve una respuesta Web, incluyendo en sí misma toda la lógica necesaria para retornar

Page 76: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

60 CAPÍTULO 5. IMPLEMENTACIÓN DE LA APLICACIÓN WEB

dicha respuesta.

En la Figura [5.15] se muestra el diagrama de vistas de la aplicación en el que se muestragráficamente la iteración entre vistas, así como la iteración entre cada vista con la base dedatos correspondiente.

Las principales vistas que componen la capa lógica de la aplicación son:

registration(request): Vista que gestiona el registro de un usuario. Dicha vistarecibe los datos del registro de un usuario a través de un formulario, y tras validar quelos datos recibidos son correctos y comprobar que no existe un usuario registrado en laaplicación con el mismo id introducido, esta vista se encarga de almacenar los datosdel usuario en la base de datos correspondiente (Tabla User [5.3]) proporcionándolede este modo el acceso a vistas restringidas de la aplicación.

login(request): Vista que gestiona la autenticación de un usuario. Dicha vista recibelos datos de autenticación del usuario (id y password) a través de un formulario,y tras validar que los datos introducidos son correctos, se encargará de permitir elacceso al usuario a ciertas vistas a las que únicamente se puede acceder si el usuariose encuentra registrado en la aplicación (Tabla User [5.3]).

review_list(request): Vista que permite visualizar una lista con las últimaspelículas puntuadas por los distintos usuarios de la aplicación (Tabla Review [5.3]).

review_detail(request, review_id): Vista que permite obtener los detalles deuna determinada puntuación: valoración, usuario que realizó la valoración, fecha devaloración (Tabla Review [5.3]).

add_review(request, user_id, film_id, rating): Vista restringida. Vista quepermite a un usuario añadir una nueva valoración sobre un ítem dado. Dicha vistase encarga de comunicarse con el proceso que gestiona el Sistema de Recomendaciónpara actualizar el modelo con la nueva puntuación (Tabla Review [5.3]).

film_list(request): Vista que permite visualizar una lista de las películas disponiblesen la aplicación. (Tabla Film [5.3]).

film_detail(request, film_detail, [user_id]): Vista que permite obtener losdetalles de una determinada película: título, fecha de estreno, valoraciones de losusuarios, formulario para permitir dar una nueva valoración al usuario, etc. (TablaFilm [5.3]). Si el usuario está autenticado, esta vista también devuelve una probabi-lidad de puntuación sobre la película al usuario, ya que dicha vista también es capaz

Page 77: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

5.4. DISEÑO DE LA LÓGICA DE NEGOCIO DE LA APLICACIÓN 61

Figura 5.15: Diagrama de vistas

Page 78: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

62 CAPÍTULO 5. IMPLEMENTACIÓN DE LA APLICACIÓN WEB

de comunicarse con el proceso encargado del Sistema de Recomendación.

user_review_list(request, user_id): Vista restringida. Vista que permite obtenerla lista de puntuaciones realizadas por un usuario determinado (Tabla Review [5.3]).

user_recommendation_list(request, user_id): Vista restringida. Vista quepermite obtener una lista de películas recomendadas para un usuario dado. Esta vistaes capaz de comunicarse con el proceso responsable del Sistema de Recomendación.

5.5. Diseño de la interfaz de usuario

La interfaz gráfica de la aplicación estará formada por las diversas plantillas HTMLque componen la arquitectura MVC empleada. El sistema de plantillas en el que se basa elframework utilizado permite separar la parte dinámica de la página Web del código estático.Se tienen, por tanto, un conjunto de páginas Web dinámicas implementadas con HTML yJavascript.

Figura 5.16: Diseño interfaz web

El diseño de la interfaz es uno de los elementos clave de la realización del aplicación Web,puesto que es el medio a través del cual los usuarios pueden comunicarse con el programa.Por ello se ha decidido que la interfaz sea sencilla e intuitiva para facilitar en la medida delo posible la interacción del usuario con la misma.

Page 79: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

5.5. DISEÑO DE LA INTERFAZ DE USUARIO 63

Tal y como se observa en la Figura 5.16, en la que se muestra el diseño que se ha adoptadodurante el diseño de la interfaz, se pueden diferenciar claramente dos partes: la cabecera yel cuerpo.

Si el usuario se encuentra autenticado, en la parte superior derecha de la cabecera siemprese mostrará el botón de “Cierre de sesión” en todas las vistas de la aplicación Web, paraque el usuario pueda finalizar la sesión en cualquier momento durante la navegación, juntocon su nombre de usuario. Por el contrario, si el usuario no se encuentra autenticado, semostrarán botones para que el usuario pueda autenticarse o loguearse en cualquier momento.

En la cabecera, también se permitirá navegar entre las diferentes vistas a través de un menúde enlaces sencillo e intuitivo para el usuario.

Por último, destacar que en la zona del cuerpo, se mostrará el contenido de la aplicación. Enesta zona se representarán los distintos contenidos que ofrecen las distintas vistas al usuario:Lista de películas, lista de recomendaciones, detalles de película, detalles de puntuaciones,etc.

Todo el texto contenido en las vistas que forman la aplicación Web estará escrito en ingléso o en términos técnicos comprensibles en dicha lengua.

Page 80: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

64 CAPÍTULO 5. IMPLEMENTACIÓN DE LA APLICACIÓN WEB

Page 81: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

Capítulo 6

Resultados

6.1. Introducción

En este capítulo se incluye el plan de pruebas llevado a cabo para la valoración de losresultados obtenidos.

6.2. Resultados obtenidos

El plan de pruebas ha consistido en la reproducción de los resultados obtenidos por Luoet al. en [LXZ12], a fin de reafirmar el correcto funcionamiento del algoritmo incremental.Se comprueba que efectivamente el algoritmo converge con la configuración indicada y parael conjunto de datos dado, y se comprueba que el algoritmo es capaz de aprender de formaincremental a partir de las nuevas puntuaciones de los distintos usuarios.

Se ha integrado el algoritmo con un prototipo de aplicación real, para comprobar la correctaintegración de una aplicación de estas características con los usuarios finales de la aplicación.

Para evaluar el correcto funcionamiento de la aplicación, se han seguido los mismos pasosseguidos por Luo et al. en [LXZ12]. Se ha partido del mismo conjunto de datos de entrada[3.4], formado por un millón de puntuaciones anónimas, con valoraciones entre 1 y 5, sobreaproximadamente 3900 películas realizadas por 6040 usuarios recogidas en MovieLens enel año 2000, siendo la densidad de la matriz de puntuaciones del 4.25%, sobre el que seha aplicado la técnica de Validación Cruzada en 5 fases, con la ayuda de la libreríaScikit-learn[3.5.4].

Este primer paso es muy importante, porque si no se realiza correctamente la división de losdatos en los correspondientes conjuntos de entrenamiento y validación, sin solapamientos,puede dar lugar a la no convergencia del algoritmo.

65

Page 82: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

66 CAPÍTULO 6. RESULTADOS

6.2.1. Resultados Entrenamiento Algoritmo Batch

Una vez realizada correctamente la división del conjunto de datos de entrada en loscorrespondientes conjuntos de entrenamiento y validación, destinando un 75% del conjuntode datos de puntuaciones para entrenamiento del modelo y un 25% para la validacióndel mismo, se divide de nuevo el conjunto de datos de entrenamiento en dos conjun-tos: entrenamiento del modelo batch, al que se destina un 10% del conjunto de datosde entrenamiento, y entrenamiento del modelo incremental, al que se destina el 90% restante.

Para proceder a entrenar el modelo batch, se inicializan con valores aleatorios en el rango[−0,02, 0,02] de una distribución aleatoria, los valores de las matrices de características P yQ.

Al igual que Luo et al., se establecen un parámetro de regularización λ = 0,02, una tasa deaprendizaje η = 0,0007 y se tienen en cuenta f = 20 factores.

En nuestros experimentos se ha tenido en cuenta como condición de parada del algoritmode entrenamiento un RMSE < 0,003.Si se tiene en cuenta el conjunto entero de entrenamiento, es decir, el 75% del conjuntode los datos de entrada, finalmente el algoritmo converge, en una media de 295 etapas deentrenamiento y ofreciendo un rendimiento medio RMSE = 0,8518

Párametros Épocas hasta convergencia RMSEλ = 0,02η = 0,0007f = 20

295 0.8518

Cuadro 6.1: Rendimiento algoritmo SI-RMF con 75% de los datos de entrada.

Si se tiene en cuenta el conjunto de entrenamiento batch, es decir, el 10% del 75% delconjunto de los datos de entrada, el algoritmo converge, en una media de 280 etapas deentrenamiento, pero esta vez ofreciendo un rendimiento medio RMSE = 1,12.

Párametros Épocas hasta convergencia RMSEλ = 0,02η = 0,0007f = 20

280 1.12

Cuadro 6.2: Rendimiento algoritmo SI-RMF con 10% de los datos de entrenamiento batch.

Page 83: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

6.2. RESULTADOS OBTENIDOS 67

Figura 6.1: Evolución rendimiento RMSE algoritmo SI-RMF (75% datos de entrada)

Figura 6.2: Evolución rendimiento RMSE algoritmo SI-RMF (10% datos de entrenamiento)

Page 84: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

68 CAPÍTULO 6. RESULTADOS

6.2.2. Resultados Entrenamiento Algoritmo Incremental

Una vez entrenado el modelo batch, el entrenamiento del modelo incremental se realiza conel 90% de los datos de entrenamiento restantes, computando la tasa RMSE del modelocon cada nuevo dato de entrenamiento que llega al sistema.

Al igual que en el trabajo llevado a cabo por Luo et al. se observa que el algoritmoincremental gradualmente mejora el rendimiento obtenido por el modelo batch.

Figura 6.3: Evolución Rendimiento algoritmo RMF Incremental

Como se observa en la Figura [6.3], en su conjunto, las puntuaciones nuevas de los usuariosdel sistema mejoran gradualmente el rendimiento, a medida que llegan nuevas puntuacionesal sistema, pero también se observan picos. Estos picos en el aprendizaje del algoritmo seobservan cuando llegan datos al sistema de nuevos usuarios, en los que se refleja claramenteel problema de Cold Start que afecta al algoritmo.

Como se observa en la Figura [6.4], el tiempo de actualización incremental del algoritmo, esdependiente de cada usuario, y de su historia. Este tiempo depende del número de ítemsque haya valorado el usuario en el pasado, y a su vez, depende del número de puntuacionesque haya recibido cada uno de estos ítems en el pasado.

Page 85: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

6.2. RESULTADOS OBTENIDOS 69

(a) Tiempo actualización (1) (b) Tiempo actualización (2)

(c) Tiempo actualización (3) (d) Tiempo actualización (4)

(e) Tiempo actualización (5) (f) Tiempo actualización (6)

Figura 6.4: Tiempos Medios Actualización del Algoritmo Incremental

Sin embargo, como se observa en la Figura [6.5], los tiempos de respuesta del algoritmo delSistema de Recomendación, se mantienen constantes, con una media de tiempo inferior a

Page 86: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

70 CAPÍTULO 6. RESULTADOS

los 20ms, lo que permite que el algoritmo sea utilizado en un Sistema de Recomendación enTiempo Real. Los picos mostrados en la Figura [6.5], coinciden con la obtención del conjuntode películas puntuadas con anterioridad por el usuario dado, las cuales se obtienen paraevitar recomendar películas que ya hayan sido valoradas por un usuario con anterioridad.

Figura 6.5: Tiempo de Respuesta del Sistema de Recomendación

Page 87: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

Capítulo 7

Gestión del proyecto

7.1. Introducción

En este capítulo se muestra la planificación del proyecto, describiendo las tareas a seguirasí como el tiempo planificado para cada una de ellas. Se añade también un presupuestoorientativo del coste de la aplicación.

7.2. Planificación del proyecto

El ciclo de vida que ha seguido el proyecto es el de modelo en cascada. Este modelose basa en la premisa de que antes de empezar una nueva etapa se deberá esperar a lafinalización de la etapa inmediatamente anterior.

El proyecto se inició a principios de Marzo de 2016 y ha concluido a mediados de Julio de2016. Las etapas en las que se han encontrado mayores dificultades han sido en las tareasde investigación de los actuales algoritmos implementados en sistemas de recomendación, lainvestigación de algoritmos incrementales, y una vez encontrado y seleccionado un algoritmoválido, la mayor dificultad se ha encontrado en la implementación del algoritmo incrementaljunto con la replicación de resultados.

En la Figura 7.1 se muestra el diagrama de Gantt que muestra la planificación del proyecto.En dicho diagrama se muestra la división de tareas, la duración de cada tarea, así como lasfechas de inicio y fin planteadas para cada una de ellas.

Como se observa en el diagrama de Gantt, el proyecto se ha estructurado en 8 tareas prin-cipales:

INVESTIGACIÓN: En esta etapa se realiza todo el trabajo necesario de investigaciónpara poder plasmar el Estado del Arte de los actuales sistemas de Recomendación,así como la investigación sobre algoritmos incrementales existentes que puedan serutilizados en este tipo de sistemas en un entorno online.

DISEÑO ALGORITMO INCREMENTAL: Una vez encontrado el algoritmo incremen-tal, en esta etapa se plantea qué se va a desarrollar y cómo. Durante esta etapa se realiza

71

Page 88: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

72 CAPÍTULO 7. GESTIÓN DEL PROYECTO

Figura 7.1: Diagrama de Gantt del proyecto

Page 89: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

7.3. ANÁLISIS DE COSTES 73

el estudio de las diversas tecnologías con las que se puede llevar a cabo el proyecto. Enesta etapa del proyecto también se diseñan las funcionalidades de los distintos proce-dimientos que será necesario implementar para el correcto desarrollo del algoritmo, asícomo la selección de los datos para entrenar al mismo.

IMPLEMENTACIÓN ALGORITMO: Una vez definidos claramente los procedimien-tos, se procede a la programación de las distintas fases del algoritmo. Posteriormentese alojarán dichos procedimientos en un servidor que sea capaz de recibir nuevos datosque permitan la actualización incremental del algoritmo y que sea capaz de respondera peticiones de cálculo de recomendaciones en tiempo real. En esta etapa se procederáal entrenamiento del algoritmo del sistema de recomendación y una vez completada laimplementación de cada una de las etapas de las que se compone el algoritmo incremen-tal y una vez entrenado el algoritmo, se procederá a la toma de medidas y verificaciónde los resultados esperados, puesto que se intentarán replicar los resultados obtenidosen el trabajo de investigación llevado a cabo por los autores del algoritmo seleccionado.

DISEÑO PLATAFORMA WEB: Una vez que se ha entrenado con éxito el algoritmoseleccionado y una vez verificados sus resultados, en esta etapa se toman decisiones dediseño del prototipo de la plataforma Web. Se diseña el modelo lógico de la aplicaciónjunto con el modelo relacional de datos.

IMPLEMENTACIÓN PROTOTIPO PLATAFORMA WEB: Una vez diseñado el pro-totipo de plataforma Web, se llevará a cabo su implementación.

COMUNICACIÓN ENTRE LA PLATAFORMA WEB Y SISTEMA DE RECOMEN-DACIÓN: Una vez implementados tanto el Sistema de Recomendación como la apli-cación, se procederá al diseño y desarrollo del protocolo de comunicación entre ambos.

PRUEBAS DE INTEGRACIÓN: En esta fase se llevarán a cabo las pruebas de in-tegración de la aplicación Web y el sistema de recomendación en Tiempo Real, queverificarán el correcto funcionamiento de la aplicación al completo.

DOCUMENTACIÓN: Por último, se realizará la documentación del proyecto para de-jar constancia del progreso del mismo, así como para disponer de un manual de consultapara los próximos desarrolladores que tengan que retomar el trabajo desarrollado eneste proyecto.

7.3. Análisis de costes

En este apartado se detallarán los costes asociados al proyecto, divididos en dos secciones:costes personal y costes materiales.

7.3.1. Costes de personal

Los costes de personal incluyen los honorarios de un Ingeniero Analista de Softwareencargado de la investigación, diseño y desarrollo del proyecto, y cuyo desempeño en elproyecto a consistido en 4 horas diarias, y los honorarios de un Ingeniero de Verificación

Page 90: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

74 CAPÍTULO 7. GESTIÓN DEL PROYECTO

encargado de las pruebas del proyecto, y cuyo desempeño en el proyecto a consistidoigualmente en 4 horas diarias.

La tabla 7.1 muestra el número de días trabajados, junto con el coste total del personal.

Tarea / Número de horas IAS IVDefinición objetivos globales del proyecto 10hInvestigaciónInvestigación Algoritmos Sistemas de Recomendación 60hInvestigación Algoritmos Incrementales 20hDiseño algoritmo incrementalAnalisis de las tecnologías 8hDefinición etapas algoritmo incremental 8hImplementación algoritmo incrementalInstalación Python y Librerías 2hDesarrollo algoritmo incremental 40hEntrenamiento y pruebas 60h 60hDiseño Plataforma WebAnalisis tecnologias plataforma web 8hDiseño modelo lógico de la aplicación 8hDiseño modelo relacional 4hDiseño interfaz usuario 4hImplementación plataforma WebInstalación Django 1hConfiguración entorno Django 1hImplementación 60hComunicación Aplicación Web y Sistema de Re-comendaciónInstalación ZeroMQ 1hImplementación protocolo de comunicaciones en ladoservidor

4h

Implementación protocolo de comunicaciones en ladocliente

4h

Pruebas protocolo de comunicaciones 8hIntegraciónMonitorización y resultados 20hPruebas de Integración 20hDocumentaciónDocumentación del proyecto 80hTOTAL 101 días 22 días

Cuadro 7.1: Costes de personal

Page 91: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

7.3. ANÁLISIS DE COSTES 75

IAS IVDías totales 101 días 22 díasHoras/día 4 horas/día 4 horas/díaTotal horas 404 horas 88 horase/hora 24,28 e/hora 24,28 e/horaTotal personal en e 9809,12 e 2136,64 eTOTAL 11945,76 e

Cuadro 7.2: Costes Personal (Cont.)

7.3.2. Costes materiales

Los costes de material incluyen:

Un ordenador portátil con sistema Unix, valorado aproximadamente en 1250 euros.

Conexión a Internet durante la realización del proyecto. Principalmente ha sido nece-saria para acceso a recursos de investigación y documentación. Está valorada aproxi-madamente en 45 euros al mes, que multiplicados por los meses de trabajo (3 meses)hacen un total de 135 euros.

En la tabla 7.3 se detallan los costes materiales.

Concepto ImporteOrdenador portátil 1250 eConexión Intenet (3 meses) 126 eTotal coste en e 1385,00 e

Cuadro 7.3: Costes Material

7.3.3. Presupuesto total

El presupuesto total para la realización de este proyecto está formado por los costes dematerial y de personal presentados anteriormente. Como se observa en la tabla 7.4, el totalasciende a 13330,76 e

Concepto ImporteCostes personal 11945,76 eCostes materiales 1385,00 eTOTAL 13330,76 e

Cuadro 7.4: Costes Totales

Page 92: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

76 CAPÍTULO 7. GESTIÓN DEL PROYECTO

Page 93: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

Capítulo 8

Conclusiones y trabajos futuros

8.1. Introducción

En este capítulo, se exponen las reflexiones acerca de la consecución de los objetivosiniciales del proyecto y los resultados obtenidos. Finalmente, se esbozan líneas de trabajofuturas para la posible ampliación del proyecto.

8.2. Conclusiones

Una vez analizados los resultados obtenidos, se puede afirmar que se ha conseguidoel objetivo principal del proyecto, dotando al usuario final de una plataforma capaz degestionar recomendaciones en tiempo real en función de sus preferencias.

Gracias a dicha plataforma, el usuario podrá realizar nuevas puntuaciones y obtenernuevas recomendaciones en tiempo real, en base a las puntuaciones previas realizadas en laplataforma.

Además, la plataforma Web desarrollada permite a los usuarios observar las últimaspuntuaciones realizadas por otros usuarios de la plataforma, obtener una valoración perso-nalizada sobre un determinado ítem e incluso realizar búsquedas de ítems en los que pudieraestar interesado de forma sencilla e intuitiva, por lo que se se ha conseguido desarrollaruna interfaz amigable y con un alto grado de aceptación entre los usuarios finales de la misma.

Pero la conclusión más relevante tras observar los resultados obtenidos, es que seha conseguido desarrollar, en un escenario que simula un entorno de aplicación real,un sistema de recomendación, que se actualiza de forma totalmente incremental con lasnuevas informaciones aportadas por los usuarios, y que permite obtener recomendacionesactualizadas con las últimas preferencias de los usuarios, en tiempo real. Gracias a este tipode sistema, no sería necesario recalcular por completo el algoritmo en horas de baja cargadel sistema, ni los usuarios tendrían que esperar a que se realice dicho recálculo del modelopara obtener recomendaciones más precisas adaptadas a sus comportamientos más recientes.

77

Page 94: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

78 CAPÍTULO 8. CONCLUSIONES Y TRABAJOS FUTUROS

8.3. Trabajos futuros

Por supuesto, durante la realización de dicho proyecto se han ido trazando posibleslineas futuras que podrían tenerse en cuenta para la mejora de lo hasta ahora desarrolladoy para posibles ampliaciones en proyectos futuros:

En cuanto a la plataforma Web, sería interesante:

Permitir a los usuarios enriquecer la calidad de sus aportaciones, permitiendo a losdistintos usuarios insertar comentarios o críticas textuales que añadan valor a sus va-loraciones, pudiendo ser vistas por el resto de usuarios. Mediante análisis de contenidode estas críticas/comentarios se podría dotar de mayor información al perfil de cadausuario, como por ejemplo, estado de ánimo, y se podrían extraer características de losítems valoradas o penalizadas por el usuario, etc.

Permitir al usuario Administrador monitorizar en tiempo real y de forma gráfica elestado del Sistema de Recomendación, tiempo de respuesta, evolución del rendimientodel sistema de recomendación (medida delRMSE), visualizar la curva ROC del sistema(Receiver Operating Characteristics) que compare los verdaderos-positivos frente a losfalsos-positivos.

Incorporar al sistema administrador Métricas de Experiencia de usuario, puesto queestas métricas también permiten analizar la calidad del Sistema de Recomendación ytomar las medidas oportunas.

• Cobertura: Calculando el porcentaje de productos para los que el sistema derecomendación es capaz de realizar una predicción.

• Diversidad: Midiendo cómo de diferentes son los ítems que el sistema es capazde recomendar. Para ello es necesario medir la similaridad entre los ítems del topten de la lista de recomendación. Bajas puntuaciones de esta medida, indican altadiversidad. Se podría utilizar dicha métrica para diversificar y mejorar la calidadde las recomendaciones del Sistema de Recomendación.

• Casualidad: Midiendo cómo afecta al sistema las puntuaciones de los ítems máspopulares de la lista global. Si afectan demasiado, se estará disminuyendo la ca-sualidad del sistema, y por tanto la eficiencia del Sistema de Recomendación noserá buena, si únicamente es capaz de recomendar los ítems más populares y noes capaz de devolver resultados inesperados.

En cuanto a los procedimientos encargados de el Sistema de Recomendación:

La parte crítica de un sistema de recomendación incremental de estas características esla necesidad de cachear los resultados intermedios del entrenamiento, para cada una delas épocas de entrenamiento, lo que conduce a una alta complejidad de almacenamientoen memoria. En nuestro caso, al igual que en los experimentos llevados a cabo por Luoet al., se han almacenado estos resultados intermedios en fichero, y se han cargadoen memoria los datos correspondientes, a medida que se han ido necesitando. En unentorno real, este mecanismo no es ni eficiente ni seguro.

Page 95: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

8.3. TRABAJOS FUTUROS 79

• Es necesario un procedimiento que con cierta frecuencia realice un backup de losdatos disponibles en la memoria a disco, pero aún así el sistema no está protegidofrente a perdidas de datos si se produce una caída del sistema. Una caída delsistema podrían provocar una perdida irreversible de los datos, si el procedimientotodavía no ha hecho un backup a disco de los datos calculados en memoria.

• Es necesario un sistema de replicación de los datos almacenado en los discos paraevitar pérdida de información en caso de fallo del sistema de discos, por lo quesería muy aconsejable para este tipo de sistemas el poder usar Bases de Datosque permitan replicación y que permitan manejar grandes volúmenes de datos.

En cuanto al algoritmo utilizado en el Sistema de Recomendación:

El entrenamiento batch del algoritmo se puede paralelizar convenientemente, puestoque los parámetros no tienen ninguna interdependencia entre ellos en cada una de lasépocas de entrenamiento (véase [BYX14]).

Sería interesante enriquecer la monitorización y evaluación del Sistema de Recomen-dación con métricas de apoyo a la decisión, midiendo cómo de bien el sistema derecomendación ayuda a tomar buenas decisiones. Se podría mejorar el algoritmo de re-comendación asegurando siempre que los primeros ítems que se le presenten al usuariosean los que tengan mayor relevancia.

Igualmente, sería interesante que el algoritmo tuviese en cuenta con qué frecuencia elusuario piensa que algo es realmente bueno y el sistema no lo cree, teniendo en cuentagrandes desviaciones en el error individual de los usuarios.

Este algoritmo, al ser un algoritmo de filtrado colaborativo, padece el famoso problemade Cold Start. Para hacer frente a este problema, se podría combinar este tipo dealgoritmo con otros sistemas de recomendación basados en score, como por ejemploPage Rank

Page 96: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

80 CAPÍTULO 8. CONCLUSIONES Y TRABAJOS FUTUROS

Page 97: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

Glosario de términos

C

Cold Start Problema común en los Sistemas de Recomendación causado por la falta deinformación inicial de usuarios y/o productos, puesto que un Sistema de Reco-mendación sólo es capaz de realizar buenas recomendaciones si se dispone de unacantidad de datos históricos suficientes., p. 2.

F

Folding In Es una técnica de proyección en el ámbito de la Descomposición Singular de Va-lores (SVD). Es una técnica que permite realizar recomendaciones y prediccionesa usuarios que inicialmente, no fueron considerados durante el entrenamiento delmodelo durante el cual se realiza la factorización de la matriz de puntuaciones,p. 21.

I

Información explícita Datos proporcionados directamente por el usuario — por Ej.: unapuntuación, p. 11.

Información implícita Datos inferidos a partir de la actividad del usuario — por Ej.:número de visitas a un sitio Web, número de clicks, etc., p. 11.

M

MAE Mean Absolute Error: Es la correlación entre la valoración dada por un usuario(R) y la predición (P): |P −R|

MAE =

∑ratings

|P−R|

#ratings, p. 18.

R

Rank Metric Métrica que es capaz de medir cómo de bien un algoritmo de recomendaciónpone en orden los distintos ítems que va a recomendar al usuario, con respecto alas preferencias del usuario., p. 18.

Recomendación Seleccionar un conjunto de items para un usuario (basándose en predic-ciones), p. 19.

81

Page 98: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

82 GLOSARIO DE TÉRMINOS

S

Serendipia La serendipia es la capacidad del sistema para realizar recomendaciones de pro-ductos inesperados, es decir, productos distintos de los que el usuario ha valoradopreviamente., p. 18.

V

Validación Cruzada Técnica de validación de modelos probabilísticos que consiste en rea-lizar varias divisiones del conjunto de datos de entrada al modelo en conjuntosdisjuntos de entrenamiento y validación, de tal modo que en cada una de lasdivisiones, el conjunto de validación es distinto. Aplicando esta técnica en la ob-tención de los conjuntos de entrada, se evita sobreentrenar el modelo, así comoevaluar la variabilidad del conjunto de datos de entrada junto con la confiabilidaddel modelo entrenado con dichos datos., p. 41.

Page 99: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

Bibliografía

[Bur00] Robin Burke. Knowledge-based recommender systems. In ENCYCLOPEDIA OFLIBRARY AND INFORMATION SYSTEMS, page 2000. Marcel Dekker, 2000.

[BYX14] Xiangrui Meng Burak Yavuz and Reynold Xin. Scalable collabora-tive filtering with apache spark mllib. Disponible en la siguienteurl: https://databricks.com/blog/2014/07/23/scalable-collaborative-filtering-with-spark-mllib.html, 2014.

[ERK11] Michael D. Ekstrand, John T. Riedl, and Joseph A. Konstan. Collaborativefiltering recommender systems. Found. Trends Hum.-Comput. Interact., 4(2):81–173, February 2011.

[Fun09] Simon Funk. Netflix update: Try this at home. Disponible en la siguiente url:http://sifter.org/~simon/journal/20061211.html, 2009.

[Img93] Ilustracion: Krakatoa chronicle. Disponible en la siguiente url: https://www.w3.org/Conferences/WWW4/Papers/93/screen.big.gif, 1993.

[Img00] Ilustración: Sistema de recomendación entree restaurant. Disponibleen la siguiente url: https://www.researchgate.net/profile/Peter_Mandl3/publication/275721689/figure/fig1/AS:281889215664128@1444219034379/Figure-1-The-Entree-Restaurant-Recommender-Initial-screen.png, 2000.

[Img11a] Ilustracion: Validación cruzada. Disponible en la siguiente url: https://en.wikipedia.org/wiki/File:K-fold_cross_validation.jpg, 2011.

[Img11b] Ilustración: Flipboard. Disponible en la siguiente url: http://www.wired.com/images_blogs/gadgetlab/2011/12/Flipboard_two_imgs.jpg, 2011.

[Img13a] Ilustración: Recomendaciones personalizadas en amazon.com. Disponibleen la siguiente url: http://www.getvero.com/wp-content/uploads/2013/02/amazon-recommendations.jpeg, 2013.

[Img13b] Ilustración: Sistema de recomendación de netflix. Disponible en la siguienteurl: http://www.blogcdn.com/www.tuaw.com/media/2013/05/netflix-ios-app-update.jpg, 2013.

[Img14] Ilustración: Tripadvisor. Disponible en la siguiente url: http://www.tecnohotelnews.com/wp-content/uploads/2014/10/Pantallazo.jpg, 2014.

83

Page 100: ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INFORMÁTICOSoa.upm.es/43311/1/TFM_PALOMA_PEREZ_YAGUE.pdf · universidad politÉcnica de madrid escuela tÉcnica superior de ingenieros informÁticos

84 BIBLIOGRAFÍA

[Img16] Ilustración: Movielens. Disponible en la siguiente url: https://movielens.org/images/site/main-screen.png, 2016.

[KBV09] Yehuda Koren, Robert Bell, and Chris Volinsky. Matrix factorization techniquesfor recommender systems. Computer, 42(8):30–37, August 2009.

[KR12] Joseph A. Konstan and John Riedl. Deconstructing recommender systems. Dis-ponible en la siguiente url: http://spectrum.ieee.org/computing/software/deconstructing-recommender-systems, 2012.

[LXZ12] Xin Luo, Yunni Xia, and Qingsheng Zhu. Incremental collaborative filteringrecommender based on regularized matrix factorization. Know.-Based Syst.,27:271–280, March 2012.

[Mar16] Luis Martín. Recomendación basada en contenido: conoce a fon-do tu catálogo para convertir mejor. Disponible en la siguienteurl: http://www.brainsins.com/es/blog/recomendacion-basada-en-contenido-conoce-a-fondo-tu-catalogo-para-convertir-mejor/2912,2016.

[Men16] Ingeniería Informática Mengisoft. Sistemas de recomendación. Disponibleen la siguiente url: http://www.mengisoft.com/investigacion-desarrollo/sistemas-de-recomendacion, 2016.

[Net09] Inc Netflix. Netflix prize. Disponible en la siguiente url: http://netflixprize.com, 2009.

[Par15] Denis Parra. Filtrado basado en contenido. Disponible en la siguien-te url: http://dparra.sitios.ing.uc.cl/classes/recsys-2015-2/clase6_contentBased_1.html#1, 2015.

[RM99] Manuel Rojas Matas, Angela y Torralbo Rodriguez. Aproximaciones de bajorango de una matriz. Suma 30, pages 47–51, February 1999.

[RST08] Steffen Rendle and Lars Schmidt-Thieme. Online-updating regularized kernelmatrix factorization models for large-scale recommender systems. In Proceedingsof the 2008 ACM Conference on Recommender Systems, RecSys ’08, pages 251–258, New York, NY, USA, 2008. ACM.

[SKKR02] Badrul Sarwar, George Karypis, Joseph Konstan, and John Riedl. Incrementalsingular value decomposition algorithms for highly scalable recommender sys-tems. In Proceedings of the 5th International Conference in Computers and In-formation Technology, 2002.

[Tec16] Commons Technology. The importance of recommender systems. Disponible enla siguiente url: http://www.commons.fm/?p=25017, 2016.

[TPNT09] Gábor Takács, István Pilászy, Bottyán Németh, and Domonkos Tikk. Scalablecollaborative filtering approaches for large recommender systems. J. Mach. Learn.Res., 10:623–656, June 2009.