9
TFG EN INGENIER ´ IA INFORM ´ ATICA, ESCOLA D’ENGINYERIA (EE), UNIVERSIDAD AUT ´ ONOMA DE BARCELONA (UAB) Collaborative Filtering Recommender System for Bodas.net ıctor Gil Rodr´ ıguez Resumen– Dado el crecimiento que han experimentado los portales web en los ´ ultimos a ˜ nos y el aumento del contenido a mostrar, para muchos es f´ acil perderse o no seguir navegando por falta de inter´ es. En este art´ ıculo se cubre todo el proceso de creaci ´ on, desarrollo y puesta en marcha de un sistema de recomendaci ´ on para la empresa bodas.net. Sistema capaz de mostrar contenido af´ ın a los intereses de los usuarios, mejorando as´ ı su experiencia en la web. Palabras clave– web, sistema de recomendaci´ on, filtrado colaborativo, miner´ ıa de datos Abstract– The growth without any control of webs and their content in recent years can make users look away from them, users who can’t find what they want or don’t see anything appealing enough. And this is a huge problem for companies, because they lose money. In this paper it is described the whole process of design, development and tunning of a recommender system for bodas.net company. A solution able to show users what they want to see, improving their experience in the website. Keywords– web, recommender system, collaborative filtering, datamining 1 I NTRODUCCI ´ ON L A enorme cantidad de informaci´ on que las p´ aginas web guardan en sus bases de datos y data ware- houses muchas veces es mostrada a los usuarios sin ninguna especie de filtro ni contenci´ on, demostrando as´ ı que la web tiene una gran variedad de informaci´ on donde elegir. Pero a su vez, esta gran exposici´ on de datos crea un arma de doble filo, ya que dificulta la b ´ usqueda del con- tenido atractivo o deseado por el usuario. Lo oculta entre masas de informaci´ on [1]. Adem´ as, esta situacion puede llegar al extremo de ser abrumadora para individuos sin su- ficiente experiencia, rechazando la navegaci´ on por dichas webs. Para solucionar estos problemas, surgieron los Sis- temas de Recomendaci´ on, o RSs, de las siglas en ingl´ es de Recommender Systems. Un conjunto de software y t´ ecnicas capaces de realizar sugerencias de contenido afines a los in- tereses de los usuarios, facilit´ andoles la navegaci´ on y mejo- rando su experiencia. Su efectividad se basa en la premisa de que, en la rutina del d´ ıa a d´ ıa, las personas se dejan gu´ ıar por recomendaciones de otros [2]. En este art´ ıculo se detalla el proceso de planificaci´ on, dise˜ no, desarrollo, implementaci´ on, puesta en marcha, E-mail de contacto: [email protected] Menci´ on realizada: Tecnolog´ ıas de la Informaci ´ on Trabajo tutorizado por: Juan Carlos Sebasti´ an P´ erez (DEIC) Curs 2016/17 muestra y an´ alisis de resultados sobre el proyecto de creaci´ on de un RS para la empresa Bodas.net [3], portal de bodas l´ ıder en el mundo. 2 OBJETIVOS DEL PROYECTO 2.0.1 Principales – Realizaci´ on de un sistema capaz de predecir los intere- ses de los usuarios y recomendarles contenido de los foros de debates af´ ın y personalizado. – Analizar los datos que se disponen de los usuarios y los ´ ıtems para definir el conjunto de estructuras de datos y ponderaciones asignadas a cada una de las acciones y valoraciones disponibles. – Mostrar el contenido relacionado de manera intuitiva, atractiva y simple al usuario. Utilizando herramientas de sugerencias en la navegaci´ on de los usuarios por el portal. – El sistema no debe impactar negativamente en el rendimiento de la web. – El sistema debe ser escalable con el crecimiento y mejora de la infraestructura de la empresa. “Junio” de 2017, Escola d’Enginyeria (UAB)

Collaborative Filtering Recommender System for Bodas€¦ · muestra y an´alisis de resultados sobre el proyecto de creacion de un RS para la empresa Bodas.net [3], portal de´ bodas

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

TFG EN INGENIERIA INFORMATICA, ESCOLA D’ENGINYERIA (EE), UNIVERSIDAD AUTONOMA DE BARCELONA (UAB)

Collaborative Filtering RecommenderSystem for Bodas.net

Vıctor Gil Rodrıguez

Resumen–Dado el crecimiento que han experimentado los portales web en los ultimos anos y el aumento delcontenido a mostrar, para muchos es facil perderse o no seguir navegando por falta de interes. Eneste artıculo se cubre todo el proceso de creacion, desarrollo y puesta en marcha de un sistema derecomendacion para la empresa bodas.net. Sistema capaz de mostrar contenido afın a los interesesde los usuarios, mejorando ası su experiencia en la web.Palabras clave–web, sistema de recomendacion, filtrado colaborativo, minerıa de datos

