Universidad Nacional del Centro de la Provincia de Buenos Aires Facultad de Ciencias Exactas
Recomendación de lugares para redes sociales basadas en
ubicación
Trabajo final de la carrera Ingeniería en Sistemas
Pablo Barrenechea
Sebastián Claudio Troccoli
Director de Tesis
Daniela Godoy
Índice de Contenido
Capítulo 1: Introducción 9
1.1. Motivación 9
1.2. Problema a resolver 11
1.3. Trabajo Propuesto 12
1.4. Organización del Trabajo 13
Capítulo 2: Marco Teórico 14
2.1. Redes sociales basadas en ubicación 14
2.2. Sistemas de recomendación 15
2.2.1. Sistemas de recomendación en RSBU 16
2.3. Filtrado Colaborativo 17
2.3.1. Filtrado Colaborativo basado en memoria 18
2.3.1.1. Algoritmos de Similitud 21
2.3.1.1.1. Correlación de Pearson 21
2.3.1.1.2. Similitud del coseno 22
2.3.2. Filtrado Colaborativo basado en modelos 23
2.3.2.1. Factorización de Matrices 23
2.3.2.2. Modelos de Factorización de matrices 26
2.3.2.2.1. Descomposición de valores singulares 26 2.3.2.2.2. Descomposición de valores singulares con feedback implícito 27
2.5. Evaluación de Sistemas de Recomendación 28
2.5.1. Métodos de decisión 28
2.5.1.1. Precision 29
2.5.1.2. Recall / Exhaustividad 29
2.5.1.3. Valor-F (F1 Score o F-Measure en inglés) 30
2.5.2.1. Root Mean Square Error (RMSE) 30
2.5.2.2. Mean Absolute Error(MAE) 31
2.6. Análisis de Sentimiento 31
2.7. TF IDF 32
2.8. Antecedentes 33
2.8.1. Síntesis de trabajos realizados anteriormente 33 2.8.2. Ventajas y desventajas de los trabajos estudiados 34
Capítulo 3: Enfoque propuesto 36
3.1. Visión preliminar 36
3.2. Representación inicial de la información 37
3.3. Solución propuesta 39
3.4 Casos de estudio 41
3.4.1. Variables a analizar 42
Capítulo 4: Diseño e implementación 43
4.1. Investigación de Frameworks para filtrado colaborativo 43
4.1.1. Crab 43
4.1.2. Racoon 44
4.1.3. Django-Recommends 44
4.1.4. Apache Mahout 45
4.1.4.1. Características de Mahout 45
4.1.4.2. Arquitectura de Mahout 46
4.1.5. Criterio de selección del framework 47
4.1.5.1. Comparativa basada en atributos de calidad 48
4.1.5.2. Comparativa basada en características 48
4.1.5.3. Comparativa basada en factores externos 48
4.2. Arquitectura del sistema 49
4.2.1. Modelo de datos 51
4.2.3. Constructor de Preferencias 55
4.2.3.1. Detección de preferencias personales 57
4.2.3.2. Uso del Sentimiento como preferencia 59
4.2.3.3. Detección de expertos locales 61
4.2.4. Evaluador de Recomendaciones 64
4.2.4.1. Recomendador Base 66
4.2.4.2. Comparación de árboles de usuarios 66
4.2.4.3. Ratings Inferidos 68
4.2.4.4. Factorización de Matrices 71
4.2.4.5. Evaluación de resultados 73
4.2.5. Servicio de Recomendación 73
Capítulo 5: Pruebas y resultados 76
5.1. Conjunto de datos 76
5.2. Configuración del conjunto de datos 78
5.3. Experimentos realizados 79
5.3.1. Experimentos realizados utilizando número de checkins 81
5.3.1.1 Resultados 81
5.3.1.2 Análisis de los Resultados Obtenidos 81
5.3.2 Experimentos realizados utilizando análisis de sentimiento 83
5.3.2.1 Resultados 83
5.3.2.2 Análisis de los Resultados Obtenidos 84
5.4. Comparación de ambas series de experimentos 85
Capítulo 6: Conclusiones 89
6.1. Conclusiones 89
6.2. Trabajos Futuros 89
Índice de Figuras
Capítulo 1: Introducción
1.1 Checkins Foursquare entre Agosto 2011 y Marzo 2015 10
Capítulo 2: Marco Teórico
2.1 Diferentes capas de una RSBU 14
2.2 Sistema de recomendación no personalizado 16
2.3 Sistema de recomendacion User-User 19
2.4 Cálculo de preferencia de un ítem i para un usuario u en un sistema User-User 19
2.5 Sistema de recomendación Item-Item 20
2.6 Cálculo de preferencias para un usuario u en un sistema Item-Item 21
2.7 Ejemplo de modelos de factor latente en LBSN 27
Capítulo 3: Enfoque propuesto
3.1 Escenario de uso del sistema de recomendación 37
3.2 Entidades presentes en un sistema de RSBU 38
3.3 Arquitectura general de la solución propuesta 40
Capítulo 4: Diseño e implementación
4.1 Arquitectura general de Apache Mahout 47
4.2 Vista global de la arquitectura del Sistema de Recomendación 50
4.3 Modelo de datos relacional utilizado 52
4.4 Arquitectura del sistema. Componente Refinador de Información 53
4.5 Arquitectura del sistema. Constructor de preferencias 56
4.6 Generación de las preferencias del usuario 57
4.7 Sentimiento de los distintos tips 60
4.8 Identificación de expertos locales 63
4.9 Funcionamiento de Recommender Evaluator 64
4.11 Funcionamiento de Inferred Ratings 68
4.12 Algoritmo PACS 69
4.13 Elementos en la factorización de matrices 72
4.14 Servicio de recomendación 74
4.15 Respuesta del servicio de recomendación 75
Capítulo 5: Pruebas y resultados
5.1 Demografía de visitas 77
5.2 Comparación de tips, lugares y usuarios antes y después de optimizarlos 79
5.3 RMSE y MAE para los experimentos en Los Ángeles y Nueva York 82
5.4 F1 - Score para los experimentos en las ciudades de Los Ángeles y Nueva York 82
5.5 RMSE y MAE para los experimentos con sentimiento en Los Ángeles y Nueva York 84
5.6
F1 - Score para los experimentos en las ciudades de Los Ángeles y Nueva York 85
5.7 Mejores recomendadores para RMSE y MAE para cada medida de ranking 86
Índice de Ecuaciones
Capítulo 2: Marco Teórico
2.1 Coeficiente de correlación de Pearson 22
2.2 Similitud del coseno entre x e y 23
2.3 Cálculo de la matriz R 24
2.4 Modelo de Factorización de matrices básico 24
2.5 Minimización del error cuadrado regularizado 25
2.6 Tendencia usuario-ítem 26
2.7 Factorización de Matrices básico con desviaciones 26
2.8 Dimensión de una matriz SVD 26
2.9 Vector de preferencias de un usuario u 27
2.10 Normalización del vector de preferencias 27
2.11 Vector de atributos de un usuario u 27
2.12 Calificación con SVD ++ 28
2.13 Cálculo de la Precisión 29
2.14 Cálculo de la Exhaustividad o Recall 29
2.15 Cálculo del Valor-F o F-Measure 30
2.16 Cálculo de Root Mean Square Error 31
2.17
Cálculo de Mean Absolute Error 31
2.18 Cálculo de Frecuencia de Términos (TF) 32
2.19 Cálculo de Frecuencia Inversa de Términos (IDF) 33
Capítulo 4: Diseño e implementación
4.1 Preferencia de un usuario por una categoría 58
4.2 Preferencia de un usuario por una categoría 61
4.3 Función signo 61
4.5 Calidad de los lugares visitados por un usuario (1) y calidad del lugar (2) 63
4.6 Valor mínimo de preferencia para un nivel 67
4.7 Entropía para un nivel L 67
4.8 Similitud entre dos árboles 67
Índice de Tablas
Capítulo 4: Diseño e implementación
4.1 Comparativa de herramientas soporte realizada por atributos de calidad 48
4.2 Comparativa de herramientas soporte realizada por características de las mismas 48
4.3 Comparativa de herramientas soporte realizada por factores externos 49
Capítulo 5: Pruebas y resultados
5.1 Distribución de los distintos datos en las ciudades de Los Ángeles y Nueva York 77
5.2 Distribución de los distintos datos en las ciudades de Los Ángeles y Nueva York 78
5.3 Resultados obtenidos usando el nro de checkins como medida de ranking 81
Capítulo 1: Introducción
“Se definen a las Redes Sociales como un conjunto bien delimitado de actores -individuos, grupos, organizaciones, comunidades, sociedades globales, etc.- vinculados unos a otros a través de una relación o un conjunto de relaciones sociales, las cuales pueden ser diversas, como amistades, relaciones laborales, afectivas, entre otras. [1] “
Los avances tecnológicos recientes relacionados con la determinación de posiciones de los objetos en el mundo han creado una mejora notable en los servicios ofrecidos por las redes sociales, permitiendo a los usuarios compartir su ubicación y relacionarla con el contenido que desean publicar. Llamamos a estas redes sociales: Redes sociales basadas en ubicación (En inglés Locations Based Social Networks).
1.1. Motivación
En los últimos años, las redes sociales han experimentado un gran incremento tanto en cantidad de usuarios que hacen uso de ellas, como en cantidad de información que comparten.
Hoy en día no solo ayudan a conectar a distintas personas a mantener contacto con familiares a través del mundo como actualmente hace Facebook, sino que además han surgido redes sociales con propósitos especializados como es el caso de Foursquare, donde los usuarios registran visitas a lugares alrededor del mundo y a su vez recomiendan los mismos a otros miembros de la misma red.
Todo esto sucede en tiempo real y es así como mediante diferentes portales que ofertan las distintas redes sociales, en donde expresar un ideal, un sentimiento o sencillamente el estado de ánimo, se convierte una acción virtual en algo que permite la relación real con el mundo [31].
utilizadas por Foursquare, por ejemplo, en el que un usuario puede opinar sobre la visita a un lugar visitado (o checkin ) con solo un click.
Como se observa en la Figura 1.1, la cantidad de visitas registradas en Foursquare entre Agosto del 2011 y Marzo del 2015 demuestra un importante crecimiento, llegando a alcanzar la suma de 7 mil millones de checkins en un mes.
Figura 1.1 -
Checkins Foursquare entre Agosto 2011 y Marzo 2015 [2].
Debido a este incremento de información que comparten los usuarios, cada vez se hace más difícil gestionar la excesiva cantidad de información. Este supone un nuevo problema cuando nos disponemos a realizar una búsqueda sobre esa gran cantidad de información.
Los sistemas de recomendación se han ido consolidando como potentes herramientas para ayudar a reducir la sobrecarga de información a la que nos enfrentamos en los procesos de búsqueda de información. Ayudan a filtrar los ítems de información recuperados, usando distintas técnicas para identificar aquellos ítems que mejor satisfacen las preferencias o necesidades de los usuarios [3].
Dentro de los servicios que puede ofrecer una red social basada en ubicación, el servicio de recomendación de puntos de interés es una de las características más importantes. Este servicio es muy utilizado por los usuarios para encontrar lugares de interés cercanos, así como para ser asistido en sitios desconocidos. Además, le permite a las compañías publicitar anuncios en base a la presencia física de los usuarios y generar ingresos para la red social en cuestión [5].
1.2. Problema a resolver
Como se mencionó en el apartado anterior, las redes sociales son una fuente de información muy poderosa. En el caso particular de las redes sociales basadas en ubicación o RSBU, cada vez son más los lugares registrados en las mismas y por consiguiente, potenciales recomendaciones a los distintos usuarios. No obstante, el crecimiento exponencial de la información generada por las interacciones de los usuarios hace que sea necesario la clasificación.
La finalidad de este trabajo es la implementación de un sistema de recomendación híbrido que haciendo uso de la información extra que nos proveen las redes sociales basadas en ubicación, sea capaz de recomendar puntos de interés a los usuarios de una forma efectiva. Para ello utilizaremos un conjunto de datos de la Red Social Foursquare que posee información de la actividad de los usuarios en las ciudades de Los Ángeles y Nueva York.
Para lograr esto, el problema puede ser descompuesto en dos partes: 1. Modelar las preferencias del usuario usando el conjunto de datos escogido.
2. Proveer a cada usuario una lista de lugares que se adapten a sus preferencias personales.
1) Modelar las preferencias del usuario
:
categoría del mismo como por ejemplo, un usuario que registre varias visitas restaurantes de comida china seguramente tenga una preferencia por ese tipo de lugares.
Haciendo uso de su historial de visitas y revisiones u opiniones otorgadas a cada lugar, analizaremos el contexto del comportamiento de los usuarios en el conjunto de datos y se modelarán sus preferencias.
2) Proveer una lista de lugares útiles
:
El objetivo de esta tarea es el de recomendar a los usuarios una lista de lugares basándose en las preferencias personales obtenidas anteriormente.
Para esto se analizarán, compararán y evaluarán diferentes técnicas utilizadas en los sistemas de recomendación, como lo son la factorización de matrices y el filtrado colaborativo.
1.3. Trabajo Propuesto
La propuesta que realizamos, está basada en el estudio de Sistemas de
Recomendación existentes y estudios realizados acerca de Redes Sociales Basadas en Ubicación y cómo explotar sus características.
De las ventajas y desventajas de cada Sistema de Recomendación estudiado, surge la iniciativa de crear un Sistema de Recomendación que sea capaz de:
● Explotar la información extraída de los tips de los usuarios haciendo uso de análisis de sentimiento.
● Recomendar lugares basándose en la ubicación de un usuario, haciendo uso de la recomendación asociada a expertos locales.
● Encontrar estrategias de recomendación relacionadas con el arranque en frío. ● Utilizar la información de las categorías de los lugares para modelar las preferencias
de los usuarios y encontrar usuarios con gustos similares.
● Realizar recomendaciones mediante distintas técnicas existentes: Filtrado colaborativo basado en usuarios y Factorización de Matrices.
Ninguno de los trabajos anteriormente estudiados, posee todas estas características juntas. Es por eso que añadiendo estas características incrementalmente se podrá crear un Sistema de Recomendación que resuelva el problema contemplando una porción mayor del contexto.
1.4. Organización del Trabajo
En esta sección se detalla la estructura general del presente trabajo, brindando una breve descripción de los temas que se abordan en cada capítulo.
En el Capítulo 2, denominado Marco Teórico, se presentan los fundamentos teóricos utilizados en esta investigación así como también trabajos existentes utilizados como punto de referencia. Dentro de los fundamentos teóricos, se describen y explican las principales definiciones y conceptos relacionados a las Redes sociales basadas en ubicación y los Sistemas de Recomendación.
Una vez presentados dichos conceptos teóricos, abordaremos a lo largo del Capítulo 3 detalles respecto de las investigaciones realizadas, el diseño propuesto y los componentes que conforman la implementación del Sistema de Recomendación.
El capítulo 4 presenta el diseño e implementación elegido para llevar a cabo la solución final al problema. El mismo presenta un detalle de herramientas analizadas para llevar a cabo la implementación junto con la presentación de los distintos componentes de arquitectura y sus responsabilidades.
El Capítulo 5 estará dedicado al desarrollo de los distintos experimentos utilizados para la evaluación del Sistema de Recomendación. Tomando como entrada un conjunto de datos obtenido de la red social Foursquare y distintas configuraciones del Sistema de Recomendación, se evaluarán las salidas con distintas métricas que serán de utilidad para medir la calidad de los resultados obtenidos.
Capítulo 2: Marco Teórico
El presente capítulo tiene como objetivo describir los principales conceptos y definiciones que le darán contexto al trabajo.
2.1. Redes sociales basadas en ubicación
Cuando hablamos de redes sociales basadas en ubicación, de aquí en adelante RSBU, no solo estamos hablando de añadir la ubicación a una red social existente para que los usuarios de la misma puedan compartir información acerca de su ubicación, sino también de una nueva estructura social compuesta por personas unidas por la interdependencia derivada de su ubicación en el mundo físico, y los contenidos que comparten, tales como fotos, videos y textos.
Figura 2.1:
Diferentes capas de una RSBU [8].
La figura 2.1 nos da una vista global de las diferentes redes contenidas en una típica RSBU, en la que el agregado de las ubicaciones crea nuevas relaciones y correlaciones.
La capa geográfica contiene información acerca del historial de checkins de los usuarios que ocurren dentro de una línea de tiempo, mientras que la capa social contiene información de relación entre los usuarios, y por último, la capa de contenido consiste en los tips de los usuarios publicados en cada lugar [7].
2.2. Sistemas de recomendación
Los sistemas de recomendación (SR), son diseñados para recomendar ítems a usuarios en varias situaciones como los sitios de compra online, citas o redes sociales. Dado que la cantidad de opciones es muy amplia, los SR han sido indispensables para ayudar a los usuarios a filtrar items que no les resultan de interés, y reducir el tiempo en la toma de decisiones [9].
La cantidad y el tipo de datos disponibles sobre los distintos componentes del SR, como usuarios, objetos y preferencias a menudo dictan cómo se calcula la relevancia y la utilidad y el impacto en última instancia en la selección del algoritmo de recomendación.
Por ejemplo, cuando se escasea de datos sobre un usuario, un sistema de recomendación no personalizado puede ser el algoritmo indicado. Un sistema de recomendación no personalizado se basará en los datos de un total de ítems populares entre todos los usuarios y generará una lista con los N ítems más populares dentro de SR (Figura 2.2).
Figura 2.2:
Sistema de recomendación no personalizado [24].
Como es de apreciarse, estos algoritmos no proveen recomendaciones personalizadas o diferentes a los distintos usuarios. Tampoco están basadas en el pasado o las preferencias de los mismos. En cambio, el SR asume que un ítem que es del agrado de la mayoría de usuarios será del agrado para un usuario genérico.
En resumen, un SR no personalizado proporciona una interfaz simple y eficaz para proporcionar recomendaciones a los usuarios cuando se carecen de las preferencias anteriores o los datos que tenemos son insuficientes. Este problema es conocido como cold start o arranque en frío.
Los sistemas de recomendación en RSBU han comenzado hace unos pocos años, y los ítems principalmente recomendados son lugares, etiquetas y amigos:
● La recomendación de lugares apunta a recomendar un conjunto de lugares a los usuarios, basandose los intereses del mismo.
Este tipo de recomendación, ha tenido un rol muy importante en las RSBU ya que no solo asiste a los usuarios para visitar nuevos lugares, sino que también ayuda a las RSBU a generar ingresos ofreciendo servicios inteligentes de publicidades basadas en la ubicación.
● La recomendación de etiquetas tiene como fin, enriquecer el significado semántico de los lugares para facilitar el desarrollo de sistemas de recomendación utilizando esas etiquetas. Por lo general, se utilizan los patrones temporales para recomendar etiquetas. Por ejemplo, un bar puede ser visitado frecuentemente entre las 11:00 pm y la 1:00 am, mientras que un restaurante puede tener más visitas entre las 12:00 pm y las 6:00pm. Por lo tanto, podrían asignarles etiquetas diferentes acorde a la franja horaria en la que son mayormente visitados.
● La recomendación de amigos analiza los patrones similares (Por ejemplo: hábitos de compra, intereses comunes, trayectorias de viaje, etc.) entre un usuario objetivo y otros usuarios, y luego recomienda usuarios con mayor cantidad de patrones similares. En el presente trabajo, nos dedicaremos a plantear soluciones relacionadas solamente con la recomendación de lugares.
2.3. Filtrado Colaborativo
En los últimos años, un algoritmo conocido como Filtrado Colaborativo se ha vuelto una constante dentro de las implementaciones de los SR.
Esta técnica analiza las relaciones entre los usuarios y las interdependencias entre los productos para identificar nuevas asociaciones entre usuarios e ítems.
● Ítems:objetos que son recomendados al usuario, tales como productos, noticias, etc.. Estos pueden ser caracterizados por su respectiva metadata que incluye títulos, tags, o keywords. Por ejemplo, las noticias pueden ser clasificadas por categoría, las canciones por artistas y género musical y las peliculas por genero y director. En nuestro caso, aplicaría a los lugares y la metadata estaría relacionada con la categoría del lugar, la ubicación, etc.
● Usuarios: Son las personas a las cuales van dirigidas las recomendaciones. Generalmente necesitan de asistencia para elegir un ítem dentro del contexto de una aplicación (como lo pueden ser Netflix o Foursquare) y utilizan este tipo de sistemas para estar mejor informados y así, hipotéticamente, tomar la decisión más acertada. Un modelo de usuario puede construirse incrementalmente con el tiempo, con el fin de mejorar las recomendaciones para un usuario en particular. Para esto sus acciones e interacciones son almacenadas dentro del SR, generando como resultado un perfil del mismo.
● Preferencias/Calificaciones: Las preferencias se pueden interpretar como la opinión de un usuario con respecto a un ítem. Generalmente se representan mediante ratings, es decir, el usuario puntúa el ítem en cuestión. Se podría decir entonces que el rating es un tipo de preferencia explícita que representa la relación entre un usuario y un ítem perteneciente al SR.
Los sistemas de filtrado colaborativo pueden ser divididos en dos, los basados en memoria y los basados en modelo.
2.3.1. Filtrado Colaborativo basado en memoria
Este método utiliza las evaluaciones explícitas de los usuarios respecto a los ítems para generar recomendaciones. El objetivo es relacionar a un usuario y sus preferencias, comparándolo con otros usuarios del sistema y para construir grupos de usuarios similares. Este grupo es llamado vecindario y es utilizado para generar recomendaciones basadas en gustos de usuarios parecidos.
diferentes usuarios en función de las preferencias del pasado que son similares con el fin de hacer predicciones sobre lo que a cada usuario le va a gustar en el futuro.
Si dos personas han evaluado muchos items de manera similar en el pasado, pueden ser considerados en el mismo vecindario.
Generalmente, un vecindario de usuarios similares es construido por un SR y se utiliza para ayudar a recomendar artículos.
A diferencia de los SR no personalizados, los SR de filtrado colaborativo User-User son específicos para cada usuario y se adaptarán a medida que los mismos ingresen nuevos ratings/preferencias [9]
.
Figura 2.3:
Sistema de recomendacion User-User [24].
Figura 2.4:
Cálculo de preferencia de un ítem i para un usuario u en un sistema User-User
[24]
Dentro de la categoría de los SR de filtrado colaborativo también existen los denominados SR Item-Item. En estos sistemas, las similitudes entre los distintos ítems evaluados por el usuario son utilizadas para realizar las recomendaciones. En lugar de construir un vecindario y recomendar basándose en usuarios similares, las correlaciones se realizan entre las preferencias de los ítems que ha calificado el usuario.
Por ejemplo, si quisiéramos recomendar un nuevo items al usuario u
, se recolectan
todos los ítems por los que utiene preferencia y son comparados con todos los ítems i usando un algoritmo de similitud. La premisa es que a use le recomendarán ítems que son similares a los que u
ya había calificado positivamente en el pasado.
Figura 2.5:
Sistema de recomendación Item-Item [24]
Pseudocódigo para estimar preferencias de usuario en sistemas Item-Item
Figura 2.6:
Cálculo de preferencias para un usuario u en un sistema Item-Item[24]
En los algoritmos de clasificación previamente mencionados existe un patrón en común: el cálculo de la similitud entre los diferentes ítems o usuarios. Para esto existen diferentes algoritmos, de los cuales se pueden mencionar los siguientes: Correlación de Pearson, Coeficiente de Tanimoto y Similitud del Coseno, entre otros.
2.3.1.1.1. Correlación de Pearson
El coeficiente de correlación de Pearson determina la similitud entre dos usuarios o ítems midiendo la tendencia de las dos series de preferencias que se mueven juntas de una manera proporcional y lineal. Se trata de encontrar la desviación para cada uno de los usuarios o ítems respecto a su calificación promedio al tiempo que también se identifican dependencias lineales entre dos usuarios o ítems.
Se calcula de la siguiente manera:
Ecuación 2.1:
Coeficiente de correlación de Pearson
donde w
y u son los usuarios o ítems de los cuales se quiere saber la relación.
Interpretación
El valor del índice de correlación varía en el intervalo [-1,1]:
● Si r = 1, existe una correlación positiva perfecta. El índice indica una dependencia total entre las dos variables denominada relación directa: cuando una de ellas aumenta, la otra también lo hace en proporción constante.
● Si 0 < r < 1, existe una correlación positiva.
● Si r = 0, no existe relación lineal. Pero esto no necesariamente implica que las variables son independientes: pueden existir todavía relaciones no lineales entre las dos variables.
● Si r = -1, existe una correlación negativa perfecta. El índice indica una dependencia total entre las dos variables llamada relación inversa: cuando una de ellas aumenta, la otra disminuye en proporción constante.
Si bien la correlación de Pearson es una buena medida para relacionar distintos elementos también existen casos en los que no es tan efectiva. Por ejemplo, no tiene en cuenta el número de preferencias que se solapan. Supongamos dos usuarios que evaluaron 10 ítems de manera similar (suponiendo la evaluación en valores numéricos pero no idénticos), estos usuarios tendrán menos similitud que dos usuarios que solo evaluaron dos ítems pero de manera casi idéntica [26].
2.3.1.1.2. Similitud del coseno
Otro de los métodos más populares para encontrar similitudes dentro del marco del filtrado colaborativo es la función de similitud del coseno. La misma consiste en la medida de similitud entre dos vectores derivados del coseno del ángulo formado entre ellos [36].
Dentro del plano del trabajo actual, cada vector representará a un usuario del sistema y sus coordenadas, las preferencias por los distintos ítems. De este modo, cuando se quiera calcular la similitud entre dos usuarios, se calculará el coseno entre los mismos.
Por consiguiente, el enfoque que define la similitud del coseno entre dos usuarios x e y queda conformado de la siguiente manera:
Ecuación 2.2:
Similitud del coseno entre x e y [37].
2.3.2. Filtrado Colaborativo basado en modelos
Entre los algoritmos de FC basados en modelos más conocidos se encuentran las Redes Bayesianas, los modelos de clustering y modelos semánticos latentes como descomposición de valores singulares, análisis de componente principal y factorización de matrices [13].
2.3.2.1. Factorización de Matrices
La mayoría de los modelos de factorización de matrices, son basados en el modelo del factor latente. La factorización de Matrices se la conoce como la aproximación más precisa para reducir el problema de la escasez de información en los conjuntos de datos.
Las técnicas basadas en el modelo de Índice Semántico Latente y Valor Singular de descomposición usualmente son combinadas.
Valor Singular de descomposición y análisis de componente principal son técnicas bien establecidas para identificar factores latentes en el campo de recuperación de información con filtrado colaborativo. Estos métodos se han vuelto populares recientemente por combinar una buena escalabilidad con una precisión predecible. También ofrecen mucha flexibilidad modelando varias aplicaciones de la vida real.
En primer lugar, tenemos un conjunto de usuarios U, un conjunto de ítems IyRserá la matriz de tamaño U xI que contiene todos los ratings que el usuario ha asignado a los ítems. En este caso, las características latentes serían descubiertas. El objetivo es encontrar 2 matrices P ( de tamaño U x К ) y Q ( de tamaño I x К) tales que su producto se aproxime a R:
Ecuación 2.3:
Cálculo de la matriz R
De esta forma, la Factorización de Matrices modela uniendo usuarios e ítems a un espacio de factor latente conjunto de dimensionalidad f, de tal forma que las interacciones entre usuarios e ítems son modeladas como productos internos en dicho espacio.
Cada ítem I es asociado a un vector y cada usuario ues asociado con un vector .
Dado un usuario u, los elementos de miden el factor de interés que el usuario tiene en ítems que se corresponden con esos factores, otra vez, positivo o negativo.
El resultado del producto entre captura la interacción entre un usuario u y un ítem i, dicho de otra forma sería el interés general del usuario u en las características del ítem. Esta aproximación es definida como:
Ecuación 2.4:
Modelo de Factorización de matrices básico
Para aprender los vectores y , el sistema minimiza el error cuadrado regularizado en el conjunto de ratings con:
Ecuación 2.5:
Minimización del error cuadrado regularizado
Figura 2.7:
Ejemplo de modelos de factor latente en LBSN [30].
La figura 2.7 muestra un ejemplo simplificado bidimensional (f=2) de un modelo de factor latente dentro de una LBSN. Las dimensiones plasmadas en la gráfica son hipotéticas y nos muestran el espacio donde los diferentes ítems pueden ser ubicados en función de las características atracción turística o no turística y horario diurno o nocturno.
La Ecuación 2.6 intenta capturar la interacción entre usuarios e ítems que producen diferentes calificaciones. Sin embargo, la variación de las calificaciones observadas está ligada a los efectos de los usuarios y los ítems. Por ejemplo, el filtrado colaborativo exhibe tendencias sistemáticas de usuarios que otorgan calificaciones más altas que otros.
Por lo tanto, sería imprudente explicar el total de las calificaciones como la interacción
entre los vectores y . El sistema intentará identificar la porción de estas tendencias con la información verdadera del conjunto de datos.
Esta tendencia para cada para usuario-item será calculada como:
Ecuación 2.6:
Tendencia usuario-ítem
Añadiendo esta información a la ecuación 2.4, obtenemos:
Ecuación 2.7:
Factorización de Matrices básico con desviaciones
2.3.2.2. Modelos de Factorización de matrices
A continuación se describirán algunos de los modelos de factorización de matrices más utilizados.
2.3.2.2.1. Descomposición de valores singulares (SVD)
La DVS es una técnica para la reducción de dimensionalidad de un conjunto de datos. La clave en una DVS es encontrar un espacio de característica dimensional baja.
DVS de una matriz A (tamaño m x n) tiene la forma:
V D
(
A
)
Σ
V
S
=
TEcuación 2.8:
Dimensión de una matriz SVD
Donde, U y V son matrices ortogonales respectivamente de tamaño m x m y n x n. Σ es una matriz ortogonal singular con elementos no negativos de tamaño m x n.
Una matriz U de tamaño m x m es llamada ortogonal si es igual a una matriz identidad de m x m. Los elementos de la diagonal en Σ (σ1, σ2, σ3, …… σn), son llamados valores singulares de la matriz A. Usualmente, los valores singulares son ubicados en orden descendente dentro de Σ. Los vectores columna de U y V son llamados los vectores singulares a izquierda y derecha respectivamente [14].
2.3.2.2.2. Descomposición de valores singulares con feedback implícito (SVD ++ )
Por simplicidad, consideraremos una caso de feedback implícito booleano. N(u) denotará un conjunto de elementos para cada usuario u expresado como una preferencia implícita.
Aquí, un nuevo conjunto de factores de elementos son necesarios, donde se tiene el ítem i asociado con xi ∈ f. En consecuencia, el conjunto de preferencias que un usuario mostró por ítems en N(u) es representada por el vector:
Ecuación 2.9:
Vector de preferencias de un usuario u
Normalizar la suma es a menudo un beneficio:
Ecuación 2.10:
Normalización del vector de preferencias
Otra fuente de información es conocer atributos de los usuarios, por ejemplo, por ubicación geográfica. Otra vez, por simplicidad consideraremos atributos booleanos donde al usuario u le corresponde un conjunto de atributos A(u), que describen datos personales del mismo tales como localidad, edad, género, etc. El vector de factores A Ya ∈ f corresponde a cada atributo que describe al usuario:
Ecuación 2.11:
Vector de atributos de un usuario u
El modelo de factorización de matrices deberá integrar todas las fuentes descritas como una mejora de la representación de los intereses del usuario en la ecuación x.h, dando como resultado:
Ecuación 2.12:
2.5. Evaluación de Sistemas de Recomendación
Evaluar el rendimiento de los algoritmos de recomendación no es trivial. Primero porque diferentes algoritmos pueden ser mejores o peores dependiendo del conjunto de datos elegido. También los objetivos del sistema de recomendación pueden ser diversos. Un sistema puede diseñarse para estimar con exactitud el puntaje que daría un usuario a un elemento, mientras otro puede tener como principal objetivo el no proporcionar recomendaciones erróneas. Es decir, puede haber múltiples tipos de medidas: que las recomendaciones cubran todo el espectro de elementos del conjunto (cobertura), que no se repitan, que sean explicables, etc.. Sin embargo, el principal objetivo de un sistema de recomendación, que es la satisfacción del usuario, no es directamente cuantificable.
En cualquier caso las medidas de precisión pueden dar una primera idea de cuan bueno es el algoritmo del sistema de recomendación.
Existen dos tipos de métodos de evaluación: de decisión y estadísticos.
2.5.1. Métodos de decisión
Evalúan cómo de efectivo es un sistema de predicción ayudando al usuario a seleccionar los elementos mayor calidad, es decir con qué frecuencia el sistema de recomendación efectúa recomendaciones correctas. Para ello asumen que el proceso de predicción es binario: o el elemento recomendado agrada al usuario o no lo agrada. Sin embargo en la práctica se plantea el problema de evaluar esto. Una posible solución es la de dividir el conjunto de datos en dos conjuntos, entrenamiento y test. Se trabaja con con el conjunto de entrenamiento y posteriormente se evalúa el resultado comparando las recomendaciones proporcionadas con las del conjunto de test. Aun siendo a veces útil esta técnica, hay que tener en cuenta que los resultados dependen fuertemente del porcentaje de elementos relevantes que el usuario haya votado. La más conocida de estas métricas es la de “Precision and Recall”.
La precisión es calculada entre el número de documentos relevantes recuperados y el número de documentos recuperados. Acorde con la definición se tiene la siguiente expresión:
Ecuación 2.13:
Cálculo de la Precisión
De esta forma, cuanto más se acerque el valor de la precisión al valor nulo, mayor será el número de documentos recuperados que no se consideren relevantes. Si por el contrario, el valor de la precisión es igual a uno, se entenderá que todos los documentos recuperados son
relevantes. Esta forma de entender la precisión introduce el concepto de ruido informativo y de silencio informativo [10].
2.5.1.2. Recall / Exhaustividad
Esta métrica viene a expresar la proporción de documentos relevantes recuperados,
comparado con el total de los documentos que son relevantes existentes en la base de datos,
con total independencia de que éstos, se recuperen o no. La ecuación en este caso se
expresa como:
Ecuación 2.14:
Cálculo de la Exhaustividad o Recall
Si el resultado de esta fórmula arroja como valor 1, se tendrá la exhaustividad máxima
posible, y esto viene a indicar que se ha encontrado todo documento relevante que residía en
la base de datos, por lo tanto no se tendrá ni ruido, ni silencio informativo: siendo la
recuperación de documentos entendida como perfecta. Por el contrario en el caso que el valor
de la exhaustividad sea igual a cero, se tiene que los documentos obtenidos no poseen
2.5.1.3. Valor-F (F1 Score o F-Measure en inglés)
Al aumentar el Recall (la proporción de elementos relevantes) disminuimos la
precisión, por lo cual hay un compromiso entre ambas métricas [32]. Valor-F intenta hacer un
balance entre ambas métricas y se la define como:
Ecuación 2.15:
Cálculo del Valor-F o F-Measure
Si β es igual a uno, se le está dando la misma ponderación (o importancia) a la
Precisión que a la Exhaustividad, si β es mayor que uno la Exhaustividad será más
importante, mientras que si es menor que uno, la Precisión será más relevante [33].
2.5.2. Métodos estadísticos
Los métodos estadísticos intentan medir la desviación que existe entre los valores reales del conjunto de datos y los valores predichos por el algoritmo. Estos algoritmos son utilizados cuando lo que deseamos medir es la calidad del valor asignado en la recomendación.
Los algoritmos más utilizados son Root Mean Square Error y Mean Absolute Error.
2.5.2.1. Root Mean Square Error (RMSE)
El RMSE es frecuentemente utilizado para medir la diferencia entre los valores predichos por un modelo y los valores reales observados.
RMSE se calcula hallando la raíz cuadrada de las desviaciones cuadráticas medias entre el rating estimado para un usuario y el rating real [11].
Ecuación 2.16:
2.5.2.2. Mean Absolute Error(MAE)
MAE se obtiene calculando el promedio de la desviación absoluta entre el rating estimado para un usuario y el rating real. Expresado matemáticamente, se define como:
Ecuación 2.17:
Cálculo de Mean Absolute Error
2.6. Análisis de Sentimiento
El análisis de sentimiento es un campo de investigación en el área de minería de textos y está relacionado con el tratamiento computacional de las opiniones, sentimiento y subjetividad de los textos [17].
El análisis de sentimientos utiliza las técnicas de procesamiento de texto en lenguaje natural, análisis de texto y lingüística computacional para clasificar documentos en función de la polaridad de la opinión que expresa su autor [16].
Esta información de alto nivel puede ser utilizada en muchas aplicaciones como el análisis de comentarios de los clientes, negocios, recomendaciones personalizadas, etc.
Con la moda de las redes sociales, el análisis de sentimiento, nos trae un entendimiento más profundo acerca de las redes sociales disponibles. Micro-blogs como Twitter proveen una gran cantidad de datos, que pueden ser usados para descubrir el sentimiento colectivo respecto a diversos temas. Muchas aplicaciones pueden ser construidas para medir la tendencia en elecciones políticas, investigación de opiniones de consumo de ciertas marcas, detección de contenidos virales, etc.
2.7. TF IDF
Tf-idf, del inglés term frequency - inverse document frequency
es una medida de
pesaje comúnmente utilizada en recuperación de información y minería de texto.
Este peso es una medida estadística utilizada para evaluar la relevancia de una palabra para un documento en una colección. La importancia aumenta proporcionalmente al número de veces que una palabra aparece en el documento, pero es compensada por la frecuencia de la palabra a través de toda la colección de documentos. Las variaciones del esquema de ponderación tf-idf suelen ser utilizadas por los motores de búsqueda como una herramienta central para anotar y clasificar la relevancia de un documento dada una consulta del usuario [27].
Normalmente, el tf-idf está compuesto por dos términos donde el primero (TF) calcula la Frecuencia de Término normalizada. Esto es el número de veces que una palabra aparece en un documento, dividida por el número total de palabras en ese documento. El segundo término es la Frecuencia Inversa de Documento (IDF), computada como el logaritmo del número de documentos que se tienen en la colección dividido por el número de documentos donde aparece el término específico [27].
En resumen, tenemos que TF mide la frecuencia con que un término aparece en un documento. Como cada documento tiene una longitud diferente, es posible que un término aparezca mucho más veces en documentos largos que en documentos más cortos. Por lo tanto, el término frecuencia es a menudo dividido por la longitud del documento (es decir, el número total de términos en el documento) como una forma de normalización:
TF(t) = f(t,d) / T(d)
Ecuación 2.18:
Cálculo de Frecuencia de Términos (TF)
Donde la función f(t) cuenta la cantidad de veces que el término t aparece en un documento d y T(d) cuenta la cantidad de términos que tiene el documento d.
pero tienen poca importancia. Por lo tanto, se tiene que bajar la relevancia de términos frecuentes, mientras que se tienen que escalar los menos frecuentes. Esto se realiza mediante el siguiente cálculo:
IDF (t) = log (D / f(t) )
Ecuación 2.19:
Cálculo de Frecuencia Inversa de Terminos (IDF)
Donde D es el número total de documentos y f(t) es una función que cuenta cuantos documentos tienen el término t consigo.
2.8. Antecedentes
En esta sección, se expondrán distintos trabajos relacionados con Sistemas de Recomendación a los que se le ha dado mayor relevancia para desarrollar las soluciones propuestas en el presente trabajo. Además se realizó una síntesis de dichos trabajos, donde se expusieron sus ventajas y desventajas. Por último, se presentará una comparación entre los mismos.
2.8.1. Síntesis de trabajos realizados anteriormente
● A Sentiment-Enhanced Personalized Location Recommendation System: En este trabajo se presenta un sistema de recomendación híbrido que modela las preferencias de los usuarios combinando información extraída del historial de check-ins, los tips, que son procesados haciendo uso de técnicas de análisis de sentimiento, y las relaciones de los usuarios dentro de la red social. Para la recomendaciones de lugares se utiliza un algoritmo de Factorización de Matrices con distintas configuraciones. Por ejemplo, dentro de las distintas configuraciones, en principio se utiliza únicamente información del historial de check-ins, luego se añade análisis de sentimiento e información de los tips y por último, se hace uso de las relaciones entre los usuarios.
usuario. Para generar recomendaciones, este sistema tiene en cuenta las preferencias personales del usuario (que son obtenidas del historial de check-ins) y las opiniones sociales, que son obtenidas de los expertos locales. Es por esto que el recomendador es capaz de recomendar lugares a los usuarios que visitan una ciudad en la que jamás han estado anteriormente. El sistema precomputa y extrae información de los expertos locales de cada área para cada categoría en una ciudad utilizando el historial de todos los usuarios en dicha región y la información asociada a las categorías de los lugares. El recomendador infiere las calificaciones haciendo uso de un algoritmo de filtrado colaborativo con algoritmos de similitud propios (que comparan las categorías favoritas de los usuarios) y utilizando la información de los expertos locales en la región que se desea recomendar.
● Matrix Factorization Techniques for Recommender Systems: Dentro de los trabajos estudiados, se desea resaltar también el estudio realizado acerca de los sistemas de recomendación realizado por una de las empresas más exitosas en la actualidad, Netflix. En este trabajo se explican los conceptos teóricos de la técnica de factorización de matrices así como también los beneficios que esta posee sobre las tácticas más comunes de filtrado colaborativo como la basadas en cercanía de vecinos (como lo son el Filtrado Colaborativo User-User o Item-User).
2.8.2. Ventajas y desventajas de los trabajos estudiados
A Sentiment-Enhanced Personalized Location Recommendation System Ventajas:
En este trabajo se quiere destacar la importancia de la información de contexto añadida a la hora de realizar recomendaciones. Utilizando análisis de sentimiento, se consigue modelar información muy importante acerca de la preferencia del usuario hacia un lugar.
Desventajas
:
Dentro de los experimentos efectuados, aparece como línea base un filtrado colaborativo que no tiene información acerca de su configuración (algoritmo de similitud utilizado, basado en usuarios o items,etc.).
Location-based and Preference-Aware Recommendation Using Sparse Geo-Social Networking Data
Ventajas
:
Este sistema de recomendación contempla el lugar en el que el usuario se encuentra para recomendar lugares. El sistema de recomendación, realiza cálculo de preferencias implícitas, lo cual facilita las recomendaciones en conjuntos de datos con alto grado de esparcimiento. El algoritmo contempla una estrategia de recomendación para lugares en los cuales no se posee información del usuario gracias a una técnica que logra combinar las preferencias del usuario con la popularidad de los lugares disponibles para visitar.
Desventajas
:
No utiliza el contenido de los tips como información adicional para generar las recomendaciones.
El trabajo no contempla utilizar información de las relaciones entre los usuarios.
Matrix Factorization Techniques for Recommender Systems: Ventajas
:
Los sistemas de recomendación basados en factorización de matrices resuelven mejor el problema de la escasez de datos. Actualmente Netflix usa esta técnica para recomendar películas a usuarios.
Desventajas
:
Capítulo 3: Enfoque propuesto
En esta sección se describe una visión preliminar del escenario de aplicación real del recomendador. Consecuentemente a eso, se va a dar una vista general a la solución propuesta, sobre los trabajos pasados que se han utilizado como referencia y cuál fue la arquitectura resultante. También, se describirán brevemente cuáles fueron los experimentos realizados para luego explicarlos en detalle en capítulos posteriores.
3.1. Visión preliminar
La figura 3.1 describe un escenario de aplicación del recomendador en donde existe una aplicación móvil distribuida entre los distintos usuarios que interactúan en el marco de la red social en cuestión, y otra aplicación que almacena toda la información generada por los mismos integrantes de la red social que se utiliza luego para cálculo y la generación de sugerencias. El hecho de que la aplicación utilizada por los miembros de la red social sea móvil no es aleatorio, de hecho, uno de los principios de una red LBSN es que la misma movilidad de los usuarios afecta directamente a las recomendaciones que el sistema debe brindar. En otras palabras, es una de las claves para el funcionamiento más eficiente del sistema de recomendación debido a la facilidad de acceso a las coordenadas geográficas de un determinado usuario.
El uso de la aplicación es simple, el usuario posicionado en una determinada coordenada geográfica consulta al sistema por lugares que podrían ser de su agrado. Consecuentemente, se envian sus coordenadas a la aplicación centralizada y haciendo uso de su ubicación sumado a la información histórica de sus visitas almacenada previamente, se le recomienda sitios de interés en base a sus preferencias. Nótese que el sistema cuenta con información previamente cargada de las características, como pueden ser la ubicación geográfica o bien la categoría, de los lugares a los que concurren los distintos usuarios.
Al seleccionar una de las visitas recomendadas, puede observarse información relacionada con las críticas que han dejado otros usuarios de la red social, cantidad de visitas realizadas, información general acerca del lugar en cuestión así como también un puntaje asignado basado en estos últimos puntos para que el usuario pueda evaluar una potencial visita al mismo. En caso de que el usuario visite uno de los puntos geográficos recomendados, el mismo tendrá la posibilidad de evaluar el lugar visitado enviando una revisión del mismo e incrementar la información de dicho sitio dando lugar de esta manera a mejorar la precisión de las recomendaciones por medio de retroalimentación.
Figura 3.1:
Escenario de uso del sistema de recomendación
3.2. Representación inicial de la información
Como datos de entrada para la investigación se utilizó un conjunto de datos existente, con datos reales de la red social Foursquare. El mismo está compuesto de varios archivos en formato csv y se compone de un listado de varios usuarios, lugares y puntos de interés como también categorías y revisiones sobre estos lugares realizadas por los mismos usuarios.
Figura 3.2:
Entidades presentes en un sistema de RSBU
Como se puede observar, los usuarios se relacionan con los lugares compartiendo su ubicación geográfica registrando su visita a cualquier lugar perteneciente a la red social. Para su facilidad de uso, cada lugar cuenta consigo información acerca de las coordenadas geográficas en las que está ubicado, ciudad a la que pertenece, entre otras características. También es necesario destacar que cada vez que un usuario realiza una visita a algún sitio tiene la opción de dejar una reseña del mismo, a fin de brindar más información a otros potenciales visitantes.
Los sitios de interés, también poseen categorías que describen el tipo de lugar al que se hace referencia. Este es un atributo de mucho valor para el propósito de la recomendación, ya que refleja información directa acerca de los gustos del usuario. Resulta difícil encontrar usuarios que concurran al mismo lugar, debido a la cantidad de lugares registrados y además a la variedad de ubicaciones de los usuarios dentro de la red. Utilizando la información de las categorías se puede modelar la similitud entre los usuarios en una mayor cantidad de casos.
3.3. Solución propuesta
A continuación se mostrará a grandes rasgos cuál fue la solución propuesta para la problemática en cuestión. En principio, se tienen que satisfacer dos necesidades muy marcadas como son la recomendación de sitios de interés a usuarios finales y la efectividad de las recomendaciones de los mismos. Para el primer punto, esto significa un servicio que pueda responder a la solicitud de usuarios finales. Respecto al segundo punto, la calidad de las recomendaciones es de vital importancia, con lo cual también se tiene la necesidad de evaluar la precisión y eficacia de distintas implementaciones.
La figura 3.3 nos da una visión general que explica el funcionamiento del sistema. La entrada del sistema es la información presentada en el apartado anterior, no obstante, para que ese conjunto de datos sea funcional al propósito de la investigación, debe ser pre procesado y optimizado. Esto significa, eliminar datos que no aportan información alguna o generan ruido, como pueden ser usuarios que no registran ninguna visita, lugares que no fueron visitados, ciudades que tienen muy poca actividad (es decir, visitas de usuarios), etc., para reducir el nivel de ruido de la información. Consecuentemente, también tiene un efecto positivo en la performance del sistema, ya que al reducir el volumen de datos, menor será la cantidad de procesamiento.
El siguiente paso, es la migración del conjunto de datos de entrada a una base de datos relacional, haciendo uso de una serie de transformaciones que serán explicadas con mayor nivel de detalle en el siguiente capítulo. De momento, lo que se tiene que comprender es que partiendo de un conjunto de datos con información sin proceso alguno, existe un componente dentro de la arquitectura del sistema que aplica sucesivos procesos sobre la misma con el fin de facilitar su uso para los algoritmos de recomendación.
Todo ese proceso es realizado por un componente del sistema que se puede observar en la figura 3.3 bajo el nombre deSistema de Recomendación
. Como se ve en dicha figura, el
Como se mencionó anteriormente, las modificaciones aplicadas a la información dada serán almacenadas en una base de datos. La misma será compartida a través de todas las réplicas del Sistema de Recomendación y también por todos los demás módulos pertenecientes al sistema.
El paso siguiente a la transformación y almacenamiento de la información es la implementación de distintos algoritmos y técnicas de recomendación que serán evaluadas posteriormente, con el fin de determinar la eficacia de sus resultados.
Dentro de las técnicas implementadas, se utilizaron algoritmos como filtrado colaborativo basado en usuarios y factorización de matrices, aplicando en algunos casos mejoras o personalizaciones que se ajustaban mejor a la problemática en concreto.
En resumen, la arquitectura dispone de un componente llamado Sistema de Recomendación
, el cual tiene distintas responsabilidades:
● Pre procesar la información existente.
● Recomendar de sitios de interés para los distintos usuarios. ● Evaluar la calidad de las recomendaciones provistas.
Figura 3.3:
Adicionalmente, la figura 3.3 contiene otro componente llamado API de recomendación
. Este componente funciona como comunicación entre los usuarios finales de
la aplicación y el sistema de recomendación implementado. En otras palabras, es la manera que tienen los usuarios finales de la aplicación para pedir o acceder a las recomendaciones que el sistema puede brindar. En este caso se implementó una capa sobre los sistemas de recomendación implementados y una API REST para poder enviar las recomendaciones en un formato apto para el procesamiento desde una aplicación móvil. En este caso, la información se devuelve en formato de XML. En el capítulo 4 se hablará más en detalle acerca de este módulo, pero de manera resumida, el propósito de este módulo es el de proveer un medio de acceso a la información generada por el módulo Sistema de Recomendación
para
los usuarios finales.
3.4 Casos de estudio
Por último, los restantes capítulos del documento hacen referencia a los experimentos realizados utilizando la implementación provista en el capítulo 4, el análisis de los resultados obtenidos así como también la presentación de posibles trabajos a realizar en un futuro.
Para la materialización de los distintos experimentos se utilizó un set de datos perteneciente a la red social Foursquare, dentro de los cuales se pueden encontrar un listado completo de lugares con su ubicación geográfica y su categoría, un listado de revisiones de los lugares realizada por los mismos usuarios de la red social y un conjunto de usuarios. Del mismo se utilizaron los datos de dos ciudades, Nueva York y Los Ángeles.
Una vez elegido el conjunto de datos a utilizar se va a proceder con distintas pruebas, a fin de evaluar cuál es la más conveniente dependiendo de distintas variables de entrada: rankeo de lugares, algoritmos de recomendación y el cálculo de similitud.
Cada una de las pruebas será evaluada utilizando las métricas mencionadas en el capítulo 2 que son MAE, RMSE, precisión, recall y f-score.
Posteriormente a esto se va a realizar un análisis de los resultados obtenidos, con el fin de identificar los distintos comportamientos de la aplicación desarrollada.
3.4.1. Variables a analizar
Como se mencionó en la sección anterior, los experimentos a realizar se basan en la combinación de distintas variables y cómo reaccionará el sistema ante los cambios de las mismas.
En principio, lo primero que se intentó conseguir fue medir la preferencia de un usuario por un lugar determinado y la discretización de la misma. Para cumplir con este objetivo se analizaron dos alternativas. La primera consiste en contar la cantidad de veces que un usuario visitó un lugar dado. La segunda no solo tiene en cuenta la cantidad de veces que un miembro de la red social visitó un sitio sino que además se tuvo en cuenta el análisis de sentimiento de cada visita.
Siguiendo con la mención de las distintas variables de los experimentos, tal vez la más importante sea la técnica de recomendación utilizada. En este caso se utilizaron dos técnicas distintas como lo son el filtrado colaborativo basado en usuarios y la factorización de matrices.
Por último, se sabe que los algoritmos de filtrado colaborativo tienen una fuerte dependencia de otra función que es la que calcula la similitud entre ítems o usuarios. Existen maneras muy variadas de calcular la similitud y para los fines de la investigación se utilizaron el Coeficiente de correlación de Pearson, la similitud del Coseno y la comparación de árboles de preferencias de los usuarios.
Capítulo 4: Diseño e implementación
El presente capítulo tiene como objetivo explicar en detalle la solución aplicada a la problemática presentada, comenzando por nombrar las herramientas que se utilizaron como ayuda o soporte para lograr el objetivo así como también la descripción de todos los componentes de arquitectura diseñados.y su relación con otros trabajos realizados previamente.
4.1. Investigación de Frameworks para filtrado colaborativo
Para la realización del Sistema de recomendación se analizaron distintos frameworks y herramientas que implementan los distintos algoritmos de filtrado colaborativo. Finalmente se eligió Apache Mahout por ser la alternativa que escalaba mejor para grandes cantidades de datos y por la variedad de características disponibles como integración con Apache Hadoop, variedad de algoritmos de recomendación y facilidad de uso, entre otras.
A continuación se listan los componentes evaluados en conjunto con una explicación de porqué se eligieron o se descartaron.
4.1.1. Crab
Crab es un motor de recomendación flexible y rápido escrito en el lenguaje Python. Crab nos provee la implementación de una gran cantidad de algoritmos de filtrado colaborativo integrados también con librerías o paquetes de índole científica utilizados por la comunidad de desarrolladores Python. El motor tiene como objetivo proporcionar un amplio conjunto de componentes a partir de los cuales se puede construir un sistema de recomendación personalizado utilizando la implementación de los distintos algoritmos [20]. Dentro de las características de Crab, se destaca lo siguiente:
● Implementación de algoritmos de filtrado colaborativo basados en ítems y en usuarios. ● Evaluación de recomendadores.
● Soporte para APIs REST
Si bien Crab provee varias cosas útiles, luego de varias pruebas de concepto se decidió descartarlo por los siguientes motivos:
● Pobre performance. Ante una cantidad de datos superior, el sistema no tiene un tiempo de respuesta razonable. En algunos casos pasan horas hasta tener una respuesta. ● Proyecto descontinuado. El proyecto no recibe soporte desde hace un par de años.
4.1.2. Racoon
Otra alternativa que se analizó fue Racoon, una herramienta de filtrado colaborativo escrita con el framework Node.js y que utiliza Redis como mecanismo de caché.
Dentro de las características de Racoon, se puede mencionar que utiliza el algoritmo de los N vecinos más cercanos para generar las recomendaciones. Este módulo es útil para cualquier sistema con una base de datos de usuarios, una base de datos de productos / películas / artículos y el deseo de dar a sus usuarios la capacidad de evaluar ítems y recibir recomendaciones basadas en usuarios similares. Se puede emparejar con cualquier base de datos, ya que no realiza un seguimiento de cualquier información de usuario / elemento además de un ID único [21].
En resumen, las principales ventajas que se observaron fueron las siguientes:
● Independencia de la bases de datos. Se puede usar cualquier motor de base de datos, inclusive distinto paradigma (relacionales o no relacionales).
● Caché incorporada. La herramienta ya viene integrada con Redis. No obstante, las desventajas son grandes:
● Proyecto descontinuado.
● Ausencia de un módulo que evalúe los distintos algoritmos de recomendación. ● No funciona para versiones más actuales de Node.js.
4.1.3. Django-Recommends
Django-Recommends se presenta como una herramienta bastante superior a las presentadas anteriormente teniendo como base un framework bastante aceptado por la comunidad de desarrolladores Python y presentando mayor cantidad de características.
Podemos mencionar las siguientes ventajas: ● Mayor cantidad de algoritmos implementados.
● Buena performance cuando se dispone de grandes cantidades de datos.
● Soporte. La documentación de este proyecto es superior a las que pertenecen a las herramientas previamente presentadas.
En contrapartida, se encontraron los siguientes inconvenientes:
● Difícil instalación y configuración en plataformas que no sean Unix. ● Gran cantidad de dependencias externas.
4.1.4. Apache Mahout
Finalmente, el último componente analizado fue Apache Mahout. El mismo es un proyecto de código abierto, escrito en el lenguaje Java, que se utiliza principalmente para la creación de algoritmos de aprendizaje automático escalables [22]. Implementa técnicas de aprendizaje automático populares, tales como:
● Recomendación ● Clasificación
● La agrupación (en inglés, Clustering)
Adicionalmente Mahout se integra fácilmente con otro sistema muy utilizado para el almacenamiento de grandes cantidades de datos llamado Hadoop. Hadoop es un marco de código abierto de Apache que permite almacenar y procesar grandes volúmenes de datos en un entorno distribuido a través de grupos de ordenadores que utilizan modelos de programación simples. Pensando en una aplicación que deba escalar en un futuro, parece ser una opción bastante favorable.
Las características primitivas de Apache Mahout se enumeran a continuación.
● Los algoritmos de Mahout se escriben en la parte superior de Hadoop, por lo que funciona bien en entornos distribuidos. Mahout utiliza la biblioteca Apache Hadoop para escalar de manera efectiva en HDFS.
● Mahout permite a las aplicaciones analizar grandes conjuntos de datos de manera eficaz y en poco tiempo.
● Incluye múltiples algoritmos de Filtrado Colaborativo basados en vecindarios como basados en Usuario-Usuario, Ítem-Usuario e implementaciones de los distintos algoritmos de similitud.
● Incluye algoritmos de Filtrado Colaborativo basados en modelos de factor latente como la factorización de matrices y distintas implementaciones para hallar dichos factores.
● Incluye implementaciones para evaluar los sistemas de recomendación.
4.1.4.2. Arquitectura de Mahout
El siguiente diagrama muestra la relación entre los distintos componentes de Apache Mahout, considerando el escenario de un sistema de recomendación basado en usuarios. En un sistema basado en ítems la interacción es similar exceptuando que no hay ningún algoritmo para la conformación de un vecindario.
Observando la figura 4.1 se puede notar que existen cuatro capas principales en sistema:
● Aplicación externa: Sistema de recomendación final, que utiliza los distintos componentes de Apache Mahout.
● Recomendador:Es el núcleo de Mahout. Recibe como entrada un conjunto de datos y produce recomendaciones sobre los mismos.
● Modelo de datos:Contiene la información de las preferencias de los distintos usuarios del sistema.
Figura 4.1:
Arquitectura general de Apache Mahout [23].
4.1.5. Criterio de selección del framework
Luego de realizar un análisis exhaustivo de las distintas herramientas, se determinó que Apache Mahout era la que más soporte brindaba para resolver la problemática planteada. Para la elección se tuvieron en cuenta varios factores:
● La herramienta cumple con mayor cantidad de atributos de calidad.
● La herramienta se ajusta a otros factores externos como pueden ser el conocimiento en la tecnología de los desarrolladores o bien la cantidad de documentación acerca de la misma.
A continuación se muestran unas tablas que comparan los distintos componentes según los criterios mencionados.
4.1.5.1. Comparativa basada en atributos de calidad
Herramienta Performance Escalabilidad Portabilidad Usabilidad
Apache Mahout Si Si Si Si
Django Recommends
Si Si No No
Crab No No No Si
Raccon Si Si Si No
Tabla 4.1:
Comparativa de herramientas soporte realizada por atributos de calidad
4.1.5.2. Comparativa basada en características
Herramienta Posee sistema de cache Implementa algoritmos de filtrado colaborativo
Evalúa efectividad de algoritmos
Apache Mahout Si Si Si
Django Recommends
Si Si Si
Crab No Si No
Raccon Si Si No
Tabla 4.2:
Comparativa de herramientas soporte realizada por características de las
mismas