Abstract–The growth without any control of webs and their content in recent years can make users look awayfrom them, users who can’t find what they want or don’t see anything appealing enough. And thisis a huge problem for companies, because they lose money. In this paper it is described the wholeprocess of design, development and tunning of a recommender system for bodas.net company. Asolution able to show users what they want to see, improving their experience in the website.Keywords–web, recommender system, collaborative filtering, datamining

F

1 INTRODUCCION

LA enorme cantidad de informacion que las paginasweb guardan en sus bases de datos y data ware-houses muchas veces es mostrada a los usuarios sin

ninguna especie de filtro ni contencion, demostrando asıque la web tiene una gran variedad de informacion dondeelegir. Pero a su vez, esta gran exposicion de datos creaun arma de doble filo, ya que dificulta la busqueda del con-tenido atractivo o deseado por el usuario. Lo oculta entremasas de informacion [1]. Ademas, esta situacion puedellegar al extremo de ser abrumadora para individuos sin su-ficiente experiencia, rechazando la navegacion por dichaswebs. Para solucionar estos problemas, surgieron los Sis-temas de Recomendacion, o RSs, de las siglas en ingles deRecommender Systems. Un conjunto de software y tecnicascapaces de realizar sugerencias de contenido afines a los in-tereses de los usuarios, facilitandoles la navegacion y mejo-rando su experiencia. Su efectividad se basa en la premisade que, en la rutina del dıa a dıa, las personas se dejan guıarpor recomendaciones de otros [2].En este artıculo se detalla el proceso de planificacion,diseno, desarrollo, implementacion, puesta en marcha,

• E-mail de contacto: [email protected]• Mencion realizada: Tecnologıas de la Informacion• Trabajo tutorizado por: Juan Carlos Sebastian Perez (DEIC)• Curs 2016/17

muestra y analisis de resultados sobre el proyecto decreacion de un RS para la empresa Bodas.net [3], portal debodas lıder en el mundo.

2 OBJETIVOS DEL PROYECTO

2.0.1 Principales

– Realizacion de un sistema capaz de predecir los intere-ses de los usuarios y recomendarles contenido de losforos de debates afın y personalizado.

– Analizar los datos que se disponen de los usuarios y losıtems para definir el conjunto de estructuras de datos yponderaciones asignadas a cada una de las acciones yvaloraciones disponibles.

– Mostrar el contenido relacionado de manera intuitiva,atractiva y simple al usuario. Utilizando herramientasde sugerencias en la navegacion de los usuarios por elportal.

– El sistema no debe impactar negativamente en elrendimiento de la web.

– El sistema debe ser escalable con el crecimiento ymejora de la infraestructura de la empresa.

“Junio” de 2017, Escola d’Enginyeria (UAB)

2 EE/UAB TFG INFORMATICA: Collaborative Filtering Recommender System for Bodas.net

2.0.2 Secundarios

– Posibilidad de addicionar al sistema la recommen-dacion de otros ambitos del portal.

3 METODOLOGIA

El proyecto se ha realizado con la metodologıa agil de de-sarrollo de software SCRUM [?]. Se realizaron 10 sprintsen total, y la longitud de cada uno fue de dos semanas. Ex-ceptuando el decimo sprint, que consto de 10 dıas.

El resumen de las tareas realizadas en cada uno ha sido:

TABLA 1: SPRINTS RESUME

SPRINT 1 20 FEBRERO- 5 MARZOBusqueda informacion y estado del arteSPRINT 2 6 MARZO - 19 MARZOAnalisis de la informacion disponibleSPRINT 3 20 MARZO - 2 ABRILDiseno AlgoritmosSPRINT 4 3 ABRIL - 16 ABRILImplementacion AlgoritmosSPRINT 5 17 ABRIL- 30 ABRILImplementacion Algoritmos y primeros testsSPRINT 6 1 MAYO- 14 MAYODiseno interfaces de usuarioSPRINT 7 15 MAYO - 28 MAYOFinalizacion Implementacion algorıtmicaSPRINT 8 29 MAYO- 11 JUNIOTests finalesSPRINT 9 12 JUNIO - 25 JUNIOPropuesta de Presentacion, dosier TFG e informeSPRINT 10 26 JUNIO- 6 JULIOPreparacion para la defensa y presentacion del trabajo

4 ESTADO DEL ARTE

Los RS aparecieron como un area independiente de estu-dio en los anos 50, y, en la actualidad, son imprescindiblespara grandes companıas como Amazon, YouTube, Netflix oYahoo. Esto es debido a que las funciones de un RS, tal ycomo se indican en [4] son: Aumentar el numero de ıtemsvendidos. Donde ıtem es la palabra utilizada en este areapara referirse al objeto o servicio a recomendar. Es obvioque en una web de comercio electronico, el interes reside envender mas ıtems (productos), mientras que en otro tipo deweb, el interes podrıa encontrarse en aumentar el numerode paginas visitadas. Esta es la funcion principal de un RS,y lo consigue porque se recomiendan ıtems a los usuarioscon alta probabilidad de que sean de su agrado. Ademas,estos sistemas no solo permiten aumentar las ventas, sinomostrar ıtems mas diversos. Permiten a los usuarios encon-trar ıtems que de otra manera serıan difıciles de ver. De estamanera, tambien se aumenta la satisfaccion y fidelidad delos usuarios. Por un lado, los RS mejoran la experienciade navegacion por la web, los usuarios encuentran intere-santes las recomendaciones. Y por otro lado, si un usuario

Fig. 1: ”Taxonomia de los RS”, por Aditi Gupta

tiene cierta historia en la web, los RS lo reconocen, y soncapaces de dar sugerencias mucho mas precisas.Los RS son sistemas de procesamiento de informacion, re-copilan grandes conjuntos de datos para crear sus recomen-daciones. Estos datos son principalmente informacion delos ıtems a sugerir y de los usuarios destino. Para poderrealizar buenas sugerencias, el sistema debe predecir queıtems son mas atractivos e interesantes para el usuario. Ex-isten diversos tipos de tecnicas para conseguir ese resultado.En este proyecto, se ha decantado por la realizacion de unCollaborative filtering [5], CF, tecnica que recomienda aun usuario los ıtems que gustaron a otros usuarios con in-tereses parecidos en el pasado. Este tipo de soluciones amenudo reciben el termino de filtrado social, ya que son losusuarios que de forma directa o indirecta evaluan el con-tenido y calidad de los ıtems. Los CF pueden ser clasi-ficados en dos grandes grupos, los basados en vecinos, oneighborhood-based methods, y los basados en modelos, omodel-based methods. Los metodos basados en vecinos,utilizan las relaciones usuario-ıtem guardadas en el sistemapara calcular las predicciones de futuros elementos. Esto sepuede realizar de dos maneras diferentes, conocidas comouser-based o ıtem-based recommendations. Las basadas enusuario, calculan el interes de un usuario por un ıtem us-ando los ratings de ese mismo ıtem por otros usuarios congustos parecidos, o lo que es lo mismo, con patrones de pun-tuacion similares. En cambio, los basados en ıtems, predi-cen el atractivo de un usuario por un ıtem basado en las pun-tuaciones de ese usuario con ıtems parecidos. La similitudentre ıtems es mas alta cuando multiples usuarios los hanpuntuado de manera parecida. De aquı el terminoneighbors.Por el contrario, las soluciones que utilizan un modelo, noutilizan directamente las relaciones usuario-ıtem del sis-tema, sino que a partir de ellas aprenden un modelo pre-dictivo. Estos sistemas deben ser entrenados con factoresque representen las caracterısticas de los usuarios e ıtems,para ası poder predecir.Una simple pero ilustrativa taxonomıa de los sistemas derecomendacion puede apreciarse en la Figura 1, donde semuestran ademas, las diversas combinaciones de las clasifi-caciones explicadas, que dan lugar a nuevos acercamientos.

En la realizacion de este proyecto, el metodo escogidoha sido el de un CF utilizando la tecnica de vecinos cer-canos con metodos basados en ıtems. Los motivos de estasselecciones residen en que las tecnicas de CF son las maspopulares y extendidas dentro de los RS, y el metodo de ve-cinos cercanos tambien presenta mucha popularidad graciasa su eficiencia, simplicidad y precisos resultados.

Vıctor Gil Rodrıguez: Collaborative Filtering Recommender System for Bodas.net 3

5 DEFINICION DEL PROBLEMA

Bodas.net ofrece a los usuarios la oportunidad de planificaral detalle el dıa de su boda con todo tipo de herramientas deorganizacion. Para ello, se cuenta con centenares de milesde empresas clientes que abarcan todos los servicios imag-inables: banquetes, catering, alquiler de coches, vestidos,trajes y complementos, fotografıa, vıdeo, animacion, flores,joyerıa... que son recomendadas y contratadas mediante elportal. La web no solo esta disponible en version de es-critorio, tambien esta adaptada para dispositivos moviles, eincluso cuenta con varias app para Android y IOs.La web cuenta con una de las comunidades de usuariosmas grandes en el sector. Dispone de foros donde miles denovias y novios comparten sus experiencias y consultan to-das sus dudas con otras parejas. Estos estan clasificados endistintos grupos, como moda nupcial, juegos, fiesta... Estosgrupos contienen muchos debates creados por los usuarios,y la base de este proyecto consistira en analizar estos de-bates y los usuarios que participan en cada uno de ellos paracrear un RS que sugiera otros debates de interes mientras senavega por ellos. Es decir, que al visitar uno, el usuario con-tinue mirando otros debates, ya que los sugeridos le estanpareciendo interesantes. Por eso, estos debates, se definirancomo los ıtems a recomendar por el sistema. Notese que adiferencia de otro tipo de portales, como podrıa ser un com-ercio electronico donde los usuarios compran productos ylos ponderan explıcitamente segun lo mucho que les ha gus-tado, como el caso de las estrellas en el rating de Amazon,en ellos se dispone directamente de esta informacıon, peroen este proyecto no ha sido ası. En los foros de esta comu-nidad no se ofrece la posibilidad de que los usuarios cuan-tifiquen lo mucho que les atrae cierto tema de conversacion.Por eso, en el siguiente apartado se describe detalladamenteel proceso de analisis del conjunto de datos con el que seha trabajado para realizar los algoritmos que calculan losratings, que tambien se explicaran en la siguiente seccion.

6 ANALISIS DE DATOS Y CALCULO DE RAT-INGS

Como se ha comentado, las puntuaciones de estas rela-ciones usuario-debate son vitales para la realizacion de unfiltrado colaborativo basado en vecinos, ya que indican lasemejanza que existe entre los elementos, en este caso, losdebates. Ademas, influyen directamente en los resultadosfinales y la precision del RS. Existen varias formas de medirel interes de un usuario por un ıtem, pero siempre se de-pende de los datos disponibles. Para este proyecto, se hacontado con los datos de la comunidad de Brasil. Esta co-munidad dispone de millones de usuarios activos, que creanmiles de debates cada mes. Los datos que dispone la em-presa sobre cada debate son limitados, para el RS se hantenido en cuenta:

– Listado de participantes y mensajes. Usuarios reg-istrados que han comentado en el debate.

– NMENSAJES. Numero de mensajes totales de usuariosregistrados dentro del debate

– VISITAS. Numero de peticiones al servidor por un de-terminado debate y el usuario esta registrado.

TABLA 2: DATOS BRASIL, CASAMENTOS.COM.BR

AVG(NMENSAJES) STDDEV (NMENSAJES) AV G(V ISITAS) STDDEV (V ISITAS)

32.886 157.636 173.582 638.594

Fig. 2: Mensajes en debates este 2017

– FECHA CREACION. Fecha en la cual el usuario dioorigen al tema.

Por cada usuario, tambien se ha usado:

– NMENSAJES DEBATE. Numero de comentarios delusuario en un mismo debate.

– NMENSAJES TOTAL. Numero de debates totales enlos que el usuario ha participado.

Para comprender como estan estos datos, la tabla 2 re-fleja un primer analisis para este ultimo ano 2017. Como sepuede observar, existen desviaciones muy elevadas, esto esdebido a que no existe una distribucion normal en los de-bates, como indican los graficos del numero de mensajes,figura 2, y numero de visitas, figura 3. En ellos se agru-pan el numero de coincidencias iguales de cada tipo. Eleje de abcisas indica el numero de comentarios o visitas enel debate, mientras que el de ordenadas dice el numero dedebates totales que tienen esa cantidad.

A partir de este analisis y de los intereses de la empresa seha creado el algoritmo de calculo de ratings de cada parejausuario-debate. Los objetivos marcados son, priorizar losdebates con mas comentarios y visitas, ya que tienen ungran factor de exito antes de comenzar. Ademas de dar masimportancia a los debates mas novedosos. Por eso, el pro-ceso de calculo se ha dividido en dos partes. La primera,aplicar estas restricciones a cada debate, para ası en la se-gunda fase, encontrar el interes de cada usuario con cadatema partiendo de esa base precalculada.

Fig. 3: Visitas en debates este 2017

4 EE/UAB TFG INFORMATICA: Collaborative Filtering Recommender System for Bodas.net

La formula 1 muestra el proceso de computo del rating paracada ıtem, a partir de sus propias caracterısticas.

R(Ik) = max((NMENSAJESk

V ISITASk)

∗ (min(√

(NMENSAJESk), 10)

+min(√

(V ISITASk/10), 10))

+ calcT imeRate(FECHACREACIONk)), 0)

(1)

Donde para calcular el rating de un ıtem k del con-junto de ıtems I, se obtiene el numero de mensajes re-alizados en ese debate, NMENSAJESk, el numero devisitas, V ISITASk, se les aplica una raız cuadrada y sesuman. Esta raız es aplicada debido a la gran desviacionque hay presente entre debates, de esta manera, y apli-cando un mınimo, min() sobre 10, se normalizan los datos.Si un debate tiene mas de 100 comentarios o 1000 vis-itas, dispondran de la mayor puntuacion, si no es ası, ytienen menos cantidad, se vera reflejado. Esta raız y co-eficientes se han escogido porque comprenden el 97,9% y98,7% de los datos totales, NMENSAJES y VISITAS re-spectivamente. Tal y como se observa en las figuras 2 y 3.Una vez sumados, se les aplica un factor de correccion queindica la atraccion general que ha causado este debate en losusuarios, con la fraccion NMENSAJESk/V ISITASk.Despues entra en juego la fecha de creacion del tema.FECHACREACIONk es un timestamp, y dentro de lafuncion calcTimeRate() se realiza una conversion a meses,y se compara con el timestamp del mes actual. Y a partirde esta diferencia, se aplica la funcion 2. El objetivo de estafuncion es medir la antiguedad del debate, decrementandosu valor conforme la diferencia con la actualidad aumenta.DiffDatek Es la diferencia con el presente, en meses, yel valor constante 10 indica los lımites de puntuacion. Estafuncion se trata de x2/3 + y2/3 = 102/3, y se encuentrarepresentada en la figura 4. Donde se aprecia que esta con-stante marca tanto la puntuacion maxima, como el lımite demeses vista a tener en cuenta para puntuar.Como resultado, la puntuacion maxima que un debate porsus caracterısticas puede alcanzar, es de 30.

TR(DiffDatek) = 1023

√(10

23 −DiffDate

23

k )

−DiffDate23

k

∗√(10

23 −DiffDate

23

k )

(2)

Una vez que se han aplicado estas funciones a los de-bates, comienza a calcularse los ratings de los usuarios conestos. Para ello, se aplica la funcion 3. Que calcula paracada usuario i del conjunto de usuarios U su atraccion conel debate Ik. El parametro (NMENSAJESik) indica eltotal de mensajes del usuario i en k, que es multiplicado porel rating del debate k calculado anteriormente. Despues seaplica un factor para incidir en la importancia de ese usuarioen el sistema para la posterior prediccion. El concepto delque parte esta idea es simple, no todos los usuarios votanpor igual, no es lo mismo un usuario que comenta en lo quele interesa y le atrae, que otro que comenta en todo parahacerse notar. Por esta razon, el parametro NDEBATESi

Fig. 4: Funcion calcTimeRate()

incluye el numero de debates diferentes en los cuales a par-ticipado el usuario i. Y se aplica una diferencia con el ratingdel usuario calculado, aplicando una funcion logarıtmica yun min(). Que indica que contra mas debates participados,menos importara su aportacion a la prediccion final. Y ellımite se encuentra en usuarios con mas de 100 mensajes endistintos debates.

TU(Ui, Ik) = max(NMENSAJESik ∗R(Ik)

−min(log10(NDEBATESi), 2), 0)

(3)

7 IMPLEMENTACION KNNEIGHBOURS

Una vez se han calculado todas las puntuaciones usuario-debate, se aplica el algoritmo de vecinos cercanos. Comose comentaba en la seccion 4, esta tecnica utilizara estasrelaciones para realizar las predicciones, y poder recomen-dar los ıtems.

Para su desarrollo, el diagrama de la figura 5 muestra lospasos implementados que conforman el algoritmo. Primero,estas puntuaciones se combinan formando todas las parejasposibles de debates en que un usuario a participado, JoinedRatings. Se realiza un join sobre las claves del usuario. Asıse consigue obtener informacion sobre que debates estanrelacionados por comentarios de un mismo usuario en am-bos. Despues, se aplica un filtro, Filter not Interesting, queelimina casos duplicados y casos donde la puntuacion deldebate no es mayor a 0, no son interesantes. La funcionMake Pairs generaliza estos datos computados. Abstraeel usuario de la relacion agrupando por la clave ıtem-ıtemcreada en los pasos anteriores. Obteniendo un resultado dela forma indicada en la funcion 4. Para cada pareja de ıtemsIk,Im se obtiene una lista de tuplas con las puntuaciones detodos los usuarios que comentaron en ambos debates, queseran la entrada de datos necesaria para la parte fundamen-tal del kNNeighbours, el calculo de similitudes.

Vıctor Gil Rodrıguez: Collaborative Filtering Recommender System for Bodas.net 5

Fig. 5: Diagrama implementacion kNNeighbours

(Ik, Im) = (TU(Ui, Ik), TU(Ui, Im)),

(TU(Us, Ik), TU(Ur, Im)),

(TU(Ut, Ik), TU(Uv, Im))...

(4)

La creacion de las similitudes entre los debates, o lo quees lo mismo, la prediccion que indicara la distancia entrelos vecinos y definira que se debe recomendar, se puede re-alizar con diversas tecnicas. En este proyecto, se ha optadopor la similitud del coseno [4]. Esta tecnica trata a las tuplasde ıtems de 4 como vectores de un espacio n-dimensional,donde n es el numero de elementos que la componen, eneste caso, usuarios que realizaron comentarios en ambostemas. Ası, es posible determinar su semejanza medianteel coseno del angulo que forman estos dos vectores de-bate. Dando un rango de valores (0,1), siendo 1 el resul-tado maximo cuando se compara un vector con sı mismo.Esto se expresa como se indica en 5, donde • es el productovectorial, y ‖Ik‖ es la norma del vector.

cos(Ik, Im) =Ik • Im‖Ik‖ ‖Im‖

(5)

El resultado obtenido ademas de esta prediccion, con-tiene el numero de coincidencias con el que se formo, yaque un listado de tuplas mas elevado en la pereja item-item indicara un resultado mas preciso. Y sera usado enla parte final del algoritmo, TopN Results. Cuando todo estecomputo se ha realizado y guardado, la manera de utilizarloes simple. Para determinar una recomendacion sobre un de-bate, basta con consultar para ese mismo ıtem la sentradascon una prediccion mas cercana a 1 realizadas con el mayornumero posible de coincidencias. Para ello, la busquedatopN asigna unos umbrales mınimos de calidad, y retornaun listado con las mejores recomendaciones.

8 TECNOLOGIAS UTILIZADAS

8.1 Apache Spark

La implementacion de la algorıtmica descrita en los aparta-dos anteriores se ha realizado con la herramienta de la fun-dacion Apache, Spark [6]. Un sistema de computo gen-eral de codigo abierto para clusteres. Esta disenado paraconseguir altos rendimientos con conjuntos de datos muygrandes. Esto es debido a que es capaz de mantener enmemoria las instrucciones de los algoritmos sin necesi-dad de escribir los resultados cada vez que se procesa undato. Ademas incorpora APIs de alto nivel para diferenteslenguajes de programacion. Segun los expertos es el suce-sor del framework Hadoop. El script de ejecucion de Sparkse ha realizando en el lenguaje de programacion Scala, unlenguaje de programacion multi-paradigma, que permitetanto programacion funcional como orientada a objetos. Yes ideal para este tipo de proyectos de procesamiento ma-sivo de datos. Estos datos se encuentran en bases de datosSQL estructuradas, y la informacion se extrae usando unaherramienta de Spark de alto nivel para este tipo de datos,Spark SQL [7].Las razones por la que se ha optado por este frameworkson principalmente dos. La primera reside en que en laempresa hasta ahora no habıa utilizado modelos de progra-macion distribuida para la realizacion de sus procesos, ypara poder implementar una aplicacion con tanto analisis dedatos hacıa falta un sistema capaz de soportar este computo.Y Spark fue escogido como la opcion predilecta debido almovimiento de grandes empresas como Microsoft, Ama-zon o Google al integrarlo en sus productos de Big Data.La segunda razon esta relacionada con la primera, al serla primera aplicacion de estas caracterısticas, se necesitabaun framework flexible que pudiera ejecutarse sobre unainfraestrucura que en un futuro se creara, como ApacheMesos o Hadoop YARN, la cual no existe actualmente. YSpark es capaz de correr encima sin problemas, inclusopermitiendo acceder a datos de diversas fuentes, el mismoHDFS de Hadoop o Cassandra por ejemplo.

8.2 Docker

Docker [8] es un software libre que permite desplegar, au-tomatizar y gestionar aplicaciones en unidades aisladas quecontienen los requisitos y herramientas necesarias para suejecucion, los llamados containers. Estos contenedores sonvistos por el sistema operativo principal como un procesomas, y utilizan su kernel para la ejecucion. Internamentecontienen la aplicacion con todas sus dependencias, y solodisponen vision del sistema de ficheros virtual. Gracias aesto y a que Docker asigna los recursos, como numero decores, tiempo CPU, memoria... entre los contenedores quese ejecutan, permite aislar completamente las aplicacionesentre ellas.Los contenedores son creados a partir del concepto deimagenes, que son los paquetes que contienen el OS, apli-cacion y dependencias a ejecutar de forma estatica. Luego,es posible levantar multiples contenedores a partir de lamisma imagen. Estas imagenes son totalmente customiz-ables, a partir de un fichero Dockerfile, el usuario puedecrearlas o modificarlas segun las necesidades de la apli-

6 EE/UAB TFG INFORMATICA: Collaborative Filtering Recommender System for Bodas.net

cacion. En este proyecto se ha creado una imagen conel sistema operativo Ubuntu v16.04, a partir de una ima-gen obtenida del repositorio DockerHub [9], a la cual sele ha instalado el entorno necesario para ejecutar spark.Simplemente instalando la ultima version de java, JDK8,anadiendo las librerıas necesarias, y exponer los puertospara acceder desde el exterior, es posible de ejecutar. Estose debe a que Spark se ejecuta sobre la maquina virtual dejava, ası que exportando el proyecto como .JAR, es sufi-ciente. En la seccion 9 se detalla el proceso de creacion delos contenedores para la creacion de una arquitectura clusterque ejecute el codigo.

8.3 Desarrollo webPara la muestra de resultados en el portal, se han utilizadotecnologıas clasicas para el desarrollo web, como PHP,JavaScript y HTML.

9 PUESTA EN MARCHA Y EJECUCION

La maquina donde se tiene pensado ejecutar la aplicaciontiene las caracterısticas hardware siguientes:

– 40x Intel(R) Xeon(R) CPU E5-2650 v3

– Cada cpu esta compuesta por 10 cores, y trabajan a unafrecuencia de 2.30GHz

– Cada uno cuenta con una memoria cache L3 de 25 MB

– Se disponen de 48 GB de memoria RAM DDR4 paracada CPU

En esta maquina se ejecutan todo tipo de procesos de laempresa, que requieren unas librerıas y unas versiones desoftware determinadas, y como no se dispone de ningunainfraestructura para la ejecucion de la aplicacion con Spark,se opto por la utilizacion de contenedores Docker. Comoya se vio en la seccion anterior, es posible aislar la apli-cacion del resto con esta tecnologıa, y hasta es posible crearuna estructura de cluster. Para correr en modo cluster unaaplicacion Spark, figura 6, cada una es vista como un pro-ceso independiente, y esta coordinada por un objeto del pro-grama principal, el SparkContext, que es el driver del pro-grama. Una vez el driver se ha conectado al Cluster Man-ager, se realiza el submit del trabajo con sus necesidadesindicadas. Este manager puede ser Apache Mesos, YARNde Hadoop o uno propio incluido con Spark, llamado stan-dalone. En este proyecto se ha utilizado este ultimo, ya quepermite de manera sencilla la inicializacion y puesta en mar-cha del cluster. Este manager asignara los recursos pedidospor el driver, encontrara los workers para el trabajo, y lesenviara el codigo y las dependencias necesarias para la eje-cucion. Finalmente, el driver se comunica con los workerspara asignarles las tareas.

Para la recreacion del cluster con Docker, se ha realizadotal y como indica la figura 7. Donde se han levantado trescontenedores, uno para el master, y uno para cada worker.Para el deploy, se lanza el driver desde un proceso de unworker dentro del cluster. Esto es ası porque es preferibleque se encuentre dentro de la red local, ya que organiza lastareas de los workers.

Fig. 6: Spark Cluster Mode

Fig. 7: Spark Cluster Setup Docker

Para que la creacion de los contenedores se realice demanera automatica, en docker se puede definir un fichero.yml de configuracion. En el, se indica todo lo necesariopara levantar el cluster, desde la asignacion del master, losworkers y sus recursos, la red, el mapeo de puertos... Unavez se levantan los containers, es posible ver su estado en laUI web, figura 8. Aquı se muestra un resumen de los work-ers y sus estados, ademas de las aplicaciones y drivers aejecutar, ejecutandose y finalizadas. Pudiendo ver su estadoen tiempo real.

Fig. 8: Spark Website UI

[H] La figura 9 muestra la aplicacion ejecutandose en elcluster comentado anteriormente, el driver se ejecuta en unworker, mientras que la aplicacion lo hace en el otro.

Vıctor Gil Rodrıguez: Collaborative Filtering Recommender System for Bodas.net 7

Fig. 9: Spark Job Running

10 RESULTADOS FINALES

10.1 Datos obtenidos

Una vez la aplicacion finaliza su ejecucion, los datos resul-tantes son guardados en las bases de datos de la empresa. Enla figura 10 se muestran un subconjunto de datos obtenidos.La primero columna de la izquierda, ID_TEMA, indica eldebate del cual se quiere buscar una recomendacion, el queactualmente se esta visitando en la web, mientras que lacolumna ID_TEMA_REL es el debate que sera recomen-dado. La columna SCORE es el resultado final de loscalculos de similitud entre ambos debates, expresados tal ycomo se indica en las secciones 6 y 7, siendo 1.0 la similu-tud maxima. La ultima columna, OCURRENCES es un valormuy importante, ya que indica si es una prediccion intere-sante o no. Marca la fidelidad del campo SCORE, mues-tra el numero total de coincidencias con las que se calculo,el numero de tuplas de la relacion de 4. Cuanto mas alto,mejor precision. Y esto es lo que ocurre en la imagen 10, seaprecia una anomalıa en varios casos, en los cuales se indicauna relacion de similitud maxima, 1.0. Para esos resultados,el numero de OCURRENCES con las que se calculo es bajo.Por contrario, cuando este empieza a crecer, ya no ocurre,figura 11.

Fig. 10: Ejemplo resultados finales

Fig. 11: Ejemplo resultados para valores OCURRENCESaltos

Si se observa a detalle los datos, hay ciertas similitudesque a pesar de que se han formado a partir de un numeropequeno de coincidencias, no muestran una puntuacion 1.0.Esto se debe a la manera en como la relacion usuario-ıtemes calculada, formula 3. Este error se forma en la partedonde se aplica la funcion min() y el logaritmo. En un prin-cipio, la idea que se buscaba era diferenciar como puntuanlos usuarios, dando mas importancia a quien ha comentadomenos en la comunidad, partiendo de que de esta manera,las relaciones seran mas precisas. Sin embargo, esto creaun fenomeno peculiar cuando se dan las condiciones nece-sarias, que soprendentemente son bastante frecuentes paradebates nuevos. Si eres un usuario muy activo en la co-munidad, tendras muchas posibilidades de responder muyrapido a los nuevos debates de los demas usuarios, y seguncomo se calcula el rating del debate y del usuario en el, to-dos los que comenten con mas de 100 respuestas realizadas,ponderan igual. Ası que para debates con muy pocas re-spuestas, hay muchas probabilidades de que sean de usuar-ios con un largo historial en la web, por tanto, si se relacionaese debate con otro de las mismas caracterısticas, el resul-tado es similitud total.Para evitar este problema, se aplica la tecnica topN Resultscomentada anteriormente. Consiste en devolver para cadaconsulta de recomendacion, un listado de resultados posi-bles que cumplen ciertas condiciones. Para este proyectose han establecido dos thresholds, o umbrales, para asegu-rar la calidad de la recomendacion. Debe tener una SCOREmayor a 0.94, y se debe haber calculado a partir de mas de10 OCURRENCES. De esta manera se evitan en gran me-dida los 1.0. Sin embargo esto automaticamente afecta alos nuevos debates, que deben esperar hasta conseguir tenerun cierto numero de respuestas.

10.2 Muestra de resultados en la web, disenoLa muestra de los resultados de la aplicacion en la web,se ha realizado de manera que resulte comoda y atractivapara su uso por parte de los usuarios. Se ha implemen-tado en tres lugares distintos. Primero, al navegar por un

8 EE/UAB TFG INFORMATICA: Collaborative Filtering Recommender System for Bodas.net

Fig. 12: Debates relacionados en desktop

Fig. 13: Debates relacionados en mobile topics

debate, se muestran los debates relacionados tanto en laversion de escritorio, figura 12, como en la version movilde la web, figura 13. Eligiendo una unica opcion como re-comendacion.

Ademas tambien se han anadido sugerencias de debatesen un apartado de fotografıas que aparecen dentro de de-bates en el portal para la version movil, figura 14. De estamanera, al acabar la lectura de los comentarios o de obser-var las fotos, es muy facil hacer click en las sugerencias.

Destacar que el sistema de recomendacion aun no esta enlınea de produccion, no es visible para los usuarios. En unfuturo proximo se incluira.

11 L INEAS FUTURAS

Como lıneas de trabajo futuras, en primer lugar habrıaque anadir el proyecto a produccion, y comenzar a eval-uar el rendimiento que se consigue. En segundo lugar, sedebe revisar el problema de las recomendaciones de debates

Fig. 14: Debates relacionados en mobile photos

nuevos. Modificar y encontrar una solucion mejor para lasaportaciones de las calificaciones de los usuarios en el de-bate, evitando ası esta penalizacion. Una vez se hubiera ar-reglado, existe un gran margen de ampliacion del proyecto,ya que se podrıa ampliar su zona de influencia mas alla delos foros de debates. Enlazar la recomendacion con provee-dores de vestidos, zapatos, joyerıa, banquetes... Segun eldebate visitado, serıa posible la personalizacion en ese sec-tor.Ademas, cuando el sistema este en marcha, y los usuar-ios comiencen a darse cuenta de su existencia, habra queir mejorando las medidas para defender al sistema frentea quien intente atacar al sistema para lograr su mal fun-cionamiento. Anadiendo aun mas robustez.

12 CONCLUSIONES

En este artıculo se ha hablado del proyecto de creacion deun sistema de recomendacion para la web de la empresabodas.net. Se ha realizado una introduccion a este campo,dando a conocer sus orıgenes y objetivos, ası como lasdiferentes tecnicas que existen para su creacion. Despuesse han detallado los objetivos y la metodologıa utilizada,ademas de la definicion del problema a tratar. A contin-uacion, se ha explicado con detenimiento todos los algo-ritmos y funciones aplicadas para el calculo de los ratings.Razonando cada eleccion. De la misma manera se ha ex-plicado la implementacion de la tecnica seleccionada, unfiltrado colaborativo a partir de vecinos cercanos. Seguida-mente se ha tratado el framework elegido para la imple-

Vıctor Gil Rodrıguez: Collaborative Filtering Recommender System for Bodas.net 9

mentacion del sistema, Spark, ası como sus caracterısticasprincipales. Ademas de comentar que la aplicacion se eje-cutara en un entorno de contenedores Docker creando uncluster, usando como cluster manager al modo standalonede Spark. Para acabar, se han mostrado y analizado los re-sultados obtenidos, detallando sus caracterısticas. Y se hacapturado la estrategia de uso para la visualizacion en elportal, tanto para la version de escritorio como para la demovil.

AGRADECIMIENTOS

A mi famılia, que sin su apoyo este trabajo no hubiera sidoposible. Ası como a David y a Jose, que me ayudaron siem-pre que lo necesitaba. Y a mi tutor Juan Carlos, por guiarmedurante todo el proceso.

REFERENCES

[1] B. Schwartz, The Paradox of Choice, Why more is less.ECCO, New York, 2004.

[2] a. F. R. T. Mahmood, “Improving recommender sys-tems with adaptive conversational strategies,” Proceed-ings of the 20th ACM Conference on Hypertext and Hy-permedia, pp. 73–82, 2009.

[3] “Bodas.net about us.” https://www.bodas.net/aboutus/aboutus.php.

[4] F. R. Lior Rokach Bracha Shapira Paul B. Kantor, Rec-ommender Systems Handbook. Springer, 2011.

[5] J. S. D. Frankowski J. Herlocker S. Sen, “Collabo-rative filtering recommender systems,” The AdaptiveWeb, p. 291–324, 2007.

[6] “Apache spark.” https://spark.apache.org/docs/latest/.

[7] “Apache sparksql.” https://spark.apache.org/docs/latest/sql-programming-guide.html.

[8] “What is docker?.” https://www.docker.com/what-docker.

[9] “Dockerhub ubuntu.” https://hub.docker.com/_/ubuntu/.