trabajo final de grado - ridaa.unicen.edu.ar

130
UNIVERSIDAD DEL CENTRO DE LA PROVINCIA DE BUENOS AIRES TRABAJO FINAL DE GRADO CARRERA INGENIERÍA DE SISTEMAS JoyMeter - Sistema de recomendación de actividades a usuarios de dispositivos móviles Autores: Hernán Javier Ramovecchi - María Sol García Director: Dr Jorge Andrés Diaz Pace

Upload: others

Post on 01-Oct-2021

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

UNIVERSIDAD DEL CENTRO DE LA PROVINCIA DE BUENOS AIRES

TRABAJO FINAL DE GRADO CARRERA

INGENIERÍA DE SISTEMAS

JoyMeter - Sistema de recomendación de actividades a usuarios de dispositivos móviles

Autores: Hernán Javier Ramovecchi - María Sol García

Director: Dr Jorge Andrés Diaz Pace

Page 2: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

ÍNDICE GENERAL ÍNDICE DE FIGURAS 3 ÍNDICE DE TABLAS 5 1 INTRODUCCIÓN 8 1.1 ENFOQUE PROPUESTO 9 1.2 ORGANIZACIÓN DEL TRABAJO 11 2 EMOCIONES 13 2.1 ESTADOS DE ÁNIMO 13 2.2 EMOCIONES POSITIVAS 15 2.3 UTILIDAD DE LAS EMOCIONES POSITIVAS 16 2.4 BENEFICIO DE LAS EMOCIONES POSITIVAS 17 2.5 LO QUE DEPENDE LA VOLUNTAD 18 2.6 VALORACIÓN DE LAS EMOCIONES POSITIVAS 19 3 AGENTES DE ASISTENCIA 22 3.1 AGENTES DE INTERFAZ 22 3.2 SISTEMAS DE RECOMENDACIÓN 24 3.2.1 TÉCNICAS DE RECOMENDACIÓN 25 3.2.1.1 RECOMENDACIÓN BASADA EN CONTENIDO 25 3.2.1.2 RECOMENDACIÓN COLABORATIVA 27 3.2.1.3 RECOMENDACIÓN BASADA EN CONOCIMIENTO 30 3.2.1.4 SISTEMAS DE RECOMENDACIÓN DEMOGRÁFICOS 30 3.2.1.5 SISTEMAS DE RECOMENDACIÓN BASADOS EN UTILIDADES 30 3.2.2 CAPTURA DE LAS PREFERENCIAS DEL USUARIO 31 3.2.3 DOMINIOS DE APLICACIÓN DE LOS SISTEMAS DE RECOMENDACIÓN 32 4 MACHINE LEARNING 34 4.1 APRENDIZAJE SUPERVISADO VERSUS NO SUPERVISADO 34 4.2 ALGORITMOS SUPERVISADOS DE APRENDIZAJE 36 4.2.1 K VECINOS MÁS CERCANOS (Nearest-neighbor) 36 4.2.2 NAIVE BAYES 36 4.2.3 TABLA DE DECISIÓN 37 4.2.4 MÁQUINAS DE SOPORTE VECTORIAL 37 4.2.5 REDES NEURONALES ARTIFICIALES 37 4.2.6 ÁRBOLES DE DECISIÓN 38 4.2.5 ENSAMBLES 39 5 APLICACIONES MÓVILES 41 5.1 ANDROID 42 5.2 GENERALIDADES DE LAS APLICACIONES ANDROID 45 5.3 COMPONENTES DE LAS APLICACIONES 46 5.4 VENTAJA DEL USO DE ANDROID SOBRE OTROS S.O MÓVILES 50 6 TRABAJOS RELACIONADOS 52 6.1 GOOGLE NEWS 52 6.2 XPod 53

1

Page 3: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

6.3 HULU CF-NADE ALGORITHM 54 6.4 PICFEEL - A WORLD OF FEELINGS 57 6.5 HAPINNESS 58 7 ENFOQUE 60 7.1 JOYMETER 60 7.1.1 ACTIVIDADES 61 7.1.2 NIVEL DE SATISFACCIÓN 62 7.1.3 SUGERENCIA DE ACTIVIDADES 62 7.1.4 AUTENTICACIÓN 62 7.1.5 ACCESIBILIDAD 62 7.1.6 USABILIDAD 63 7.1.7 ACCESO OFFLINE Y SINCRONIZACIÓN 63 7.2 DISEÑO DE ARQUITECTURA 64 7.2.1 SERVIDOR 65 7.2.2 CLIENTE 67 7.3 CÁLCULO DEL NIVEL SUBJETIVO DE LA FELICIDAD 70 7.4 RECOMENDACIÓN DE ACTIVIDADES 71 7.4.1 INFORMACIÓN CAPTADA PARA GENERAR RECOMENDACIONES 72 7.4.2 CLASIFICADORES 73 7.4.3 ESTRATEGIAS DE RECOMENDACIÓN 74 8 EVALUACIÓN EXPERIMENTAL 80 8.1 CLASIFICADORES PROVISTOS POR WEKA 80 8.2 CONSIDERACIONES 81 8.3 PERFILES DE USUARIO ANTERIORES A LA UTILIZACIÓN DE LAS TÉCNICAS DE RECOMENDACIÓN 82 8.4 INFORMACIÓN POSTERIOR AL PERÍODO DE EXPERIMENTACIÓN CON LAS TÉCNICAS DE RECOMENDACIÓN 87 8.5 COMPARACIÓN Y ANÁLISIS DE RESULTADOS 93 9 CONCLUSIONES 94 9.1 VENTAJAS 95 9.2 LIMITACIONES 96 9.3 TRABAJOS FUTUROS 96 10 APÉNDICE 98 APÉNDICE A: ESCALAS DE FELICIDAD 98 APÉNDICE B: TECNOLOGÍAS UTILIZADAS EN EL SERVIDOR 99 APÉNDICE C: TECNOLOGÍAS UTILIZADAS EN EL CLIENTE 112 APÉNDICE D: MANUAL DE USUARIO 122 11 REFERENCIAS 127

2

Page 4: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

ÍNDICE DE FIGURAS Figura 1: JoyMeter sistemas de recomendación de actividades 8 Figura 2: Diagrama de contexto de JoyMeter con usuario utilizando la App 10 Figura 3. Efectos de las emociones positivas 17 Figura 4: Interacción usuario-agente de interfaz 23 Figura 5: Perfil de usuario basado en el contenido 25 Figura 6: Vecinos cercanos con preferencias similares 27 Figura 7: Los sistemas de recomendación llegaron para quedarse 32 Figura 8: Ejemplo de la técnica de aprendizaje no supervisado – clustering 35 Figura 9: Ejemplo de una red neuronal artificial de multicapa tipo feed-forward 38 Figura 10: Ejemplo de un árbol de decisión 38 Figura 11(a) : Probabilidad de que precisamente n de 25 clasificadores están en el error (suponiendo que cada uno tiene tasa de error de 0,45). 40 Figura 11(b): Tasa de error vs el número de clasificadores en el conjunto (empleando voto mayoritario) para tres tasas de error independientes. 40 Figura 12: Dispositivos móviles 41 Figura 13: Sistemas operativos móviles en el mundo y Argentina 2015 42 Figura 14: Logotipo del último OS Android (Nougat) 43 Figura 15: Arquitectura Android 43 Figura 16: Ciclo de vida de una actividad en Android 49 Figura 17: Landing page de GoogleNews 53 Figura 18: Pantalla de Hulu de recomendación de productos 54 Figura 19: Un ejemplo demostrativo de CF-NADE 55 Figura 20: Top 5 de películas más similares recomendadas por el algoritmo 56 Figura 21: Aplicación PicFeel 57 Figura 22: Aplicación Happiness 58 Figura 23: Recordatorio de la aplicación Happiness, para cargar una nueva entrada 58 Figura 24: Diagrama nocional de los componentes de JoyMeter y las APIs externas con la interacción del usuario 61 Figura 25: Deploy general de Joymeter e integración con APIs externas 64 Figura 26: Diagrama de componentes del servidor de JoyMeter 66 Figura 27: Flujo de alta y recepción de mensaje de un dispositivo con GCM 66 Figura 28: Arquitectura del cliente de JoyMeter 68 Figura 29: Flujo del alta de un usuario en JoyMeter y componentes involucrados 69 Figura 30: Perfil de usuario 72 Figura 31: Estrategias de recomendación 74 Figura 32: Sugerencia del tipo de Actividad en base a los atributos independientes 74 Figura 33: Distribución de probabilidad de tipos posibles de actividad 75 Figura 34: Basic Activity Recommender 75 Figura 35: Filter Activity Recommender 77 Figura 36: Feedback Filter 77 Figura 37: Usuario A, distribución por tipo de actividad 82

3

Page 5: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

Figura 38: Usuario A, distribución por momento del día 83 Figura 39: Usuario A, distribución por tipo de día 83 Figura 40: Usuario A, distribución por nivel de satisfacción 84 Figura 41: Usuario B, distribución por tipo de actividad 85 Figura 42: Usuario B, distribución por momento del día 85 Figura 43: Usuario B, distribución por tipo de día 86 Figura 44: Usuario B, distribución por nivel de satisfacción 86 Figura 45: Usuario A, aceptación total de recomendaciones 87 Figura 46: Usuario A, técnicas de recomendación aceptadas 87 Figura 47: Usuario A, actividades aceptadas por tipo 88 Figura 48: Usuario A, actividades aceptadas por momento del día 88 Figura 49: Usuario B, aceptación total de recomendaciones 90 Figura 50: Usuario B, técnicas de recomendación aceptadas 90 Figura 51: Usuario B, actividades aceptadas por tipo 91 Figura 52: Usuario B, actividades aceptadas por momento del día 91

4

Page 6: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

ÍNDICE DE TABLAS Tabla 1: Fuente que nos proporcionan emociones positivas 19 Tabla 2: Ejemplo de dataset para aprendizaje supervisado 34 Tabla 3: Usuario A, matriz de confusión de estrategia con filtro 89 Tabla 4: Usuario A, matriz de confusión de estrategia de clasificación 88 Tabla 5: Usuario B, matriz de confusión de estrategia con filtro 92 Tabla 6: Usuario B, matriz de confusión de estrategia de clasificación 92

5

Page 7: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

Dedicatorias

A mi esposa, Natalia, por creer en mí y estar a mi lado siempre. A mis padres, Lidia y “Chacho” quienes siempre se preocuparon

en brindarme una buena educación, con mucho esfuerzo y sacrificio. A mi hermano Damián, familia y amigos por acompañarme en este ciclo.

H.J.R

A Facundo, mi compañero de vida, por apoyarme incondicionalmente. A mi mamá Patricia, por su esfuerzo dándome la posibilidad de estudiar.

A Hernan, mi compañero de tesis, por su empuje y dedicación. Y a mi familia y amigos, por acompañarme siempre.

M.S.G

6

Page 8: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

Agradecimientos Agradecemos a nuestro director Dr Jorge Andrés Díaz Pace, por escuchar esta propuesta de Tesis y compartir el mismo entusiasmo que nosotros en la realización de este proyecto, con predisposición y paciencia. También queremos hacer llegar nuestro agradecimiento a todos los profesionales que formaron parte de nuestro ciclo académico, sin su vocación docente no podríamos haber realizado este logro. A todos ellos, muchas gracias.

7

Page 9: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

1 Introducción

Los sistemas de recomendación estudian las preferencias y gustos de los usuarios

con el objetivo sugerir ítems que factiblemente sean de su interés. Las recomendaciones

forman parte de la cotidianeidad de las personas ya sea al escoger una película, un médico

o un viaje a realizar. Las áreas de aplicación de la tecnología de sistemas de

recomendación abarcan dominios tradicionales tales como, música, noticias y hasta otros

más sofisticados.

Estas recomendaciones pueden formarse empleando diferentes técnicas y enfoques,

particularmente la tecnología de agentes inteligentes y específicamente los agentes de

interfaz o personales pueden ser utilizados para modelar este tipo de sistemas. Estos

agentes normalmente emplean internamente técnicas y algoritmos de Inteligencia Artificial.

Figura 1: JoyMeter sistemas de recomendación de actividades

8

Page 10: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

En los últimos años, psicólogos e investigadores han investigado y proporcionado

evidencias concretas sobre una cuestión dejada anteriormente a los filósofos: ¿qué nos

hace felices? Descubrimientos en el campo de la psicología positiva sugieren que las

acciones de un individuo pueden tener un efecto significativo en su felicidad y satisfacción

con la vida.

En particular, el cultivo de emociones positivas mediante la realización de ciertas

actividades puede ayudar a una persona a desarrollar áreas del cerebro asociadas al

bienestar y la felicidad. En este contexto, se considera importante fomentar la práctica de

actividades que hacen felices a una persona, sirviéndose para ello de tecnologías ubicuas

como son los dispositivos móviles. El presente trabajo apunta a combinar agentes y

recomendaciones para que una persona pueda realizar actividades tendientes a mejorar su

estado de felicidad.

Los sistemas de recomendación juegan un rol primordial, ya que asisten al usuario

en la ardua tarea de filtrar items relevantes de información, en base a sus objetivos,

preferencias, y necesidades que constituye el perfil de usuario. Existen diferentes técnicas

de recomendación aplicadas para lograr interpretar el perfil del usuario. Entre la variedad de

estos enfoques, pueden nombrarse: filtrado colaborativo, perfil demográfico, basado en el

historial del usuario, entre otros. Algunos recomendadores avanzados, hacen uso de una

combinación de estas técnicas, dando como resultado una solución híbrida.

1.1 Enfoque propuesto

La capacidad de una aplicación móvil para realizar un seguimiento de las actividades

de una persona, y adicionalmente sugerir ciertas actividades que le permitan lograr un cierto

grado de felicidad sostenido en el tiempo es el punto de partida para este trabajo.

9

Page 11: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

Figura 2: Diagrama de contexto de JoyMeter con usuario utilizando la App

El objetivo principal del presente trabajo final fue el desarrollo de una herramienta

denominada JoyMeter que permite el seguimiento de actividades personales junto con el

nivel de satisfacción obtenido al realizar las mismas. Este sistema permite cargar

actividades, actualizarlas, consultarlas y ofrecer un historial con los niveles de satisfacción

del usuario a lo largo del tiempo. Se diseñó un sistema de recomendación, con el fin de

sugerir actividades a partir de la retroalimentación de la interacción con el usuario, donde se

analizaron distintas estrategias de recomendación. En esta línea, se evaluaron distintas

reglas para contemplar la satisfacción otorgada por ciertas actividades predefinidas, y el

feedback provisto por los usuarios de la aplicación.

Para facilitar el acceso, JoyMeter puede ser accedida desde múltiples dispositivos,

en base a una arquitectura cliente/servidor. El dispositivo móvil juega el rol de cliente,

haciendo uso de servicios Web expuestos por el servidor, como son el caso de la carga,

edición y eliminación de las actividades. Adicionalmente, el dispositivo móvil puede

consultar el nivel e historial de felicidad alcanzados.

Para las recomendaciones se consideraron aspectos de extensibilidad, y se

implementaron distintos enfoques de recomendación (por ej. reglas heurísticas, Machine

Learning, etc.), en base a un enfoque de diseño modular que soporta la incorporación de

distintas técnicas. Como funcionalidad adicional, la herramienta está integrada con

10

Page 12: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

Facebook para facilitar el Login del usuario con las credenciales de Facebook, así como

también permite al usuario publicar en Facebook cada una de las actividades que se

agreguen cuando así lo desee.

1.2 Organización del trabajo

El resto del trabajo se estructura en ocho capítulos los cuales están organizados del

siguiente modo:

En el capítulo 2, se describen conceptos sobre estado emocional positivo y

bienestar, incluyendo cómo estás emociones positivas afectan a las personas y como el

cultivo de emociones positivas logran un estado emocional saludable.

En el capítulo 3, se hace una introducción a los agentes de interfaz y sistemas de

recomendación, mencionando las diferentes técnicas de recomendación.

En el capítulo 4, se describen técnicas básicas de Machine Learning, partiendo de

los tipos de aprendizajes (supervisado y no supervisado), y se abordan los algoritmos más

conocidos de aprendizaje

En el capítulo 5, se centra en dispositivos móviles, y nociones de aplicaciones

móviles para el sistema operativo Android..

En el capítulo 6, se analizan algunos trabajos relacionados en el ámbito de los

dispositivos móviles y de sistemas de recomendación existentes.

En el capítulo 7, se describe la solución propuesta para JoyMeter, describiendo su

arquitectura y sus componentes y tecnologías asociadas, y se ilustran sus principales

funcionalidades. Adicionalmente, se presentan las funcionalidades específicas de

recomendación de actividades orientadas por “niveles de felicidad”.

En el capítulo 8, se reportan algunos experimentos de uso de la aplicación

JoyMeter, y se analizan los resultados obtenidos con distintas estrategias de

recomendación..

11

Page 13: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

Finalmente, en el capítulo 9, se presentan las conclusiones y se comentan posibles

trabajos futuros derivados de este proyecto.

12

Page 14: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

2 Emociones

Por años las investigaciones relacionadas al bienestar y la felicidad se han centrado

en el control y la disminución de los estados emocionales negativos. Sin embargo, en los

últimos tiempos viene creciendo una tendencia igualmente valiosa a promover, la cuál da

pie a este trabajo: el cultivo de las emociones positivas .

La Psicología Positiva ha afirmado desde hace más de una década que el optimismo

se puede aprender. Esto ahora está respaldado por hallazgos neurocientíficos de los

últimos años, que muestran que los circuitos neuronales implicados en el bienestar tienen

plasticidad, así como la habilidad de crecer y cambiar. Por tanto, es posible enseñar a

nuestro cerebro a pensar con mayor positividad y a disfrutar de las emociones positivas por

medio de saborear, optar por la empatía y la compasión y entrenarnos en la atención plena.

Las respuestas emocionales y los estados de ánimo son resultado de las vivencias

cotidianas, en el que jugamos un papel muy activo en la génesis de dichos estados

emocionales, tanto los positivos como los negativos. Podemos tener cierto grado de control

sobre ellos, es decir, podemos hacer cosas tanto para favorecer los estados de ánimo

positivos, como para reducir o eliminar los estados emocionales negativos [57].

2.1 Estados de Ánimo

El modo en que una persona se siente no es azaroso, sino que responde a una serie

de factores personales y del contexto, los cuales influyen y explican esa manera subjetiva

de encontrarse. El comportamiento, incluyendo la manera de sentir, reaccionar, actuar y

pensar, es producto de la interacción con el entorno, es decir una persona actúa, siente o

piensa en respuesta a un ambiente con el que participa, y que por tanto, nos presenta

situaciones y experiencias que no nos dejan indiferentes: una persona interpreta los hechos,

se emociona y actúa ante ellos, y lo hace de un modo diferente según la persona [57].

Una emoción es un modo subjetivo de sentirse ante un hecho, situación o estímulo

concreto. Tiene una duración limitada en el tiempo. Cuando estos estados emocionales se

prolongan más en el tiempo (horas, días, temporadas), se habla de “Estado Anímico”. Para

simplificar, se puede clasificar en “Positivos” (Cuando la experiencia subjetiva es agradable,

satisfactoria, relajante, placentera) y “Negativos” (La experiencia subjetiva es de malestar,

sufrimiento, tensión, desagrado) [57].

13

Page 15: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

Los estados de ánimo surgen como respuesta a nuestras experiencias con el

entorno (las situaciones cotidianas, noticias recibidas, la actuación de las personas con las

que se relacionan, las consecuencias de sus actos), y pueden estar influidos por otras

variables: La hora del día, el clima, la época del año, la alimentación, el estado de salud, la

calidad del sueño, el nivel de energía-cansancio. Éstas son variables que pueden ejercer

algún efecto en las personas [57].

Hay pocas vivencias cotidianas que le generen a una persona una respuesta

emocional neutra; las experiencias suelen provocar respuestas emocionales muy diversas,

acordes con la situación (o con nuestro modo de interpretar la situación): enfado, asco,

sorpresa, relajación, alegría, tensión, ilusión, impaciencia. Y esto engloba todos los matices

y definiciones que cada persona pueda hacer [57].

La respuesta emocional de cada persona ante un mismo hecho es muy subjetiva,

pues depende de varios componentes: la respuesta fisiológica (ej. tensión muscular, presión

en el pecho), el componente cognitivo (la manera de interpretar los hechos y nuestras

propias reacciones ante los hechos) y el componente motor (una determinada manera de

actuar ante esos hechos). Según esto, los estados emocionales o anímicos de una persona

pueden reflejarse a través de lo que dicha persona hace o dice, a través de su lenguaje

verbal y no verbal, una sonrisa, una mueca tensa, un comentario pesimista, una lágrima, un

discurso agresivo, un exceso de actividad motora. Todos ellos le funcionan a la persona o al

resto como señales que ayudan a comprender su estado de ánimo o el del otro y a elegir el

mejor comportamiento en consecuencia. Solo hay que saber detectarlos e “interpretarlos”.

La Inteligencia Emocional [1] hace referencia a un conjunto de habilidades importantes a la

hora de manejar adecuadamente las emociones propias o las de otros. Estas habilidades

engloban:

● Detección de la emoción

● Comprensión de la misma (saber interpretarla)

● Expresión adecuada (saber comunicarla)

● Actuación para su regulación (saber cuál es la mejor manera de proceder ante

dicha emoción).

Todas ellas son habilidades que se pueden aprender y ejercitar tanto a nivel

individual como el terreno social y ello favorecerá un comportamiento más eficaz en las

relaciones interpersonales de una persona y en la regulación de sus propios estados. Esto

ayuda a que una persona se conozca mejor: a conocer lo que le afecta, de qué modo le

afecta y cómo se comporta cuando se siente de una determinada manera. El conocimiento

14

Page 16: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

sobre las emociones y sus causas permite a una persona ejercer un mejor control sobre

ellas[57].

El primer paso para comprender nuestras emociones es aprender a detectarlas y

localizar qué las genera. Sólo aprendiendo a detectar cuando una persona se siente bien o

mal se podrá conocer también cómo volver a generar esas emociones (en caso de que

sean positivas) o qué hacer para prevenirlas o modificarlas (en caso de que sean

negativas). Para ello, es posible realizar un “autorregistro”, que busca asociar las emociones

con sus antecedentes [57].

Una vez recopilada dicha información, es posible establecer relaciones sobre los

sucesos y actividades y las emociones que provocan [57].

2.2 Emociones positivas

El estudio de las emociones positivas es controvertido y complejo; al mismo tiempo,

es apasionante en cuanto integra los dominios biológicos, cognitivos y sociales del

desarrollo humano. Sin embargo, hoy día se le ha descuidado por el énfasis excesivo

puesto en su contraparte.

Las emociones positivas son parte de la naturaleza humana y se han convertido en

una clave indiscutible para la consecución de las relaciones sociales. Son creadoras de

experiencias positivas, capaces de promover el disfrute y la gratificación [2], de desarrollar

la creatividad y de aumentar la satisfacción y el compromiso [3] [4], lo que en general se

traduce en una espiral ascendente de transformaciones en la vida de las personas.

Las emociones positivas son aquellas en las que predomina la valencia del placer o

bienestar [5]; tienen una duración temporal y movilizan escasos recursos para su

afrontamiento; además, permiten cultivar las fortalezas y virtudes personales, aspectos

necesarios y que conducen a la felicidad. Asimismo, son estados subjetivos que la persona

experimenta en razón de sus circunstancias, por lo que son personales e involucran

sentimientos. Son descritas como reacciones breves que típicamente se experimentan

cuando sucede algo que es significativo para la persona.

Las emociones positivas tienen un objetivo fundamental en la evolución, en cuanto

que amplían los recursos intelectuales, físicos y sociales de los individuos, los hacen más

perdurables y acrecentar las reservas a las que se puede recurrir cuando se presentan

amenazas u oportunidades; asimismo, incrementan los patrones para actuar en ciertas

situaciones mediante la optimización de los propios recursos personales en el nivel físico,

psicológico y social [4].

15

Page 17: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

Una herramienta afín de las emociones positivas es el abanico de expresiones

faciales que las acompañan, aunque es importante resaltar que la gesticulación para la

expresión de las emociones negativas es más amplia y clara que para las positivas; en

efecto, resulta más fácil reconocer emociones y sentimientos relacionados con la tristeza, la

melancolía o el miedo, que los de alegría, satisfacción o placer. En este sentido, algunas de

las emociones positivas más comunes son la felicidad, el amor y el humor.

El proceso emocional se desencadena por la percepción de condiciones internas y

externas que dan lugar a la evaluación valorativa, para posteriormente producir la

experiencia por medio de la expresión corporal o un lenguaje no verbal, convirtiéndolas así

en un fenómeno observable. Así, es posible reconocer si existe una sensación agradable y

se precisa de una emoción positiva, a la que además se le otorga el valor de algo bueno.

Se proponen cuatro tipos de emociones positivas [3]: la alegría, el interés, el amor y

la satisfacción. Mientras que otros autores incluyen al optimismo como una emoción positiva

básica [2], o conforman una tercera línea teórica y proponen un abordaje más sistemático y

empírico que incluya aspectos cognitivos y biológicos [6], sugiriendo la existencia de dos

tipos de emociones positivas distintos: alegría y amor. Por último, hay quienes emplean el

término de “fluidez” [7] como aquel estado emocional positivo en el que la persona se halla

totalmente concentrada y abstraída por la tarea, la que le produce placer y gracias a la cual

pierde la noción del tiempo. [58]

2.3 Utilidad de las emociones positivas

Experimentar emociones positivas es una actividad específica de la naturaleza

humana debido a que contribuye en la calidad de vida de las personas [3]. Lo anterior lleva

a distinguir una doble importancia de las emociones positivas: por un lado, como detonante

para el bienestar; por el otro, como un medio para conseguir un crecimiento psicológico

personal y duradero.

Las emociones positivas optimizan la salud, el bienestar subjetivo y la resiliencia

psicológica, favoreciendo un razonamiento eficiente, flexible y creativo. Un razonamiento de

este tipo es clave para el desarrollo de un aprendizaje significativo. Así es como las

emociones positivas ayudan a otorgar sentido y significado positivo a las circunstancias

cambiantes y adversas [8].

Una teoría que sustenta lo anterior es la llamada “teoría de ampliación y

construcción de las emociones positivas”, la cual sostiene que emociones como la alegría,

el entusiasmo, la satisfacción y demás comparten la finalidad de ampliar los pensamientos y

16

Page 18: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

acciones de las personas [3] [4], además de que el cultivo de aquellas puede servir para la

consecución de las metas de vida que las personas se plantean, así como para la búsqueda

del bienestar.

Lo anterior ha sido sometido a experimentaciones que demuestran cómo las

emociones positivas producen patrones de pensamiento novedosos, flexibles, inclusivos y

creativos; de igual modo, amplían el repertorio de pensamientos y acciones de la persona

que resultan de la primera –y central– premisa de esta teoría. Adicionalmente, la teoría de

ampliación y construcción propone que experimentar emociones positivas permite construir

y reforzar los recursos con los que cuenta la persona (Figura 2.3.a), ya sea de forma física,

intelectual y social, creando así una espiral ascendente que transforma a la persona. Incluso

hay evidencia empírica que sugiere que dicha espiral ascendente predice con gran

efectividad el sentido de bienestar de las personas [8]. [58]

Figura 3. Efectos de las emociones positivas

2.4 Beneficio de las emociones positivas

Una de las principales ventajas del cultivo de las emociones positivas radica en que

ejercen una gran influencia sobre el procesamiento intelectual, la resolución de problemas,

el razonamiento y las habilidades sociales [9].

Las investigaciones realizadas por varios autores han demostrado que el

experimentar emociones positivas está relacionado con la existencia de una organización

cognitiva más abierta, flexible y compleja [10] [11] [12] [13] [14].

En esta misma línea, otras investigaciones hallaron que los estados afectivos

positivos facilitan la solución creativa de diversos problemas [15]. Además, ayudan a

fortalecer ante la adversidad en cuanto que promueven la resiliencia [15] y protegen contra

17

Page 19: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

la depresión, pues se transforman en un ingrediente activo esencial que incrementa los

recursos psicológicos de afrontamiento de la persona [16].

Por otro lado, distintas intervenciones psicológicas han puesto de relieve la

importancia que tienen las emociones positivas frente a algunas emociones negativas

(miedo, enojo y tristeza); así, la teoría de ampliación y construcción explica que estados

emocionales como la alegría o el interés combaten los efectos de las emociones negativas

que impiden el crecimiento psicológico o el mejoramiento de la salud física o mental [17]

[18]. Lo anterior también significa que mientras que las emociones negativas limitan el

repertorio de pensamiento-acción de una persona, las positivas lo amplían. Además, estas

mismas se vuelven herramientas terapéuticas sumamente valiosas, entre las que podemos

contar las técnicas de relajación, las terapias del comportamiento y las cognitivas [19].

Los estados emocionales positivos permiten a los individuos considerar y elaborar

un plan acerca de sus resultados futuros [20], mientras que los negativos hacen posible

responder a los eventos inmediatos [21]. Las personas que experimentan emociones

positivas en un momento determinado muestran una ventaja cognitiva en relación a la

experimentación de estados emocionales negativos en cuanto que logran plantearse

nuevas metas que anteriormente no habían podido considerar [15].

Como consecuencia de que las emociones positivas son algo más que la mera

ausencia de emociones negativas [15], es importante enfatizar que las primeras son útiles

en el campo de la salud en tanto que previenen enfermedades y reducen la ansiedad. Las

emociones positivas hacen desaparecer los efectos fisiológicos que anteriormente habían

sido generados por las emociones negativas [16].

Las personas que se consideran felices asimilan mejor los riesgos a la salud, y por

tanto, experimentan un menor desgaste del sistema cardiovascular [17] y, en consecuencia,

gozan de una mejor salud.

Adicionalmente, el desarrollo de emociones positivas está relacionado con la

disminución del estrés que es posible registrar en el sistema nervioso vegetativo y en el

cardiocirculatorio. Por último y a este respecto, se ha evidenciado que quien experimenta

alegría a lo largo del día, con mayor probabilidad la tendrá el día siguiente. [58]

2.5 Lo que depende de la voluntad

Las cosas que una persona hace o deja de hacer tienen consecuencias

emocionales. Un persona tenderá a buscar aquellas actividades o lugares donde disfrutó de

emociones positivas y en las que se sintió bien, pero no siempre se actúa así. Esto suele

18

Page 20: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

suceder porque la persona se ha habituado o no es conscientes de lo que quiere, o porque

a veces se pierde todo un día (e incluso toda la vida) pensando en lo que puede que le

suceda mañana, o pierde el día rumiando las cosas que le pasaron ayer. En cualquier caso,

al hacerlo ha perdido las oportunidades de disfrutar hoy.

En primer lugar la persona debe saber que las emociones positivas pueden provenir

de diferentes fuentes, tales como la posesión (por ejemplo, poseer un smartphone que nos

permita estar en contacto con nuestros seres queridos), o el significado que le brinda la

posesión (por ejemplo, tener el último modelo de smartphone y presumir de ello). Otra

fuente, más interesante que la anterior, es la realización de actividades, tanto por el hecho

de realizarlas como por la capacidad que ha adquirido para realizar la actividad de

determinada manera (por ejemplo, practicar rafting en los rápidos de un río). Una fuente

más de emociones positivas es el “yo” (por ejemplo, la satisfacción y el orgullo de realizar

una actividad). Y, por último, la fuente más importante de emociones positivas, es el

estímulo de las demás personas. El siguiente cuadro detalla un resumen de los diferentes

focos emocionales que son fuente de emociones positivas. [59]

Foco Fuente

Cosas y su significado Emociones positivas experimentadas en respuesta a un objeto o a los significados a los que lo asociamos.

Actividades Emociones positivas experimentadas en respuesta a una actividad y a las habilidades para su realización.

Yo Emociones positivas experimentadas en respuesta a cambios en nosotros mismos.

Otras personas Emociones positivas evocadas por los efectos de las actividades de otras personas.

Tabla 1: Fuente que nos proporcionan emociones positivas [59] 2.6 Valoración de las emociones positivas

La valoración de felicidad y satisfacción ha tomado relevancia en distintos ámbitos

cotidianos. Un ejemplo de la importancia de esta información son las encuestas de

satisfacción, ya sean a un cliente para brindar un mejor servicio o mejorar un producto,

satisfacción de un paciente, satisfacción laboral, como también la satisfacción personal.

Se ha vuelto relevante, al punto, que se generó un indicador que mide la calidad de

vida en términos más holísticos y psicológicos (FNB: felicidad nacional bruta creada por

19

Page 21: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

Jigme Singye Wangchuck en 1972). Sin embargo, incluso este indicador, se enfrenta a una

gran dificultad, medir algo tan subjetivo como la felicidad y el bienestar.

La felicidad es un tema complejo, en efecto, pero en las últimas décadas se han

desarrollado teorías serias y métodos de medida fiables que permiten esgrimir las críticas.

Investigar acerca de la felicidad posee la dificultad que, a diferencia de otros temas, por

ejemplo, la física cuántica o la teoría de la relatividad; cada individuo tiene sus propios

argumentos; la felicidad es una opción individual que tiene que ver con los valores que cada

persona reconoce o acepta. Indudablemente, esto dificulta la divulgación de conocimientos,

ya que hay que batallar con los prejuicios y teorías del oyente. Pero visto desde otra

perspectiva, el hecho de que cada una de las personas crea saber que es la felicidad, indica

que es un tema importante y en el que cierta forma cada uno de nosotros, nos

consideramos expertos.

La felicidad como concepto ha sido abordado desde muchas perspectivas, tales

como la filosófica y la artística. La perspectiva científica se caracteriza por ofrecer una

definición operacional de la felicidad que, aunque no comprende toda la complejidad que

otras perspectivas consideran sobre este concepto, sí permite su medición. En palabras

simples, la felicidad es definida como el grado con que una persona aprecia la totalidad de

su vida presente de forma positiva y experimenta afectos de tipo placentero. Esta definición

tiene implicancias importantes para la medición de la felicidad. Si se reconoce que se trata

de un fenómeno interior a cada persona, entonces parece más adecuado medirla con

auto-reportes que con evaluaciones de expertos o pares. Y si la felicidad tiene grados,

entonces las mediciones deberían reconocer distintos niveles y no clasificar a las personas

simplemente como felices o infelices. La medición de la felicidad también debería anclarse

en el presente, remitir a la vida en general e incorporar tanto pensamientos como

sentimientos.

Entre los distintos métodos que se han desarrollado y evaluado, lo más frecuente es

recurrir a preguntas sencillas y generales para evaluar la felicidad global y la satisfacción

con la vida presente. También es frecuente la utilización de preguntas sobre afectos

positivos y negativos, los cuales pueden ser analizados por separado o resumidos en una

escala de balance afectivo.

Además del conjunto de preguntas mínimas para medir la felicidad existen otras

mediciones internacionalmente aceptadas que podrían implementarse de forma

complementaria. Entre estas mediciones se incluye la escalera de felicidad de Gallup,

20

Page 22: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

índices específicos creados por investigadores reconocidos en el área, preguntas por

satisfacción en áreas específicas de la vida y preguntas por satisfacción instantánea. Ésta

última puede ser medida con técnicas de muestreo experiencial o de reconstrucción del día.

En el primer caso se utiliza el apoyo de tecnología para obtener informes frecuentes e

inmediatos de las personas en su entorno cotidiano, mientras que en el segundo se llena

una agenda correspondiente a los eventos del día anterior, en donde las personas reportan

su experiencia en períodos específicos del día.

Hay varias escalas de felicidad como se describen en el Apéndice A.

2.7 Resumen

En este capítulo se presentó el estado de ánimo como una consecuencia directa de

las emociones que viven las personas, puntualmente como las emociones positivas afectan

a las personas y la valoración de las mismas para un estado emocional saludable.

21

Page 23: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

3 Agentes de asistencia

Los sistemas de recomendación estudian las preferencias y gustos de los usuarios

con el objetivo de recomendarles ítems a comprar o examinar que factiblemente sean de su

interés. Estos sistemas se han convertido en un componente esencial, por ejemplo, en los

sistemas de comercio electrónico debido a que personalizan las ofertas maximizando de

este modo la probabilidad de venta.

Estas recomendaciones pueden formarse empleando diferentes técnicas y

enfoques, particularmente la tecnología de agentes inteligentes específicamente los agentes

de interfaz o personales puede ser utilizada para modelar este tipo de sistemas.

3.1 Agentes de Interfaz

Debido a que no existe en la comunidad de Inteligencia Artificial una definición

formal del concepto “Agente”, una manera conceptual de definirla es como un sistema de

software (o hardware) que tiene las siguientes propiedades [22]:

• Autonomía: operan sin la intervención directa de humanos u otros agentes,

teniendo control sobre sus acciones y estado interno.

• Sociabilidad: Interactúan con humanos y posiblemente con otros agentes, mediante

algún protocolo de comunicación.

• Reactividad: Responden ante eventos, tomando sus propias decisiones, incluso

modificando su manera de operar, siempre teniendo en cuenta su razón de ser (objetivo).

Estos eventos están ligados al ambiente donde operan, el cual puede ser el mundo físico,

un usuario a través de una interfaz gráfica, otros agentes, Internet, o quizá una combinación

de estos.

• Pro-actividad: No actúan únicamente en respuesta a su ambiente, son capaces

también tomar la iniciativa.

Dentro del espectro de los agentes, se denominan “agentes de interfaz” o “agentes

personales” a aquellos que proveen asistencia activa al usuario en sus tareas

computacionales [23].

Los agentes de interfaz fueron concebidos para asistir de manera personalizada a

los usuarios en las tareas realizadas sobre una aplicación. Son capaces de aprender los

intereses, preferencias, prioridades, objetivos y necesidades de los usuarios, a fin de

22

Page 24: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

brindarle asistencia proactiva y reactiva en el entorno de una aplicación computacional,

incrementando de este modo la productividad de la misma.

Así como una persona que brinda asistencia a otra, aprende a ser más competente

en su trabajo, un agente de interfaz a medida que interactúa con el usuario, aprende de él y

puede volverse cada vez más competente. El agente capta información de las preferencias

del usuario a través de diversas fuentes:

• Observación: Continuamente observando la interacción del usuario con la

aplicación. El agente puede monitorear las actividades del usuario, mantener registro de las

acciones realizadas durante un periodo de tiempo, encontrar regularidades, patrones

recurrentes, y ofrecer asistencia de acuerdo a lo observado.

• Feedback: El feedback del usuario puede ser implícito o explícito. El feedback

implícito ocurre por ejemplo cuando el usuario ignora una sugerencia del agente y toma otro

curso de acción. A su vez, el usuario puede proporcionar también su feedback

explícitamente (ya sea negativo o positivo) evaluando la asistencia dada por el agente.

• Instrucciones: Una tercera fuente de aprendizaje son las instrucciones dadas

explícitamente por el usuario, este puede entrenar al agente dándole ejemplos hipotéticos

de situaciones y diciéndole que es lo que debe realizar en tal caso.

• Fuentes Externas: Finalmente, puede también adquirir conocimiento de las tareas o

sugerencias realizadas por otros agentes que asistan a otros usuarios dentro del mismo

marco de trabajo.

Figura 4: Interacción usuario-agente de interfaz (adaptado de [23])

23

Page 25: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

Particularmente, un agente personal puede ser desarrollado para proveer

recomendaciones, resumir y filtrar información, o incluso contemplar personas con gustos

similares (agentes sociales). Los sistemas de recomendación son una clase específica de

agentes sociales [45]. La manera de proceder de un sistema de recomendación es

comparable a la de un agente de información debido a que el objetivo de ambos es

descubrir información que sea interesante al usuario.

En los sistemas de recomendación, la asistencia a los usuarios se basa

fundamentalmente en la información capturada a través de la observación del

comportamiento de los usuarios en la aplicación. De esta manera, el agente aprende las

preferencias, intereses y hábitos de los usuarios, que son registrados en su perfil.

Los agentes de interfaz han sido aplicados en diversidad de dominios incluyendo

aplicaciones industriales, aplicaciones comerciales, comercio electrónico, y monitoreo. En

síntesis, los agentes de interfaz permiten personalizar una aplicación para un usuario en

particular, con el objetivo de facilitar las tareas del usuario sobre la aplicación.

En nuestro caso de estudio, un sistema de recomendación de actividades para el

usuario con el fin de mejorar su estado anímico, el agente debe ser capaz de estudiar las

actividades que al usuario le agradan hacer, con su comportamiento histórico y el feedback

provisto (recomendaciones aceptadas o rechazadas), con el fin de sugerir actividades a

realizar para que sea más feliz.

3.2 Sistemas de Recomendación

El término “sistema de recomendación” caracteriza a cualquier sistema que produce

como salida recomendaciones individualizadas o a aquellos que guían al usuario de una

manera personalizada a través de una aplicación o un sistema.

Un sistema de recomendación mantiene una representación de los gustos y

preferencias de los usuarios con el propósito de sugerir ítems que sean de su interés.

Existen dos entidades básicas en cualquier sistema de recomendaciones, el usuario

(a veces mencionado como cliente) y el ítem (mencionado también como producto u objeto).

Un sistema de recomendación tiene dos objetivos principales: i) sugerir ítems en los que el

usuario se espera que esté interesado, y ii) predecir la utilidad de un ítem específico para un

usuario en particular.

Los sistemas de recomendación difieren de otros sistemas de manejo de

información en el hecho de que las recomendaciones se ajustan a las necesidades

individuales de cada usuario. En un sistema de recomendación, las recomendaciones son

24

Page 26: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

obtenidas personalizadamente en base al estudio de la interacción entre el usuario y la

aplicación. Para lograr su propósito, los sistemas de recomendación mantienen

conocimiento de las preferencias de los usuarios en lo que se denomina perfil de usuario. El

éxito de un sistema recomendador se centra en el grado de concordancia que pueda

obtener entre la representación de las preferencias del usuario y las verdaderas

preferencias del usuario [24].

3.2.1 Técnicas de Recomendación

Si bien dentro de las técnicas propuestas para realizar sistemas de recomendación

se destacan el filtrado colaborativo y las recomendaciones basadas en contenido, existen

otros enfoques para el desarrollo de estos sistemas, tales como: las recomendaciones

basadas en conocimiento, basadas en funciones de utilidad o en datos demográficos. En

esta sección se detallan los aspectos principales de estas técnicas, junto a los enfoques

híbridos que han surgido.

3.2.1.1 Recomendación Basada en Contenido

Las recomendaciones basadas en contenido [25] [26], son una consecuencia y

continuación de las investigaciones de filtrado de información realizadas por [27]. En estos

sistemas los ítems interesantes son definidos mediante sus características asociadas. Un

sistema basado en contenido aprende los intereses del usuario basándose en las

características de los ítems que el usuario ha adquirido o se ha interesado en el pasado,

con el objetivo de recomendar ítems similares que puedan resultar interesantes en el futuro.

Por ejemplo, si se realiza una actividad con características similares (deporte: salir a correr,

deporte andar en bicicleta, en cierto sentido se las podrían considerar similares, hay una

clara tendencia del usuario a hacer deportes).

Figura 5: Perfil de usuario basado en el contenido

25

Page 27: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

Dado que esta técnica trabaja sugiriendo al usuario ítems que sean similares a los

previamente contemplados en el pasado, el perfil debe ser capaz de mantener

representaciones de tales ítems. Por ende, la representación del perfil se encuentra ligada a

las características particulares de los ítems de cada dominio.

Ventajas respecto a otros enfoques:

• No agrega esfuerzo extra al usuario, es decir, el usuario no tiene que proveer

opiniones acerca de los ítems. Simplemente se estudian las preferencias y se sacan

conjeturas respecto a la similitud de un ítem con tales preferencias (teniendo en cuenta la

descripción y características de los ítems).

• Debido a que la información se encuentra en el ítem, no es necesario contar con la

opinión o ratings de otros usuarios para efectuar recomendaciones.

Sin embargo esta técnica presenta algunas desventajas:

• Limitación respecto a la estructura del ítem: Este tipo de enfoque tiene el problema

de encontrarse limitado por las características que están explícitamente asociadas con los

ítems a recomendar. Esto hace que las recomendaciones queden a merced de la

información descriptiva disponible.

• Análisis de contenido limitado: Si existe más de un ítem con las mismas

características, estos no pueden ser diferenciados con respecto a su calidad. Por ejemplo,

en el caso de dos actividades con características similares, no puede evaluarse cuál de las

dos actividades gustará más.

• Tendencia a recomendar ítems similares (portfolio effect): Tiende a realizar

sugerencias de ítems muy similares a los que el usuario ha adquirido previamente.

Igualmente en este punto deben contemplarse las excepciones relativas al dominio de

aplicación del recomendador, en nuestro dominio, puede pretenderse recomendar

actividades similares a los que el usuario ha realizado anteriormente.

• Problema de usuario nuevo: Al incorporarse un nuevo usuario al sistema, este

deberá adquirir (o contemplar) un número suficiente de ítems antes de que el sistema tenga

suficientes evidencias como para poder inferir las preferencias y realizar recomendaciones

confiables.

Varios proyectos de investigación han utilizado únicamente filtrado basado en

contenido para realizar las recomendaciones. Entre ellos se encuentran: Woodruff [28] el

cual es un sistema de recomendación de material de lectura digital; Krakatoa [29], un

26

Page 28: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

periódico personalizado, donde el perfil de usuario es creado en base a un conjunto de

palabras clave y ratings capturados tanto explícitamente como implícitamente. Para

identificar el tema del artículo se hace un análisis de frecuencia para extraer las palabras

clave. Si a un usuario le gusta un documento, los pesos de las palabras extraídas se

añaden a los pesos de las palabras correspondientes en el perfil del usuario. Este proceso

es conocido como retroalimentación de relevancia [30].

3.2.1.2 Recomendación Colaborativa

Estos sistemas se basan en las opiniones de otros usuarios y sugieren o predicen la

utilidad de un cierto ítem para un usuario activo en base a esas opiniones [31].

Para cada usuario se crea un conjunto de "vecinos cercanos", usuarios cuyas

evaluaciones anteriores tienen grandes semejanzas a las del usuario en cuestión. Los

resultados para los elementos no calificados se predicen en base a la combinación de

puntos (scores) conocidos de los vecinos cercanos.

Figura 6: Vecinos cercanos con preferencias similares

Un perfil de usuario típico en un sistema colaborativo consiste en un vector de ítems

y sus ratings, el que será continuamente actualizado a medida que el usuario interactúa con

el sistema. Los ratings de los usuarios pueden obtenerse tanto explícitamente como

también puede darse el caso en el que la valoración de un ítem sea extraída implícitamente,

es decir se extrae indirectamente infiriendo a través del comportamiento del usuario.

Varias técnicas han sido propuestas para la creación de estos perfiles, incluyendo

redes Bayesianas [43], y técnicas de clustering, las cuales identifican grupos de usuarios

con preferencias similares.

Al igual que en el caso de recomendaciones basadas en contenido, esta técnica

crea un modelo a largo plazo, los perfiles de usuario son modelos que deben ser

27

Page 29: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

actualizados a medida que aumentan las evidencias acerca de las preferencias del usuario

a través de sus ratings.

Varios son los factores que hacen que el filtrado colaborativo sea una buena técnica

utilizada en los sistemas de recomendación:

• Es completamente independiente de la representación de los ítems a recomendar y

logra buen desempeño en dominios de ítems complejos tales como música, películas o

gráficos, donde la variación de gustos es responsable de la variación de las preferencias

([32] denominan a esto como “correlación persona-persona”).

• No necesita conocimiento del dominio para realizar recomendaciones. Los

sistemas colaborativos confían sólo en los ratings de los usuarios y estos son usados para

recomendar ítems sin ningún tipo de dato descriptivo.

• El gran poder del enfoque colaborativo con respecto a los enfoques basados en

contenido es su capacidad de brindar a los usuarios recomendaciones inesperadas

(recomendaciones que no se darían si se estudiara solo los datos históricos del usuario).

Puede darse el caso que exista un usuarios que le de placer hacer actividades al aire libre

(picnic, ir a pescar) y que también disfrute de hacer deportes, pero en un sistema

recomendador basado en contenido entrenado sobre las preferencias de un usuario que ha

ido a pescar y hacer picnic, no será capaz de sugerir actividades para que realice deporte,

ya que no tienen nada en común estos tipos distintos de actividades. Solo mirando más allá

de las preferencias individuales aprendidas podrán realizarse otras sugerencias que puedan

ser del interés del usuario.

Sin embargo, esta técnica presenta algunas desventajas:

• Problema de arranque (ramp-up problem) [33], [34]: Este término en realidad se

refiere a dos problemas distintos, pero relacionados.

a) Problema de un nuevo usuario: Debido a que las recomendaciones son formadas

en base a la comparación de ratings entre un usuario objetivo y el resto de los usuarios, a

los enfoques basados únicamente en acumulación de ratings se les dificulta categorizar a

un usuario nuevo o a un usuario con poca cantidad de ratings..

b) Problema de un nuevo ítem: Cuando un nuevo ítem es agregado a la base de

datos no existe manera que sea recomendado a un usuario hasta que no se tenga más

información a través de otro usuario. Si un ítem no ha sido contemplado entonces no puede

ser recomendado, esto se debe a que no existen evaluaciones de los usuarios sobre el

ítem. Este problema se da particularmente en dominios de artículos periodísticos o noticias

donde existe un flujo continuo de entrada de nuevos ítems y cada usuario califica solamente

28

Page 30: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

algunos. Esto hace necesario a los sistemas recomendadores idear algún incentivo que

estimule a los usuarios a proveer sus ratings.

Para intentar solventar este problema, los sistemas de filtrado colaborativo utilizan

alguna estrategia de recomendación inicial, ya sea recomendación basada en contenido, o

estereotipos. Esto conlleva al desarrollo de enfoques de recomendación híbridos.

• Problema de ratings dispersos (sparsity problem) [36]: Los sistemas

recomendadores colaborativos están sujetos a la superposición de ratings entre los usuarios

(las recomendaciones a un usuario dependen de los ratings de los demás usuarios) lo cual

dificulta el desempeño de la técnica cuando el espacio de ratings es escaso. Si el conjunto

de ítems cambia muy rápidamente, entonces los ratings viejos serán de poco valor a los

usuarios nuevos. Si el conjunto de ítems es grande y los intereses del usuario apenas

varían, entonces la probabilidad de coincidir con otros usuarios será menor.

• Escalabilidad (Scalability) [35]: Un problema importante en sistemas de filtrado

colaborativo se presenta cuando crece el número de ítems o de usuarios en el sistema, lo

cual conlleva a incrementos en los cálculos para determinar el conjunto de usuarios

similares.

• Usuarios con gustos inusuales (the gray sheep problem) [34] [37]: Los sistemas de

filtrado colaborativo logran su mejor desempeño cuando el usuario pertenece a un grupo

con muchos vecinos de similares preferencias. De darse el caso, que un usuario tenga

gustos inusuales se tendrá dificultad para encontrar otros usuarios con gustos similares y de

este modo las recomendaciones pueden volverse pobres.

• Tendencia a recomendar ítems similares (The portfolio effect) [38]: Existen

dominios donde es deseable no recomendar un ítem que el usuario ya haya contemplado,

como por ejemplo noticias que el usuario haya leído.

• Otro problema que afecta al filtrado colaborativo es que si un usuario no utiliza

regularmente el sistema y los gustos de este han variado, el sistema tenderá a seguir

recomendando ítems en base a las preferencias del pasado.

Algunos de los sistemas más importantes utilizan esta técnica, GroupLens [39] es un

recomendador de noticias en el que los usuarios califican las noticias en una escala de 1 a

5, posteriormente se generan grupos de usuarios evaluando su similitud. Este es

considerado como el primer sistema que ha empleado exitosamente filtrado colaborativo.

Ringo [40] es un sistema en el que los usuarios brindan explícitamente sus ratings

para obtener recomendaciones de CDs de audio. Este sistema compara los perfiles (ratings)

para encontrar usuarios con gustos musicales similares.

29

Page 31: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

Otros ejemplos de recomendadores colaborativos son el sistema de recomendación

de libros Amazon.com y recomendador de películas MovieLens del grupo Grouplens.

3.2.1.3 Recomendación Basadas en Conocimiento

Las recomendaciones basadas en conocimiento intentan sugerir ítems mediante la

inferencia de las necesidades y preferencias del usuario. En algún sentido todas las

técnicas pueden ser descritas como que realizan algún tipo de inferencia. Pero este enfoque

se distingue en el hecho de que tiene conocimiento funcional aparte del conocimiento sobre

los objetos a recomendar [34]. El conocimiento funcional es conocimiento acerca de cómo

un ítem particular se ajusta a las necesidades del usuario, por consiguiente se puede

razonar sobre la relación entre una necesidad y una posible recomendación.

El sistema debe ser capaz de poder realizar el mapeo entre las necesidades del

usuario y los ítems a recomendar.

Estos sistemas tienen la ventaja de no requerir de ratings para realizar las

recomendaciones. No obstante, tiene el problema de necesitar significativo esfuerzo para

construir y mantener los modelos.

El perfil de usuario puede ser cualquier clase de estructura de conocimiento que

soporte inferencias del tipo que se necesiten. El conocimiento usado por un recomendador

basado en conocimiento puede tomar muchas formas. Sistemas como Entree [41] utilizan

conocimiento del arte culinario para inferir similitud entre restaurantes en base a las

preferencias introducidas en la consulta del usuario.

3.2.1.4 Sistemas de Recomendación Demográficos

Los sistemas de recomendación demográficos realizan recomendaciones en base a

la categorización de los usuarios a través de sus atributos personales tales como edad,

ocupación y estado civil [44].

La principal ventaja de este enfoque es que no crea un modelo de usuario a largo

plazo como lo hacen las técnicas colaborativas o basadas en contenido. La información

sobre las preferencias del usuario es inferida de acuerdo a la clase demográfica a la que

pertenezca el cliente. Esta particularidad hace que esta técnica no cuente con el problema

de un “nuevo usuario”.

30

Page 32: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

3.2.1.5 Sistemas de Recomendación Basados en Utilidades

Al igual que los sistemas de recomendación demográficos, los sistemas

recomendadores basados en utilidades no son sistemas de aprendizaje a largo plazo en los

que se trate de construir generalizaciones acerca de sus usuarios. Este tipo de sistemas

basan sus sugerencias en función de la evaluación de la concordancia entre las

necesidades del usuario y las opciones disponibles.

Este tipo de enfoque realiza las sugerencias mediante el cómputo de la utilidad de

un ítem con respecto al usuario. Claro está que el problema es cómo crear tal función de

utilidad para el usuario [41].

Una ventaja es que pueden contemplarse dentro de la función de utilidad atributos

no relacionados con el producto, tales como confiabilidad del proveedor y disponibilidad del

producto, haciendo posible de este modo por ejemplo realizar cambios de precio de acuerdo

a si el cliente necesita la entrega inmediatamente.

Si bien los sistemas basados en utilidades son flexibles, por otra parte tienen fallas.

El usuario debe construir o completar una función de preferencias, y por consiguiente debe

pesar la relevancia de cada una de las posibles características. A menudo esto crea una

interacción que es abrumadora para el usuario. Además, los cambios importantes en el

espacio de productos en el que se maneja el cliente, implican un completo reajuste de la

función de utilidad.

3.2.2 Captura de las Preferencias del Usuario

Las preferencias o intereses de los usuarios son mapeadas en lo que se denomina

perfil de usuari o. Estos perfiles forman la base con la cual se generan las recomendaciones

personalizadas de cualquier sistema de recomendación.

Los algoritmos de aprendizaje del perfil deben lidiar con la tarea de reflejar los

continuos cambios que puedan suscitarse en las preferencias de los clientes. Estos

algoritmos pueden extraer conocimiento sobre las preferencias del usuario explícitamente,

implícitamente o mediante una combinación de ambos enfoques [42].

Técnicas explícitas de construcción de perfiles requieren que el usuario sea quien

especifique cuales son sus preferencias y gustos, para lo cual se utilizan técnicas como

llenado de formularios o encuestas, autocategorización del usuario en alguna taxonomía

predefinida o calificación de los ítems (frecuentemente encontrado en enfoques

colaborativos).

31

Page 33: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

Por otra parte, en las técnicas implícitas no se requiere cooperación por parte del

usuario para obtener un esquema de sus preferencias. Este enfoque utiliza técnicas de

machine learning, data mining, KDD (knowledge discovery in databases) o de recuperación

de información para construir un modelo de las preferencias del usuario.

Las técnicas explícitas proveen una mayor certeza sobre las preferencias del usuario

a costa de una engorrosa actualización del perfil por parte del usuario, lo cual puede resultar

tedioso y en el caso extremo puede llegar a suprimir su interacción con la aplicación.

Contrariamente, las técnicas implícitas cuentan con la ventaja de liberar al usuario de la

tediosa tarea de mantener actualizado su perfil a costa de un menor desempeño en las

inferencias sobre sus gustos.

3.2.3 Dominios de Aplicación de los Sistemas de Recomendación

Los sistemas de recomendación han llegado para quedarse. Han sido y están siendo

utilizados en cada vez más campos de aplicación. Abarcando desde los más tradicionales

(películas, libros, música) hasta otros más sofisticados (destinos turísticos, comercio

electrónico, recorridos en bicicleta como Cyclopath, etc).

Figura 7: Los sistemas de recomendación llegaron para quedarse

La mayor parte de los sistemas de recomendación se encuentran implantados en

sistemas de venta, donde el objetivo es tentar al usuario a comprar, es decir se utiliza como

estrategia de marketing. De este modo se pueden desarrollar productos que se adapten a

las características particulares de los clientes.

También existen otros sistemas que no son de venta directa. Pero sí que poseen

una masa crítica de gente, y obtienen generan ingresos monetarios haciendo publicidad en

32

Page 34: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

la página. Tal es el caso de YouTube. Youtube no cobra suscripción, y el usuario percibe

que el servicio es gratuito. Lo que en realidad hay de fondo es un sistema publicitario,

donde cada determinada cantidad de tiempo y dependiendo de los videos que se desean

ver. Se pasa un corto publicitario, orientado al perfil del usuario que está utilizando la

aplicación. Donde se lo obliga a ver determinados segundos, para luego poder cancelar el

video si así lo deseara el usuario.

Otro caso muy conocido es la plataforma de videos on-line de Netflix. Netflix no solo

que gasta millones de dólares en mejorar su algoritmo de recomendación de películas, sino

que lo expresa libremente hacia la comunidad web. Demostrando el alto interés que tiene

poder realizar una recomendación acertada al usuario, que está buscando en un mar de

opciones algo para mirar. Según Netflix en relación a la naturaleza de sus usuarios,

desarrolló una medida de tiempo de 2 minutos y medio, donde sabe que si el usuario no

encuentra algo interesante para ver en ese lapso, sale de la plataforma. De más está decir

que si eso es recurrente el usuario terminará cancelando la suscripción a la plataforma,

impactando negativamente en la recaudación de Netflix.

Netflix informó a principio del 2016 que está haciendo estudios constantes para

mejorar las técnicas de recomendación. Puntualmente se espera en la próxima release del

recomendador hacer uso de técnicas híbridas de recomendación, donde se tomará en

cuenta los contenidos disponibles, el historial del usuario, la tendencia social, el horario de

conexión a la plataforma, así como también del dispositivo que se está accediendo (tablet,

smartphone, tv, pc).

3.4 Resumen

En este capítulo se presentaron a los sistemas de recomendación como una clase

de agentes personales, que realizan recomendaciones en base a las preferencias del

usuario.

Por otro lado, también se expusieron las diferentes técnicas de recomendación existentes

más utilizadas, evidenciando sus fortalezas y debilidades.

33

Page 35: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

4 Machine Learning

Machine Learning es un tipo de inteligencia artificial (IA) que proporciona a las

computadoras la habilidad de aprender sin ser programadas de forma explícita. Machine

Learning se centra en el desarrollo de programas informáticos que pueden enseñar a sí

mismos para crecer y cambiar cuando son expuestos a nuevos datos.

4.1 Aprendizaje supervisado versus no supervisado

Machine learning es una rama de Inteligencia Artificial que usa algoritmos, por

ejemplo, para encontrar patrones en los datos y predecir eventos futuros. En Machine

Learning un dataset de observaciones llamado instancias es compuesto por un número de

variables llamados atributos. El aprendizaje supervisado es el modelado de estos datasets

que contienen instancias etiquetadas. En el aprendizaje supervisado, cada instancia puede

ser representada como (x, y), donde ‘x’ es un conjunto de atributos independientes (pueden

ser discretos o continuos) e ‘y’ es el atributo objetivo. El atributo objetivo ‘y’ puede ser

continuo o discreto tambien; sin embargo la categoría de modelado es de regresión si

contiene un objetivo continuo, y de clasificación si el objetivo es discreto (que también se

llama etiqueta de clase). La tabla 2 muestra un dataset para aprendizaje supervisado con

siete atributos independientes x1,x2, …, x7, y un atributo objetivo dependiente ‘y’. Más

específicamente, x1, x2 ∈ {b, n} y x3, . . . , x7 ∈ R y el atributo objetivo ‘y’ ∈

{up,unchanged,down}. El atributo tiempo es usado para identificar una instancia y no es

usado en el modelo. Los datasets de entrenamiento y prueba son representados de la

misma manera, sin embargo, donde el conjunto de entrenamiento contiene un conjunto de

vectores de valores de etiqueta conocida (y), las etiquetas para el conjunto de prueba son

desconocidas.

Tiempo x1 x2 x3 x4 x5 x6 x7 y

9:30 b n -0.06 -116.9 -21.7 28.6 0.209 up

9:31 b b 0.06 -85.2 -61 -21.7 0.261 unchanged

9:32 b b 0.26 -4.4 -114.7 -61 0.17 down

9:33 n b 0.11 -112.7 -132.5 -114.7 0.089 unchanged

9:34 n n 0.08 -128.5 -101.3 -132.5 0.328 down

34

Page 36: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

Tabla 2: Ejemplo de dataset para aprendizaje supervisado.

En aprendizaje no supervisado, el dataset no contiene un atributo objetivo, o una

salida conocida. Como los valores de clase no son determinados a priori, el propósito de

esta técnica de aprendizaje es encontrar similitudes entre los grupos o grupos intrínsecos

dentro de los datos. Una demostración muy sencilla de dos dimensiones (dos atributos) se

muestra en la Figura 8 con los datos particionados en cinco clusters. Un caso podría ser, sin

embargo, tener que particionar los datos en dos clusters o tres, etc., La respuesta “correcta”

depende en el conocimiento previo o sesgos asociados con el dataset para determinar el

nivel de similitud requerido por el problema subyacente. Teóricamente, es posible tener

tantos clusters como instancias de datos, aunque esto contradice al propósito del clustering.

Dependiendo del problema y los datos disponibles, el algoritmo requerido puede seguir la

técnica de aprendizaje supervisado o no supervisado. En esta tesis, el objetivo es predecir

actividades para un usuario, que le genere un nivel de satisfacción tal que aumente el nivel

de satisfacción objetivo en la proporción esperada. Dado que las actividades históricas del

usuario son conocidas, esto requiere una técnica de aprendizaje supervisado.

Adicionalmente, se decidió explorar el uso de diferentes algoritmos ya que alguno

puede ser mejor que otro, dependiendo de los datos subyacentes.

Figura 8: Ejemplo de la técnica de aprendizaje no supervisado – clustering

35

Page 37: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

4.2 Algoritmos supervisados de aprendizaje

4.2.1 K vecinos más cercanos (Nearest-neightbor)

El método de machine learning de los K vecinos más cercanos (kNN - k nearest

neighbor) es uno de los más simples y generalmente se refiere a un aprendizaje perezoso

ya que el aprendizaje no se implementa realmente hasta que la clasificación o la predicción

es requerida. Este toma la clase más frecuente medida por la distancia euclídea ponderada

(o alguna otra medida de distancia) entre los K ejemplos de entrenamiento más cercanos en

el espacio de características. En problemas más específicos como la clasificación de texto,

kNN ha mostrado que funciona tan bien como otros modelos más complejos [46]. Cuando

hay atributos nominales presentes, generalmente se recomienda llegar a una “distancia”

entre los distintos valores de los atributos [47]. Una desventaja de usar este modelo es los

tiempos de clasificación lentos, sin embargo se puede mejorar la velocidad usando

algoritmos de reducción de dimensionalidad; por ejemplo, reduciendo el número de

atributos. Ya que el aprendizaje no se implementa hasta la fase de clasificación, este no es

un algoritmo apto para utilizar cuando se necesitan decisiones rápidamente.

4.2.2 Naive Bayes

El clasificador de tipo Naive Bayes, es un modelo probabilístico eficiente basado en

el teorema de Bayes, el cual examina la probabilidad de que características aparezcan en

las clases predichas. Dado el conjunto de atributos X = {x1, x2, . . . , xn}, el objetivo es

construir la probabilidad a-posteriori para el evento Ck entre el conjunto de posibles clase

resultado C = {c1, c2, . . . , ck}. Por lo tanto, con las reglas bayesianas P(Ck|x1, . . . , xn) ∝

P(Ck)P(x1, . . . , xn|Ck), donde P(x1, . . . , xn|Ck) es la probabilidad que el atributo X

pertenezca a Cj, asumiendo independencia 1 podemos reescribir como:

Una nueva instancia con un conjunto de atributos X es etiquetada con la clase Cj

que logra la más alta probabilidad a-posteriori.

36

Page 38: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

4.2.3 Tabla de decisión

Un clasificador de tipo tabla de decisión se construye sobre la idea conceptual de

una tabla de búsqueda. El clasificador retorna la clase mayoría del conjunto de

entrenamiento si la celda de la tabla de decisión que coincide con la nueva instancia está

vacía. En ciertos conjuntos de datos, se puede conseguir una mayor performance de

clasificación usando tablas de decisión en vez de otros modelos más complejos.

4.2.4 Máquinas de soporte vectorial

Las máquinas de soporte vectorial (Support Vector Machines), [48] durante mucho

tiempo han sido reconocidas como capaces de manejar de manera eficiente los datos

multidimensionales. Originalmente fueron diseñadas como un clasificador de dos clases,

aunque pueden funcionar con más clases realizando múltiple clasificaciones binarias (una a

una entre cada par de clases). El algoritmo funciona clasificando instancias basadas en una

función lineal de la característica.

Adicionalmente, las clasificaciones no lineales pueden ser realizadas utilizando un

núcleo. El clasificador se alimenta con instancias pre-etiquetadas y seleccionando puntos

como vectores de soporte, el SVM busca un hiperplano que maximice el margen.

4.2.5 Redes neuronales Artificiales

Una red neuronal artificial (ANN - artificial neural network) es un grupo

interconectado de nodos con la intención de representar la red de neuronas en el cerebro.

Son muy usados en literatura, por su habilidad de aprender patrones complejos.

Presentaremos una breve reseña de su estructura en esta sección. Una red neuronal

artificial está comprendida por nodos (representados como círculos en la Figura 9), una

capa de entrada representada como x1…, x6, una capa opcional oculta, y una capa de

salida y. El objetivo de un ANN es determinar un conjunto de pesos w (entre la entrada, el

oculto y la salida de nodos) esto minimiza la suma total de errores cuadrados. Durante el

entrenamiento, estos pesos wi son ajustados de acuerdo el parámetro de aprendizaje λ ∈

[0, 1] hasta que las salidas sean consistentes. Los valores de λ altos pueden realizar

cambios en los pesos que son demasiado drásticos, mientras que valores que son muy

pequeños pueden requerir más iteraciones (llamadas epochs) antes que el modelo aprenda

lo suficiente de los datos de entrenamiento.

37

Page 39: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

La dificultad de usar redes neuronales es encontrar parámetros que aprendan de los

datos de entrenamiento sin sobre ajuste (memorizar los datos de entrenamiento) y por lo

tanto resulte en un mal desempeño con los datos que no fueron vistos. Si hay muchos

nodos ocultos, el sistema puede sobre ajustar los datos actuales, mientras que si hay muy

pocos, puede evitar que el sistema ajuste adecuadamente los datos de entrada. Además,

una selección de criterio de parada tiene que ser elegida. Esto puede incluir la suspensión

en función de cuándo el error total de la red cae por debajo de un cierto nivel de error

predeterminado o cuando un cierto número de epochs (iteraciones) se ha completado.

Figura 9: Ejemplo de una red neuronal artificial de multicapa tipo feed-forward

4.2.6 Árboles de decisión

Los árboles de decisión son clasificadores muy utilizados debido a que el algoritmo

crea reglas que son fáciles de entender e interpretar. Una de las formas más populares, el

C4.5. Las mejoras son: 1) es más robusto al ruido, 2) que permite el uso de atributo

continuo, y 3) que funciona con datos faltantes. El C4.5 comienza como un algoritmo de

divide y conquista recursivo, en primer lugar con la selección de un atributo del conjunto de

entrenamiento para colocarlo en el nodo raíz. Cada valor del atributo crea una nueva rama,

con la repetición de este proceso de forma recursiva utilizando todos las instancias que

llegan a esa rama. Un nodo ideal contiene todos (o casi todos) los atributos de una clase.

Para determinar el mejor atributo a elegir para un nodo en particular en el árbol, la ganancia

en entropía de la información de la decisión se calcula.

38

Page 40: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

Figura 10: Ejemplo de un árbol de decisión

4.2.7 Ensambles

Un ensamble (conjunto) es una colección de múltiples clasificadores base que toman

un nuevo ejemplo, pasado a cada uno de los clasificadores base, y luego combina esas

predicciones de acuerdo a algún método, como por ejemplo a través del voto. La motivación

es que mediante la combinación de las predicciones, el conjunto es menos probable de

clasificar erróneamente. Por ejemplo, la Figura 11.a muestra un conjunto con 25

clasificadores hipotéticos, cada uno con una tasa de error independiente de 0,45

(suponiendo un problema de dos clases uniforme). La probabilidad de obtener k

clasificadores de votos incorrectos es una distribución binomial:

La probabilidad de obtener 13 o más en error es de 0.31, la cual es menor que la

tasa de error del clasificador individual. Esta es una ventaja potencial de usar múltiples

modelos. Esta ventaja de usar múltiples modelos (ensambles) se da bajo la suposición que

la tasa de error del clasificador individual es menor a 0.50. Si la tasa de error del clasificador

independiente es 0.55, entonces la probabilidad de 13 o más en error es 0.69 - sería mejor

no usar un conjunto de clasificadores. La Figura 11.b muestra la tasa de error del conjunto

para tres tasas de error independientes, 0.55, 0.50, y 0.45 para conjuntos que contienen un

número impar de clasificadores, desde 3 a 101. En la figura se puede observar que cuanto

menor es la tasa de error del clasificador independiente, mayor el número de clasificadores

en el conjunto, menor es la probabilidad de predicción incorrecta de la mayoría de los

clasificadores. La idea de la independencia del clasificador puede ser poco razonable,

teniendo en cuenta que los clasificadores pueden predecir de una manera similar debido al

conjunto de entrenamiento. Obtener un clasificador base que genere errores tan des

relacionados como sea posible es lo ideal. La creación de un conjunto diverso de

clasificadores dentro del ensamble se considera una propiedad importante ya que la

39

Page 41: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

probabilidad de que una mayoría de los clasificadores base clasifiquen erróneamente la

instancia se reduce. Estos métodos promueven la diversidad mediante la construcción de

clasificadores base en diferentes subconjuntos de los datos de entrenamiento o diferentes

pesos de los clasificadores.

Figura 11(a): Probabilidad de que precisamente n de 25 clasificadores están en el error

(suponiendo que cada uno tiene tasa de error de 0,45).

Figura 11(b): Tasa de error vs el número de clasificadores en el conjunto (empleando voto

mayoritario) para tres tasas de error independientes.

4.3 Resumen

En este capítulo se expuso el concepto de Machine Learning con sus dos enfoques

de aprendizaje, supervisado y no supervisado. Por último se describieron y analizaron los

algoritmos y técnicas de aprendizaje supervisado.

40

Page 42: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

5 Aplicaciones Móviles

Un dispositivo móvil es una unidad de tamaño reducido, fácil de transportar para el

usuario que posee capacidades de procesamiento, conexión a internet, memoria,

almacenamiento, etc. Se entiende por los mismos a los teléfonos celulares (smartphones),

tablets y por último; en menor medida las PDAs y los eReaders.

Figura 12: Dispositivos móviles

Estos dispositivos, al igual que las computadoras, poseen un sistema operativo. El

sistema operativo juega el rol de intermediario entre el usuario y el hardware de la unidad.

El propósito del Sistema Operativo es crear un entorno en el que el usuario pueda ejecutar

programas. En pocas palabras es un facilitador al usuario, abstrayéndolo de complicados

procesos para llevar a cabo una tarea.

Para determinar qué tipo de dispositivo se utilizará en el presente trabajo, se priorizó

alcanzar una masa crítica de usuarios. Hoy día, la manera más simple de lograrlo es a

través de una aplicación que corra en un dispositivo móvil. Estos últimos años, la tendencia

indica que cada vez más personas acceden a la información a través de sus celulares, en

vez de una computadora.

Actualmente los sistemas operativos de dispositivos móviles que se encuentran

dominando el mercado según la información recabada en el 2015 son:

41

Page 43: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

Figura 13: Sistemas operativos móviles en el mundo y Argentina 2015

Puede verse una clara tendencia que los sistemas operativos móviles más utilizados

en el mundo son al momento, IOS que utiliza el Iphone y los celulares con sistema operativo

Android (sea la marca que fuera). A nivel mundial Android supera por 5 puntos al Iphone

pero en Argentina la brecha se agranda obteniendo un total de 81.6% del mercado de uso

de celulares en Argentina.

Todo indica, que nuestra aplicación debe ser basada en un sistema operativo

Android si deseamos que esté disponible para la mayor cantidad de personas. Tanto a nivel

mundial como solamente de Argentina.

5.1 Android

Android es un Sistema Operativo (SO), además de una plataforma de software,

basado en el núcleo de Linux. Diseñada desde un principio para dispositivos móviles,

permite controlar dispositivos por medio de bibliotecas desarrolladas o adaptadas por

Google mediante el lenguaje de programación Java.

Es una plataforma de código abierto. Esto quiere decir, que cualquier desarrollador

puede crear, desarrollar aplicaciones y compilarlas a código nativo. Inicialmente, Android

fue desarrollada por Google Inc. aunque poco después se unió Open Handset Alliance, un

consorcio de 48 compañías de Hardware, Software y telecomunicaciones, las cuales

llegaron a un acuerdo para promocionar los estándares de códigos abiertos para

dispositivos móviles.

42

Page 44: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

Figura 14: Logotipo del último OS Android (Nougat)

Google sin embargo, ha sido quien ha publicado la mayoría del código fuente de

Android bajo la licencia de Software Apache, una licencia de software libre y de código

abierto a cualquier desarrollador.

Arquitectura Android:

Figura 15: Arquitectura Android

La arquitectura interna de la plataforma Android, está básicamente formada por 4

componentes (Figura ).

● Aplicaciones (Applications). Todas las aplicaciones creadas con esta plataforma,

incluirán como base un cliente de email (correo electrónico), calendario, programa

de SMS, mapas, navegador, contactos, y algunos otros servicios mínimos. Todas

ellas escritas en el lenguaje de programación Java.

43

Page 45: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

● Framework de Aplicaciones. Todos los desarrolladores de aplicaciones Android,

tienen acceso total al código fuente usado en las aplicaciones base. Esto ha sido

diseñado de esta forma, para que no se generen cientos de componentes de

aplicaciones distintas, que respondan a la misma acción, dando la posibilidad de que

los programas sean modificados o reemplazados por cualquier usuario sin tener que

empezar a programar sus aplicaciones desde el principio.

● Bibliotecas. Android incluye en su base de datos un set de librerías C/C++, que son

expuestas a todos los desarrolladores a través del framework de las aplicaciones

Android System C library, librerías de medios, librerías de gráficos, 3D, base de

datos, entre otros.

● Runtime de Android. Android incorpora un conjunto de librerías que aportan la

mayor parte de las funcionalidades disponibles en las librerías base del lenguaje de

programación Java. La máquina virtual está basada en registros, y ejecuta clases

compiladas por el compilador de Java que anteriormente han sido transformadas al

formato .dex (Dalvik Executable) por la herramienta ''dx''.

● Dalvik. Es la máquina virtual(VM - Virtual Machines) que utiliza el sistema operativo

Android, la cual ejecuta las aplicaciones en los dispositivos con este SO. Los

programas son escritos en el lenguaje JAVA y compilados a bytecode. Estos son

luego convertidos desde archivos (compatibles con Java VM) “.class” hacia archivos,

compatibles con Dalvik “.dex” (executables Dalvik) antes de instalarlos en el

dispositivo. El formato Dalvik, compacto y ejecutable, fue diseñado para adecuarse a

sistemas que están restringidos en términos de memoria y velocidad de procesador.

La licencia de esta máquina virtual sigue la filosofía código abierto. A menudo Dalvik

es nombrada como una máquina virtual Java, pero esto no es estrictamente

correcto, ya que el bytecode con el que opera no es Java bytecode. Sin embargo, la

herramienta dx incluida en el SDK de Android permite transformar los archivos class

de Java compilados por un compilador Java al formato de archivos Dex. Dalvik fue

diseñada para que un dispositivo pueda ejecutar múltiples instancias de la VM.

5.2 Generalidades de las aplicaciones Android

En Android, las aplicaciones se encuentran escritas en el lenguaje de programación

Java. Las herramientas del SDK de Android compilan el código – junto con cualquier archivo

44

Page 46: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

de datos o recursos – en un Android package, un nuevo archivo con la extensión .apk. Todo

el código en un .apk es considerado como una aplicación y es el archivo que los dispositivos

con el sistema Android utilizan para instalar la aplicación. Una vez instalada la aplicación en

el dispositivo, cada aplicación Android “vive” en su propio security sandbox:

● El sistema operativo Android es un sistema Linux multi-usuario, en el cual cada

aplicación es un usuario diferente.

● Por defecto, el sistema asigna a cada aplicación un único ID de usuario de Linux

(este es usado solo por el sistema y desconocido por la aplicación). El sistema

asigna permisos para todos los archivos de la aplicación, de esta manera, solo el ID

de usuario asignado a esa aplicación puede acceder a los mismos.

● Cada proceso tiene su propia máquina virtual (VM), por lo tanto, el código de una

aplicación se ejecuta aislado del resto de las aplicaciones.

● Por defecto, cada aplicación se ejecuta en su propio proceso Linux. Android lanza el

proceso cuando cualquiera de los componentes de la aplicación necesita ser

ejecutado, luego mata el proceso cuando no es necesario o cuando el sistema debe

recuperar memoria para otras aplicaciones.

De esta manera, el sistema Android implementa el principio de privilegio mínimo

(least privilege). Por lo tanto, cada aplicación por defecto, tiene acceso solo a los

componentes que requiere para realizar su trabajo. Esto crea un ambiente muy seguro en el

cual una aplicación no puede acceder a partes del sistema para las cuales no posee

permisos. Sin embargo, hay formas de que una aplicación comparta datos con otras

aplicaciones y para una aplicación para acceder a los servicios del sistema:

● Es posible determinar que dos aplicaciones compartan el mismo ID de usuario de

Linux, en dicho caso ambas son capaces de acceder a los archivos de la otra. Para

conservar los recursos del sistema, las aplicaciones con los mismos ID de usuario

también se pueden ejecutar en el mismo proceso de Linux y compartir la misma VM

(la aplicación también deberá ser firmada con el mismo certificado).

45

Page 47: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

● Una aplicación puede pedir permisos para acceder a datos del dispositivo, como los

contactos del usuario, mensajes SMS, la cámara, entre otros. Todos los permisos de

aplicación deben ser otorgados al momento de requerir usarlos.

5.3 Componentes de las Aplicaciones

Los componentes de aplicación son la esencia de una aplicación Android. Cada

componente es un punto distinto por el cual el sistema puede ingresar a la aplicación. No

todos los componentes son puntos de entrada para el usuario y algunos tienen

dependencias entre sí, pero cada uno existe como una entidad, juegan un rol específico;

cada uno de ellos ayuda a definir el comportamiento general de la aplicación.

Existen 4 tipos diferentes de componentes de aplicación. Cada tipo sirve a un propósito

diferente y tiene su propio ciclo de vida que define como un componente es creado y

destruido.

Los 4 tipos de componentes de aplicación son:

● Activity/Fragment. Representa una única pantalla con una interfaz de usuario. Por

ejemplo, una aplicación de email puede tener una actividad que muestre la lista de

nuevos emails, otra actividad para componer un email, y otra actividad para leer

emails. Aunque las actividades trabajan juntas para formar una experiencia de

usuario cohesiva en la aplicación de email, cada actividad es independiente de las

demás. Por esta razón, una aplicación diferente puede iniciar cualquiera de estas

actividades (si la aplicación de email lo permite). Por ejemplo la aplicación de la

cámara puede iniciar la actividad que compone un email, para que el usuario pueda

compartir su foto. En versiones posteriores a 3.0 de Android, se introdujo el concepto

de Fragment, el cual debe ser considerado como un componente de una Actividad,

con su ciclo de vida y con la particularidad que pueden realizar invocaciones entre

componentes.

● Service. Es un componente que se ejecuta en segundo plano para realizar

operaciones de larga ejecución o para realizar trabajos para procesos remotos. Un

servicio no provee una interfaz de usuario. Por ejemplo, un servicio puede reproducir

música en segundo plano mientras el usuario se encuentra en una aplicación

diferente, o puede recuperar datos desde la red sin bloquear la interacción del

46

Page 48: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

usuario con una actividad. Otro componente, como una actividad, puede inicializar el

servicio y dejarlo en ejecución o enlazarlo para interactuar con el.

● BroadcastReceiver. Es un componente que responde a mensajes de difusión en

todo el sistema. Muchas emisiones (broadcast) se originan en el sistema; por

ejemplo, una emisión anuncia que la pantalla se apagó, la batería está baja de

energía, o una foto fue capturada. Las aplicaciones también pueden iniciar las

emisiones- por ejemplo, para comunicar a otras aplicaciones que cierta información

fue descargada al dispositivo y está disponible para ser usada. Aunque los

broadcast receivers no muestran una interfaz de usuario, pueden crear una barra de

estado de notificación para alertar al usuario cuando el evento de emisión ocurre.

Comúnmente un broadcast receiver es solo un “portal” hacia otros componentes y

está desarrollado para requerir una mínima cantidad de trabajo.

● ContentProvider. Gestiona un conjunto compartido de datos de aplicación. Se

pueden almacenar los datos en el sistema de archivos, en una base de datos, en la

web, o en cualquier lugar persistente de almacenamiento que la aplicación pueda

acceder. A través del content provider, otras aplicaciones pueden acceder y hasta

modificar los datos (si el content provider lo permite). Por ejemplo, el sistema

Android provee un content provider que gestiona la información de los contactos del

usuario. Por lo tanto, cualquier aplicación con los permisos necesarios podrá

gestionar, a través de este contentProvider, la lectura o escritura de la información

de un contacto en particular. Además los content provider, son útiles para leer y

escribir datos que son privados a la aplicación.

Todos estos componentes deben ser definidos en un archivo que toda aplicación

Android debe especificar llamado "AndroidManifest.xml". El "Android Manifest" contiene

información esencial necesaria sobre el sistema Android, información que además es

mandatoria antes de poder ejecutar cualquier línea de código. Entre otras cosas el "Android

Manifest" contiene lo siguiente:

● Nombre del paquete Java. Este nombre sirve como un identificador único de la

aplicación.

● Describe todos los componentes de la aplicación (Actividades, Servicios, "Broadcast

receivers" y "Content providers"). Nombre de cada clase y el componente que

47

Page 49: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

implementa. De esta forma el sistema Android sabe que componentes hay y bajo

qué condiciones se ejecutarán.

● Android Manifest también determina qué procesos contendrán los componentes de

la aplicación.

● Determina que permiso tiene la aplicación para acceder a partes protegidas del API

e interactuar con otras aplicaciones.

● También determina qué permisos tienen otros para acceder a los componentes de la

aplicación.

● Lista las clases de instrumentación que proporcionan perfiles y otra información de

ejecución. Esta declaración solo está presente en desarrollo y pruebas, cuando la

aplicación es publicada se elimina.

● Declara el nivel mínimo del API Android.

Un aspecto único del diseño del sistema Android es que cualquier aplicación puede

iniciar un componente de otra aplicación. Por ejemplo, si el usuario desea capturar una foto

con la cámara del dispositivo, existe una posibilidad de que otra aplicación haga eso y que

nuestra aplicación lo reuse, en vez de desarrollar una actividad para capturar una foto. La

aplicación no necesita incorporar o enlazar el código de la aplicación de la cámara. En su

lugar, la aplicación simplemente puede iniciar la actividad en la aplicación de la cámara que

captura la foto. Cuando se completa, la foto es retornada por un evento a la aplicación que

la solicitó para su uso. El usuario ve como que la cámara es parte de su aplicación cuando

en realidad se hizo uso de un componente.

Cuando el sistema inicia un componente, se inicia el proceso de esa aplicación (si

no está en ejecución en ese momento) e instancia las clases necesarias. Por ejemplo, si la

aplicación inicia la actividad en la aplicación de la cámara que captura la foto, esa actividad

se ejecuta en el proceso que pertenece a la aplicación de la cámara, no en el proceso de la

aplicación que lo llama. Por este motivo, a diferencia de las aplicaciones en la mayoría de

otros sistemas, las aplicaciones Android no poseen un solo punto de entrada (por ejemplo,

no existe una función main()).

Dado que el sistema ejecuta cada aplicación en un proceso diferente con permisos

de archivos que restringen el acceso a otras aplicaciones, la aplicación no puede

directamente activar un componente de otra aplicación. Esto se hace por medio del SO

Android. Entonces, para activar un componente de otra aplicación, se debe enviar un

48

Page 50: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

mensaje al sistema que especifique el intento(intent) de iniciar un componente en particular.

Luego el sistema activa el componente. A continuación (Figura 16) se muestra el ciclo de

vida de un componente y sus respectivos métodos que pueden ser sobrescritos para

agregar la funcionalidad deseada.

Figura 16: Ciclo de vida de una actividad en Android

49

Page 51: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

5.4 Ventajas del uso de Android sobre otros sistemas operativos

móviles

● Código abierto. El hecho de que Android esté liberado con licencia Apache y código

abierto lo convierte en un sistema operativo totalmente libre para que un

desarrollador no solo pueda modificar su código sino también mejorarlo. A través de

esas mejoras puede publicar el nuevo código y con él ayudar a mejorar el sistema

operativo para futuras versiones sin depender de fabricantes u operadoras para ver

si se libera o no dicha mejora. Del mismo modo, al ser código abierto garantiza que,

en caso de haber un bug o error, sea detectado y reparado con mayor eficacia al no

existir ninguna traba legal para indagar en su interior ni depender de nadie para

pedir autorización a su cambio.

● Libertad. Android da completa libertad al propietario de un teléfono a instalar lo que

desee, sea desde Android Market como un ejecutable aparte (apk) no limitando la

libertad del usuario ni imponiendo software propietario para poder instalar música,

archivos, documentos directamente desde el cable USB como si de un disco externo

se tratara. La misma libertad tienen los desarrolladores o empresas pudiendo

realizar aplicaciones o complementos como Flash, Opera o cualquier otro software

sin tener que pedir permiso a nadie para ofrecerlo a los usuarios que libremente

podrán instalarlo.

● Sin fronteras. El desarrollo de Android no está apadrinado por determinadas

operadoras, fabricantes o proveedores. Permite indagar en su código a través del

SDK o desde el propio terminal así como modificar su Firmware de manera

extraoficial (aunque esté permitido y no sea ilegal, en ocasiones conlleva a la

pérdida de la garantía del teléfono)

● Comunidad. Android cuenta con una gran comunidad mundial de desarrolladores y

también con multitud de eventos, concursos, competiciones y reuniones así como

múltiples vías de comunicación como foros y chats oficiales para fomentar la

participación y la colaboración para encontrar mejoras e ideas para futuras

versiones.

● Coste y gustos. Precisamente por el hecho de que Android puede ser instalado en

teléfonos de cualquier fabricante o incluso en otros dispositivos, esto permite poder

disfrutar de una amplia gama de terminales de diferentes precios y para

determinados poderes adquisitivos. Esto se da sin tener que forzar o limitar un

sistema operativo o terminal a determinadas clases dando la opción de que toda

50

Page 52: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

persona pueda adquirir el terminal que más le guste así como de diferentes

características o costes o incluso fabricantes.

● Personalizable. Al ser abierto y libre, Android es completamente personalizable

tanto por usuarios instalando fondos de pantalla, animaciones, widgets, skins o

temas como para fabricantes con la posibilidad de crear sus propias capas como

“MotoBlur” o “HTC Sense” permitiendo a unos y a otros poder customizar o

personalizar sus teléfonos de la mejor manera posible y dando a elegir al usuario la

interfaz más adecuada para su gusto evitando imponer un determinado estilo o

interfaz.

● Multitarea. Android con su sistema de multitarea inteligente es capaz de gestionar

varias aplicaciones abiertas a la vez dejando en suspensión aquellas que no se

utilicen y cerrarlas en caso de resultar ya inútiles para evitar un consumo de

memoria.

● No solo móviles. La libertad del código de Android ha hecho que en poco tiempo se

implante en multitud de dispositivos electrónicos, desde móviles hasta ordenadores

portátiles, netbooks, microondas, lavadoras, marcos digitales, navegadores GPS,

entre otros. Esto convierte a Android en un sistema operativo multifunción y

completamente escalable que garantizará su crecimiento y expansión así como

ayudará a fabricantes a tener un motor inteligente para sus productos.

5.5 Resumen

En este capítulo se expusieron los sistemas operativos móviles que se encuentran

en el mercado, junto con la variedad de dispositivos que se encuentran en el mercado. Se

relevó la información que se posee de cada uno de ellos tanto a nivel mundial como así

también en Argentina. Luego, post decisión de optar por Android, fueron expuestas las

generalidades de las aplicaciones Android, los componentes y por último las ventajas sobre

otros sistemas operativos móviles.

51

Page 53: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

6 Trabajos relacionados

En este capítulo se reportan diferentes aplicaciones que realizan recomendaciones

personalizadas o que se encuentran ligadas al ámbito emocional. Estas aplicaciones son

utilizadas a través de dispositivos móviles, como así también a través de una página web.

Se analizará cada aplicación por separado, considerando lo expuesto en los capítulos

anteriores.

6.1 Google News (sesión de noticias de Google)

Google News es una aplicación que recopila noticias de miles de fuentes y los muestra en

una página web personalizada, y es importante para el presente trabajo ya que la tendencia

de los usuarios de Google News es utilizar la aplicación, a través de su celular mientras

están viajando a las oficinas de sus respectivos trabajos.

El sistema de recomendación de Google News se desarrolló en 2007. Se trata de la

implementación de un servicio de recomendación colaborativo [capítulo 3.2.1.2 del presente

trabajo] de noticias en un entorno donde los elementos cambian rápidamente, con las

limitaciones para una escalabilidad alta, considerando que existen millones de usuarios para

millones de artículos. Este sistema se caracteriza por una elevada tasa de rotación de su

catálogo de artículos: los artículos son noticias que tienen un flujo constante. Las últimas

noticias son, a menudo, las más interesantes, por lo que el sistema debe regenerar el

modelo de recomendación frecuentemente, aumentando el problema de escalabilidad

[desventaja descrita en el capítulo 3.2.1.2].

Google News sólo utiliza retroalimentación implícita para construir un perfil de un

usuario, cuando éste hace clic sobre los temas.

El sistema es puramente colaborativo y se basa en los ID de noticias e ID de los

usuarios, de modo que un usuario está representado por la lista de noticias a las cuales hizo

clic. El método basado en la similitud utiliza sólo el recuento de aquellas visitas que un

mismo usuario efectúa sobre una misma noticia al menos dos veces. El método basado en

el modelo utiliza dos técnicas de agrupamiento, una probabilística: la indexación semántica

latente PLSI, [49] y la otra MinHash [50]. PLSI es un método probabilístico para la

representación factorial de los documentos y sus términos: los términos se sustituyen por

los identificadores de usuario. En cambio, MinHash es un método de agrupamiento

52

Page 54: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

probabilístico basado en la concatenación de p-firmas aleatorias extraídas de objetos al

grupo: se considera a los objetos como usuarios, extrayendo de sus perfiles las firmas

aleatorias.

Con la finalidad de acelerar el cálculo de PLSI y MinHash, se utiliza un framework de

paralelización de tipo MapReduce [51]. El sistema proporciona una puntuación total por un

método híbrido ponderado [52]. La puntuación global de la noticia i está dada por

con el peso del algoritmo y un la puntuación dada por elW r∑

a a i

a W a a ria

algoritmo de una de las noticias i. Los pesos se obtienen mediante un parámetro discreto

predefinido.

El sistema se utiliza como un ranking: para obtener una lista de las noticias que se

recomienda, el sistema devuelve una lista ordenada con los pesos de cada noticia.

La alta escalabilidad de la solución técnica y su adaptación a un catálogo con una

tasa muy alta de actualización son las principales particularidades de este sistema de

recomendación.

Figura 17: Landing page de GoogleNews

6.2 XPod

Xpod [53] es un reproductor de música móvil que selecciona canciones de acuerdo

al estado emocional de los usuarios y las actividades que realizan. El reproductor utiliza una

colección de datos fisiológicos externos al dispositivo llamado BodyMedia SensorWear. En

comparación con las actividades que se consideraron en nuestro trabajo, las actividades

consideradas en Xpod son más generales, y abarcan: reposo, pasiva y activa.

XPod controla una serie de variables para determinar los niveles de la actividad y el

movimiento del usuario para predecir qué música es adecuada en ese momento. Utiliza una

53

Page 55: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

red de Bayes para inferir el estado emocional del usuario (deprimido, contento, exuberante,

o ansioso/frenético) de información de contexto teniendo en consideración el clima, ruido,

hora, género y edad. La música es luego recomendada de acuerdo al estado emocional

inferido, usando etiquetas de estado emocional en cada canción disponible.

El usuario Xpod entrena el reproductor para entender qué música prefiere bajo qué

condiciones. Después del entrenamiento, Xpod puede predecir la conveniencia de una

canción dado el contexto en el cual se encuentra el usuario.

6.3 Hulu “CF-NADE: Algorithm”

Hulu es una plataforma online de películas y series on-demand, como es Netflix. La

plataforma puede ser utilizada a través de cualquier dispositivo que posea conexión a

internet como una computadora, una tablet o un smartphone.

Investigadores de Hulu inventaron un original método de filtrado colaborativo basado

en redes neuronales, denominado estimador neuronal autorregresiva de distribución para el

filtrado colaborativo (CF-NADE en inglés).

Los servicios en línea modernos dependen en gran medida de los sistemas de

recomendación para ayudar a los usuarios a encontrar los ítems que podrían estar

interesados y ofrecer experiencias personalizadas a través del establecimiento de

relevancia entre los elementos y también entre los usuarios. En Hulu, el Personalized

Masthead (Banner personalizado), como también el Watchlist y la lista Top Picks son en

parte impulsados por el filtrado colaborativo.

Figura 18: Pantalla de Hulu de recomendación de productos

54

Page 56: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

CF-NADE [54] modela la distribución del vector de la valoración del usuario,

optimizado mediante la maximización de la probabilidad conjunta de todos los vectores.

Figura 19: Un ejemplo demostrativo de CF-NADE

Considérese el siguiente ejemplo un usuario calificó 4 películas, "Transformers", "Bob

Esponja", "Teenage Mutant Ninja Turtles" y "Interestelar", con puntuaciones de 4,2,3 y 5,

respectivamente, en una escala de 5 estrellas. En CF-NADE, la probabilidad conjunta de

vector (4,2,3,5) es factorizada como un producto de los condicionales por regla de la

cadena, que son:

1. La probabilidad de que el usuario da "Transformers" 4 estrellas sin condicionamiento

2. La probabilidad de que el usuario da "Bob Esponja" 2 estrellas condicionado por dar

4 estrellas a "Transformers".

3. La probabilidad de que el usuario da "Tortugas Ninja" 3 estrellas, a condición de

haber dado 4 estrellas, y de 2 estrellas a "Transformers" y "Bob Esponja",

respectivamente.

55

Page 57: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

4. La probabilidad de que el usuario da "interestelar" 5 estrellas, a condición de haber

dado 4 estrellas, 2 estrellas y 3 estrellas a "Transformers", "Bob Esponja" y

"Tortugas Ninja", respectivamente.

Cada condicional se modela mediante una red neuronal feed-forward, y los

parámetros de estas redes neuronales son compartidos entre todas las redes. CF-NADE se

“entrena” para reducir al mínimo la probabilidad del vector de usuario, de entre todos los

usuarios. Con un modelo entrenado, dado el historial de calificación de un usuario, podemos

predecir su preferencia sobre una película sin clasificar.

Figura 20: Top 5 de películas más similares recomendadas por el algoritmo

La Figura 6.3.c representa los 5 primeros vecinos más próximos de las películas de

entrada (columna más a la izquierda) utilizando similitud del coseno. En la imagen se puede

ver que los mejores 5 películas más similares a "Star Trek VI" son otras películas de Star

Trek; los mejores 5 películas más similares a "Sleepless in Seattle" son todas las películas

románticas; y los mejores 5 películas más similares a "Rey León" son todas las

animaciones.

56

Page 58: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

6.4 PicFeel - A World of Feelings

PicFeel [55] es una aplicación social para compartir emociones basadas en

experiencias vividas. El usuario utiliza la app básicamente para sacar una foto, geo-ubicarla

y compartir la emoción que experimentó en ese momento.

Con PicFeel se pueden localizar emociones a través del mundo, encontrar los

lugares más cercanos donde la gente sintió una emoción y encontrar una ruta para llegar a

ese destino.

Figura 21: Aplicación PicFeel

Esta aplicación no posee recomendación directa de emociones a experimentar. Pero si

permite ver a través de otros usuarios de la aplicación, las experiencias que vivieron.

57

Page 59: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

6.5 Happiness

Happiness [56] es una aplicación móvil que corre en celulares Iphone, es una

especia de diario virtual, donde la persona ingresa su estado de ánimo en relación a la

actividad que está realizando.

Figura 22: Aplicación Happiness

Adicionalmente, Happiness permite al usuario configurar recordatorios para incluir

entradas en el diario.

Figura 23: Recordatorio de la aplicación Happiness, para cargar una nueva entrada

Happiness no dispone recomendación alguna en cuanto a que actividades realizar

buscando como objetivo ser más feliz. Se lo puede considerar como un diario personal

digital. Como punto negativo, se puede mencionar que al ser estar desarrollado solamente

58

Page 60: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

en Iphone, dispone de un público muy específico. Ya que todos los otros smartphones son

descartados

6.6 Resumen

En este capítulo se presentaron algunas de las aplicaciones móviles, que realizan

recomendaciones personalizadas a sus usuarios en sus ámbitos particulares. Por otro lado

también se expusieron aplicaciones que juegan el rol de registro de la felicidad en base a la

carga de datos del usuario en la aplicación.

Es importante destacar que hasta el momento del presente trabajo, no se pudo

encontrar una aplicación que combine el registro de actividades, con el estado de ánimo del

usuario y una futura recomendación personalizada.

59

Page 61: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

7 Enfoque

En los capítulos previos se presentaron distintas técnicas para realizar

recomendaciones personalizadas de actividades para que cada usuario de JoyMeter logre

alcanzar un estado emocional positivo. Para materializar y evaluar este enfoque se ha

construido una aplicación que interactúa con cada usuario en particular, para permitirle la

carga de actividades, ver el historial de actividades, el nivel actual e histórico de felicidad, y

realizar solicitudes de recomendaciones. En este capítulo se presentan los aspectos de

diseño más relevantes de JoyMeter. En la sección 7.1 se describe la aplicación y sus

principales requerimientos. En la sección 7.2 se detalla su funcionalidad y las decisiones de

diseño involucradas. En la sección 7.3 se especifica el nivel subjetivo de felicidad y la

propuesta de JoyMeter para obtenerlo. Finalmente, en la sección 7.4 se presentan las

tareas desempeñadas por el recomendador.

7.1 JoyMeter

JoyMeter es una herramienta de seguimiento de actividades personales junto con el

nivel de satisfacción obtenido al realizar las mismas. El sistema permite cargar actividades,

actualizarlas, consultarlas y ofrece un historial de los niveles de satisfacción del usuario a lo

largo del tiempo. Adicionalmente incluye un sistema de recomendación, que se detallará

más adelante. Se dispone de distintas reglas para contemplar la satisfacción otorgada por

ciertas actividades predefinidas, y el feedback provisto por los usuarios de la aplicación.

Para facilitar el acceso, la aplicación brinda la posibilidad de ser accedida desde

múltiples dispositivos.

Como funcionalidad adicional, la herramienta está integrada con Facebook para

facilitar el Login del usuario con las credenciales de Facebook, así como también permite al

usuario publicar en Facebook cada una de las actividades que este crea cuando así lo

desee.

A continuación se adjunta un diagrama nocional de los componentes de JoyMeter,

las APIs externas y el usuario interactuando con el sistema. Cada componente en este

diagrama se analizará en detalle a medida que las decisiones de diseño van siendo

detalladas.

60

Page 62: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

Figura 24: Diagrama nocional de los componentes de JoyMeter y las APIs externas con la interacción del usuario

A continuación, se describen los requerimientos de alto nivel, los cuales definen la

funcionalidad de la aplicación, para luego dar lugar a la descripción de las decisiones de

diseño tomadas para poder cumplir con dichos requerimientos.

7.1.1 Actividades

1. Un usuario debe poder cargar una actividad que haya realizado, junto a su

descripción, tipo de actividad y el nivel de satisfacción personal que ha alcanzado

realizando la misma.

2. Un usuario debe poder consultar las actividades cargadas en un periodo de tiempo.

3. Un usuario debe poder editar una actividad creada previamente, editando los valores

anteriormente guardados, este cambio se verá reflejado en el historial de

actividades.

61

Page 63: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

4. Un usuario debe poder eliminar una actividad previamente cargada, una vez

eliminada no se verá en el historial de actividades.

5. El usuario puede seleccionar publicar la actividad que está siendo cargada . La

misma será publicada en Facebook en el perfil del usuario.

7.1.2 Nivel de satisfacción

1. Un usuario debe poder obtener el nivel de satisfacción diario, obtenido en relación a

las actividades del día en cuestión, como así también el nivel de satisfacción del dia

previo con aplicando un factor de decaimiento.

2. En nivel de felicidad diario como el histórico de un usuario debe ser actualizado

cuando este cargue, edite o elimine una actividad.

7.1.3 Sugerencia de actividades

1. El usuario debe poder solicitar que una actividad le sea sugerida, dicha actividad

será sugerida en base a la interacción registrada del usuario con el sistema. El

usuario podrá cargar la actividad tal cual le fue sugerida, editando parcialmente

algún valor o en todo caso ignorar la sugerencia si no es de su agrado.

2. El usuario será notificado en el dispositivo que esté utilizando, la actividad sugerida

por el sistema.

7.1.4 Autenticacion

1. El usuario debe autenticarse con el sistema, de modo que asegure su identidad para

poder acceder a la información del mismo. El sistema solicitará al usuario que

ingrese sus credenciales de Facebook, una vez validada la identidad del usuario, el

mismo podrá acceder al sistema.

7.1.5 Accesibilidad

1. El usuario podrá acceder fácilmente al sistema y en cualquier momento para cargar

aquella actividad que haya realizado.

62

Page 64: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

2. Un usuario puede consultar el sistema y hacer actualizaciones en el mismo desde

múltiples dispositivos, los cambios se verán reflejados en todos ellos, siempre y

cuando dichos dispositivos posean conexión a internet.

7.1.6 Usabilidad

1. Un usuario sin experiencia previa en el uso del sistema debe poder operarlo

correctamente. El usuario puede utilizar el sistema de manera intuitiva, accediendo a

las funcionalidades sin complicaciones. La interfaz del sistema debe ser fácil de usar

y debe seguir los estándares preestablecidos, para que el usuario la navegue con

naturalidad.

7.1.7 Acceso offline y sincronización

1. El usuario puede consultar el historial, cargar, editar y/o eliminar actividades incluso

cuando este se encuentre sin acceso a internet, sin notar diferencia alguna. Los

cambios serán actualizados cuando se re establezca la conexión, propagando los

cambios en cualquier otro dispositivo vinculado a la misma cuenta.

63

Page 65: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

7.2 Diseño de Arquitectura

Por ser JoyMeter un sistema que requiere ser accedido desde distintos dispositivos

de manera distribuida, se optó por una arquitectura cliente/servidor. La diversidad de

plataformas, en sistemas distribuidos han logrado poner esta arquitectura como pilar base

de cualquier diseño arquitectónico que ataque dicho enfoque.

En JoyMeter, el usuario accede a la aplicación a través de un dispositivo Android,

que cumple el rol de cliente del sistema. Y se conecta a través de un protocolo de

comunicación con el servidor de JoyMeter el cual le brinda servicios necesarios para la

utilización de la aplicación a través de una API.

Figura 25: Deploy general de Joymeter e integración con APIs externas

64

Page 66: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

7.2.1 Servidor

El servidor de JoyMeter, es un servicio web que expone una API REST con la

funcionalidad requerida por el cliente, tanto como para consultar y persistir los datos, como

para llevar el cálculo del nivel de felicidad histórico y la generación de las actividades a

sugerir.

El servidor de JoyMeter se encuentra dividido en una arquitectura por capas. La

arquitectura basada en capas se enfoca en la distribución de roles facilitando la distribución

de responsabilidades y un fácil mantenimiento/modificabilidad del sistema, ya que en caso

que sobrevenga algún cambio, solo se atacará el nivel requerido sin tener que involucrar a

las demás capas. En ambientes colaborativos, este patrón permite distribuir el trabajo por

niveles. De este modo, cada grupo de trabajo estará abstraído del resto de los niveles, y

solo bastará conocer la API que existe entre niveles.

En estas arquitecturas, a cada nivel se le confía una misión simple, lo que permite el

diseño de arquitecturas escalables. Las división en capas de la arquitectura del servidor de

JoyMeter son Resource (presentacion), Service (lógica) y Repository (persistencia).

En líneas generales, un componente de la capa Resource solicita a un componente

de la capa service que le brinde la información necesaria para responder una solicitud que

le ha llegado. El componente de la capa Service que atendió la solicitud, puede valerse de

otro/otros componentes de la misma capa, para que le brinde los elementos necesarios

para responder la solicitud o sino también puede hacer uso de uno/unos de los

componentes de la capa inferior, Repository.

Adicionalmente, el server cuenta con un componente que opera de manera

transversal a las 3 capas, este componente es el ExceptionHandler y es el encargado de

manejar las excepciones de la aplicación para retornar una respuesta http valida, con su

status code correspondiente.

La autenticación en la capa resource para el alta de un usuario utiliza la API de

Facebook para validar las credenciales de facebook, las cuales fueron obtenidas

previamente por el cliente. Mientras que la autorización de los recursos de un usuario se

lleva a cabo, mediante un componente que intercepta los llamados que llegan a la capa

Resource, y valida las credenciales del usuario verificando que sea una sesión válida para

el recurso que se desea acceder.

65

Page 67: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

Figura 26: Diagrama de componentes del servidor de JoyMeter

Otra integración que se lleva a cabo en el servidor que es importante a destacar, es

el uso de la API de Google GCM(Google cloud messaging) para la notificación en los

dispositivos android asociados a la sesión del usuario.

Figura 27: Flujo de alta y recepción de mensaje de un dispositivo con GCM

El alta de un dispositivo Android se genera en los pasos 1, 2 y 3. Solicitando el token

a GCM, obteniendolo y por último enviándolo al servidor que lo almacenará para cuando

desee enviar una notificación al celular en cuestión. En ese caso, el servidor enviará un

mensaje al servicio de GCM, con el token del dispositivo. El servicio de GCM le enviará al

dispositivo de destino el mensaje (pasos a y b). De esta manera, cuando el usuario solicite

que se le sugiera una actividad a realizar, el servidor recibe una petición de sugerencia,

genera la sugerencia y la envía de vuelta al usuario a través de la API de Google, la cual

genera una notificación en el dispositivo móvil.

Para más detalle referido a la implementación del servidor, puede consultarse la

sección B del apéndice.

66

Page 68: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

7.2.2 Cliente

Como punto de partida, pensando en el requerimiento de accesibilidad, el cual

pretende facilitar la carga de actividades en cualquier momento del día en cualquier lugar,

se ha desarrollado una aplicación para dispositivos móviles para la plataforma Android.

A nivel de interfaz visual, el cliente incluye los siguientes componentes:

● LoginActivity: Página de bienvenida con los términos y condiciones. Al final de los

términos y condiciones se encuentra el botón para iniciar la registración con las

credenciales de Facebook.

● HistoryActivity: Página que despliega el historial de las actividades que el usuario

realizó. A través de 2 botones permite agregar una actividad nueva y solicitar el

gráfico del nivel de satisfacción respectivamente.

● ActivityListFragment: Fragmento que contiene la lista de todas las actividades

realizadas por el usuario. Está contenida en la HistoryActivity. Cada elemento es

clickeable y brinda la posibilidad de editarlo o eliminarlo.

● SingleActivity: Página donde se despliega toda la información correspondiente a

una actividad. Podrá ser una actividad nueva, en ese caso el formulario estará vacío.

O una actividad existente, en ese caso el formulario estará cargado con la

información de la respectiva actividad. Al confirmar la página, se grabará la actividad

nueva, o se actualizará la existente dependiendo de cada caso.

● ChartActivity: Página donde se despliega el gráfico del nivel de felicidad del

usuario.

Entre las decisiones de implementación de alto nivel, pueden detallarse los

componentes visuales de la aplicación, la comunicación con el servidor que será a través de

una API Rest, una base de datos local en el dispositivo y un bus de eventos que facilita la

comunicación entre los componentes de la aplicación

67

Page 69: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

Figura 28: Arquitectura del cliente de JoyMeter

Como puede apreciarse en el diagrama, los componentes visuales solicitan al bus

de eventos, la información necesaria para desplegar los elementos de la vista. Esa solicitud

será atendida por el Presentador, que realizará la lógica necesaria (llamado a la API o

consulta en la base de datos local) para retornar a través del bus, la información solicitada.

JoyMeter requiere autenticación del usuario para asegurar el accesos de los mismo.

Para lograr la integración con Facebook y GCM(Google Cloud Messaging), se tuvieron que

integrar tanto el SDK de Facebook, como el servicio de mensajería de Google en el flujo de

registración. El proceso de registración comienza solicitando un token de Facebook con las

credenciales del usuario, luego se procede a dar de alta el dispositivo en el servicio de GCM

para obtener el GCMToken con el cual se identificó al dispositivo. Por último con ambos

datos (token de Facebook y token de GCM) se realiza un llamado a nuestro servidor donde

se procede a dar de alta al usuario y se retorna un token de sesión para validar los llamados

posteriores al servidor. En el siguiente diagrama se muestra el proceso completo, teniendo

en consideración todos los componentes involucrados.

68

Page 70: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

Figura 29: Flujo del alta de un usuario en JoyMeter y componentes involucrados

Para simplificar el diagrama, las flechas representan llamados asincrónicos con

callbacks asociados respectivamente. Esto es un principio de Android para evitar la espera

ocupada y que los componentes visuales no se queden sin responder a la interacción con el

usuario, se logra que la aplicación sea más fluida. También se han excluido los parámetros

involucrados en cada llamada para que sea más simple el diagrama. Como por ejemplo el

llamado a signup dispondrá del token de Facebook y también el token de GCM para dar de

alta el usuario en el servidor de JoyMeter. Por último, el llamado que realiza el componente

visual LoginActivity al componente HistoryActivity posee un llamado de “fantasía”. Esto en

Android se realiza a través de un Intent que posee la referencia a la clase del componente

HistoryActivity y ejecutando el método starActivity.

Para más detalle referido a la implementación del servidor, dirigirse a la sección C

del Apéndice

69

Page 71: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

7.3 Cálculo del nivel subjetivo de felicidad

El objetivo de este trabajo se enfoca en recomendar actividades que provoquen

emociones positivas en el usuario repercutiendo en su bienestar y felicidad. Es asi que

JoyMeter utiliza la información recopilada de las actividades cargadas por el usuario, para

hacer el cálculo del nivel de felicidad relativo de este usuario por día, a medida que se

extrae de los valores de satisfacción de las actividades antes mencionadas.

La felicidad es un tema complejo, en efecto, pero en las últimas décadas se han

desarrollado teorías y métodos de medida . Investigar acerca de la felicidad posee la

dificultad que, a diferencia de otros temas, cada individuo tiene sus propios argumentos; y la

felicidad es una opción individual que tiene que ver con los valores que cada persona

reconoce o acepta. Esta definición tiene implicancias importantes para la medición de la

felicidad. Si reconocemos que se trata de un fenómeno interior a cada persona, entonces

parece más adecuado medirla con auto-reportes que con evaluaciones de expertos o pares.

Es por eso que JoyMeter, obtiene el cálculo de una medida subjetiva de felicidad,

basándose en los valores de satisfacción diarios evaluados por el mismo usuario.

Si bien el valor generado por JoyMeter, no deja de ser un valor obtenido a través de

una función heurística, sirve como punto de partida para evaluar el estado de un usuario en

un día dado, para ser tomado como referencia a la hora de generar una recomendación que

se adapte a las necesidades del usuario, buscando promover los estados emocionales

positivos.

Si se considera la felicidad como una un estado emocional que es alimentado por la

realización de actividades que producen satisfacción hacerlas y que decae a medida que no

se alimenta con nuevas actividades, podría modelarse la felicidad como un modelo de

decaimiento.

Si se observa cierta cantidad de felicidad, al paso del tiempo se puede verificar un

cambio en dicha cantidad; la cantidad M de felicidad es una función del tiempo t , esto es

. Al paso del tiempo ocurre una desintegración o decaimiento de la felicidad. En(t)M = M

otras palabras, en cualquier tiempo, la rapidez de cambio de la cantidad es (t)M

directamente proporcional a la cantidad de felicidad presente:

M(t)/δt k.M(t) δ = Donde es la variación de la felicidad con respecto al tiempo, es la llamada M(t)/δtδ k

constante de proporcionalidad. Debido a que es definió que a través del paso del tiempo, el

nivel de felicidad va disminuyendo (decreciendo), esto permite concluir que ya que k < 0

70

Page 72: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

. Esta ecuación diferencial representa un modelo matemático con resolución a(t)M > 0

variables separables. En efecto

M/M k.δt δ = Integrando se tiene

M/M .δt n M t e C∫

δ = ∫

k ⇒ l = k + C⇒ M = ekt+c = ekt c = ekt

Entonces la solución homogenea de la ecuación diferencial es:

(t) Ce M = kt

Teniendo en consideración la felicidad del día anterior, más las actividades realizadas en el

día {N(t)} la solución particular para esta ecuación diferencial es:

(t) M e (t)M = (t−1) k + N

Se toma el promedio del nivel de satisfacción del dia, el cual está compuesto por el

promedio del nivel de satisfacción de las actividades realizadas ese dia junto con el nivel de

satisfacción del dia anterior afectado por la función de decaimiento.

7.4 Recomendación de Actividades

JoyMeter es un asistente personal, capaz de aprender de las actividades de interés

de los usuarios, captando la información necesaria a través de la observación,

monitoreando las actividades cargadas por el usuario y calculando el ya mencionado nivel

de felicidad, del cual se ampliará más adelante. Adicionalmente el feedback implícito que es

recolectado de las sugerencias hechas por JoyMeter que el usuario aceptó o rechazó es

registrado por el agente. Con la información obtenida a través del proceso de observación y

el feedback recolectado, JoyMeter trata de encontrar regularidades o patrones recurrentes

en las actividades realizadas por un usuario, y asiste al mismo para realizar actividades las

cuales generen un nivel de satisfacción tal que se incremente el nivel de felicidad del

usuario. JoyMeter tiene como objetivo el cultivo de emociones positivas mediante la

realización de actividades que ayuden a una persona a desarrollar áreas del cerebro

asociadas al bienestar y la felicidad. Un sistema de recomendación tiene como objetivo

71

Page 73: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

principal sugerir actividades en las que el usuario se espera esté interesado, el éxito del

sistema de recomendación se centra en el grado de concordancia que pueda obtener entre

la representación de las preferencias del usuario y las verdaderas preferencias del usuario.

En el caso de JoyMeter, éste aprende de los intereses del usuario basándose de las

características de las actividades que el usuario ha cargado en el sistema, con el objetivo de

recomendar actividades similares que puedan resultar interesantes en el futuro. En este

sentido, JoyMeter es un sistema de recomendación basada en contenido. Para el problema

del usuario nuevo, JoyMeter resuelve con una estrategia de recomendación basado en

sugerencias pre-establecidas.

7.4.1 Informacion captada para generar recomendaciones

Como ya se mencionó, JoyMeter obtiene información para asistir al usuario

recomendando una actividad a realizar que sea de su preferencia, mediante la observación

de la interacción del usuario y la aplicación y el feedback implícito obtenido a partir del

resultado de las sugerencias propuestas al usuario. De la información capturada de la

interacción del usuario con JoyMeter, se registran todas las actividades realizadas por el

usuario.

Figura 30: Perfil de usuario

De estas actividades, los datos que se utilizan para la generación del perfil del

usuario son: 1. Si la actividad se realizo un dia laboral o no laboral: WorkingDay o WeekendDay

2. El momento del día en el que se realizó la actividad: Morning, Evening o Night

3. Nivel de satisfacción obtenido al realizar la actividad: valor entre 1 y 5

4. El tipo de actividad: Ocio, Deporte, Profesional y Estudio

72

Page 74: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

Cuando un usuario solicita que el sistema le sugiera una actividad a realizar, se

registra el feedback implícito derivado de la acción del usuario al aceptar o rechazar la

actividad propuesta por JoyMeter. En el sistema, se registra:

● Cada sugerencia realizada

● La actividad en la cual se basó la sugerencia

● Si la sugerencia fue aceptada o no 1

● El identificador de la nueva sugerencia, si es que el usuario aceptó y cargó la nueva

actividad.

7.4.2 Clasificadores

Para la implementación de estas recomendaciones que utilizan mecanismos de

Machine Learning, se utiliza la biblioteca Weka, la cual provee un gran número de

algoritmos de clasificación en Java. El componente en JoyMeter que utiliza el clasificador

provisto por Weka es ActivityBaseClassifier, y es el encargado de entrenar el clasificador y

generar el modelo.

El clasificador se utiliza para predecir un tipo de actividad basándose en los atributos

que fueron definidos de entrada (tipo de dia, momento del dia y nivel de satisfacción).

JoyMeter ofrece 4 tipos de actividad, a saber: Ocio, Deporte, Profesional y Estudio. El

clasificador debe ser entrenado con las preferencias del usuario obtenidas mediante un

proceso de observación, para luego generar un modelo (perfil de usuario) a partir de los

datos de las actividades realizadas por el usuario que se encuentran persistidas en la base

de datos. Periodicamente se ejecuta un proceso, para todos los usuarios, el cual obtiene las

actividades del usuario y genera el modelo el cual es persistido para su posterior uso por el

clasificador.

Adicionalmente, cuando un usuario solicita una sugerencia, se verifica si posee ya

un modelo asociado. De existir dicho modelo, y si no se encuentra “vencido” (superó los 30

días desde su generación), este el modelo ha de ser usado por el recomendador. En caso

que el usuario no posea un modelo y posea suficientes actividades para crearlo o se trate

de un modelo vencido, el modelo es re-generado y se persiste previamente al proceso de

recomendación. En caso de que no posea suficientes actividades para generar el modelo,

se utiliza una estrategia de recomendaciones preestablecidas.

1 Al realizar una sugerencia, el sistema la persiste con el estado “No aceptada”. Si el usuario la acepta luego manteniendo el tipo de actividad, el sistema persiste la relación de la nueva actividad con la sugerencia y le cambia el estado a “Aceptada”

73

Page 75: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

7.4.3 Estrategias de recomendación

Joymeter propone dos estrategias de recomendación, una denominada “Basic

Activity Recommender” y la otra “Filter Activity Recomender”. Estas estrategias toman la

información histórica del usuario, y generan una predicción que se ajuste a los gustos del

mismo. La principal diferencia entre ambas estrategias radica en que “Filter Activity

Recomender” utiliza el feedback implícito del usuario (recomendaciones realizadas

anteriormente que fueron aceptadas o rechazadas).

Figura 31: Estrategias de recomendación

Como parámetros de entrada se toma el perfil del usuario, para el cual se obtiene el

nivel de felicidad objetivo, el dia de la semana (dia laborable o fin de semana) y el momento

del día (mañana, tarde o noche) llamados de ahora en más, atributos independientes. Con

esa información, el recomendador entrega una actividad a sugerir, la cual se espera sea del

agrado del usuario.

Ambas estratégias de recomendación, utilizan el componente ActivityBaseClassifier

de JoyMeter, el cual delega internamente en un clasificador de Weka. ActivityBaseClassifier

provee 2 métodos para la realización de las estrategias de recomendación a partir de los

atributos independientes. Estos son suggestActivity que resuelve un tipo de Actividad a

sugerir, y getActivityTypeDistribution el cual retorna la distribución de probabilidad de los

tipos posibles de actividad dependiendo los atributos de entrada. A continuación se

presenta un ejemplo.

Figura 32: Sugerencia del tipo de Actividad en base a los atributos independientes

74

Page 76: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

Figura 33: Distribución de probabilidad de tipos posibles de actividad

Basic Activity Recommender

Las instancias generadas a partir de todos los niveles de satisfacción que cumplen la

condición, son clasificadas por medio del ActivityBaseClassifier, resultando en un listado de

tipos de actividad sin duplicados, y finalmente se devuelve uno de los elementos de la lista

de tipos resultado de manera aleatoria.

Una vez que se cuenta con el tipo de actividad a recomendar, se obtienen todas las

actividades del usuario que se condicen también con los atributos independientes y se

resuelve una descripción aleatoria de estas actividades. De no existir una actividad que

cumpla con estas caracteristicas, se obtiene la descripción de una de las actividades

preestablecidas que coincidan con el tipo a sugerir. Finalmente se genera el Advice, que no

es más que la actividad generada a partir de los datos antes mencionados..

Figura 34: Basic Activity Recommender

75

Page 77: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

Filter Activity Recommender (filtro basado en el feedback del

usuario)

Este enfoque, a diferencia del primero, no solo genera recomendaciones al usuario

basándose en lo aprendido a través de la observación, sino que también toma el feedback

implícito introducido por el usuario (recomendaciones realizadas anteriormente que fueron

aceptadas o rechazadas) y lo utiliza para filtrar aquellas actividades. Se utilizan los atributos

independientes para obtener la distribución de probabilidad de tipos de actividad, para el/los

niveles de felicidad objetivo.

La distribución de probabilidades promedio obtenida se ordena de mayor a menor

(Ranker), y se toma el acumulado con una cota superior de 0.7 de probabilidad (ABC ). De 2

esta manera se da prioridad a los tipos de actividad con mayor probabilidad de acierto.

Finalmente, se filtran los tipos de actividad que fueron menos aceptados por el

usuario en recomendaciones previamente realizadas. Para esto, se arma un vector

acumulado a partir de obtener el porcentaje de sugerencias aceptadas

(sugeridas/realizadas) para cada uno de los tipos restantes, y se calcula la incidencia de

cada tipo, ponderando el nivel de aceptación con la probabilidad de acierto sobre la

sumatoria de todos los niveles ponderados:

(t) %a(t) p(t) / (%a(i) p(i))F = * ∑n

i=1*

Donde es la cantidad de aciertos, es la probabilidad de acierto, el total (t) a (t) p n

de tipos de actividad a ponderar

Una vez generado el vector acumulado, con las probabilidades de cada tipo

ponderadas según la probabilidad de acierto y el porcentaje de aceptación, de manera

aleatoria se obtiene el tipo de actividad (random entre cero y uno). De este modo, los tipos

con mayor valor ponderado, tienen más probabilidad de ser seleccionados.

2 https://docs.google.com/viewer?a=v&pid=sites&srcid=YWx1bW5vcy5leGEudW5pY2VuLmVkdS5hcnxpbnZvcHxneDozZGFkOGExZWVhMzMzZDU1

76

Page 78: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

Una vez adquirido el tipo de actividad a recomendar, se obtienen todas las

actividades del usuario que se condicen también con los atributos independientes y se

resuelve una descripción aleatoria de estas actividades, con la que se genera el Advice a

sugerir al mismo.

Figura 35: Filter Activity Recommender

Figura 36: Feedback Filter

77

Page 79: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

Recomendación basada en sugerencias Preestablecidas

La estrategia de recomendación basada en sugerencias preestablecidas es utilizada

por las dos implementaciones existentes de Activity Recommender, en los casos que se

trate de un usuario que no posea suficientes actividades para generar un perfil de usuario. 3

Este modelo de sugerencia utiliza un conjunto de actividades predefinidas a sugerir y

las actividades cargadas por el usuario, si existiera alguna. Esta estrategia es utilizada

cuando se trata de un usuario nuevo, el cual no tiene información previamente cargada

como para generar el perfil del usuario y ser usado por el clasificador para predecir una

actividad que sea de las preferencias del mismo. Esta simple estrategia toma de forma

aleatoria una actividad entre un conjunto compuesto de actividades base y las actividades

cargadas por el usuario hasta el momento.

Se optó por crear 19 actividades tratando de contemplar actividades genéricas para

un usuario común. Estas actividades son:

● Tomar una cerveza con amigos. Tipo de la actividad, Ocio.

● Caminar por el centro. Tipo de actividad, Deporte.

● Ir a pescar. Tipo, Ocio.

● Ir de camping. Tipo de la actividad, Ocio.

● Trabajar. Tipo de la actividad, Profesional.

● Ir a la playa. Tipo de actividad, Ocio.

● Tomar mate en la plaza. Tipo de actividad, Ocio.

● Leer un libro.Tipo de la actividad, Ocio.

● Ver una película.Tipo de la actividad, Ocio

● Jugando un juego de mesa.Tipo de la actividad, Ocio

● Tomarse un café.Tipo de la actividad, Ocio

● Ver la television.Tipo de la actividad, Ocio

● Ir de compras.Tipo de la actividad, Ocio.

● Cocinar algo para comer luego.Tipo de la actividad, Ocio

● Caminata.Tipo de la actividad, Deporte

● Permanecer en la cama.Tipo de la actividad, Ocio

● Reunión de trabajo.Tipo de la actividad, Profesional

● Visitar a la familia.Tipo de la actividad, Ocio

● Estudiando.Tipo de la actividad, Estudio

3 El modelo de weka (parte del perfil del usuario) se genera si el usuario tiene actividades y ya tiene más de un mes de uso de la aplicación.

78

Page 80: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

7.5 Resumen

En este capítulo se describieron los requerimientos de alto nivel, los cuales

definieron la funcionalidad de la aplicación y las decisiones de diseño tomadas desde las de

más alto nivel, entrando en decisiones más específicas del lado del servidor y del cliente. Se

describió la integración con las APIs de Facebook y GCM para el login y la mensajería. Por

último se presentaron los dos enfoques para la realización de recomendaciones una con y

otra sin el feedback implícito del usuario de recomendaciones posteriores. Al final se

describió la integración con la librería de Weka para la inclusión de técnicas de Machine

Learning.

79

Page 81: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

8 Evaluación Experimental

En el Capítulo 7 se expusieron los diferentes enfoques para obtener

recomendaciones basadas en contenido con técnicas de machine learning. El primer

enfoque con una técnica de clasificación pura, y el segundo con una técnica de clasificación

más un filtro basado en el feedback del usuario.

Este capítulo se analizarán los clasificadores provistos por weka, ambas técnicas de

recomendación y el resultado de las pruebas. El capítulo se encuentra organizado de la

siguiente manera. En la sección 8.1 se prueban los distintos tipos de clasificadores provistos

por Weka y se analizará cuál es el más conveniente para este trabajo. En la Sección 8.2 se

presentan las aclaraciones a ser consideradas para analizar las estrategias de

recomendación. En la Sección 8.3 se presentan los perfiles de usuario utilizados para el

análisis de las técnicas de recomendación. En la sección 8.4 se realiza la comparación y

análisis de los resultados para ambas técnicas de clasificación y se concluye cual se

recomienda a utilizar.

8.1 Clasificadores provistos por Weka

Como se mencionó con anterioridad, la biblioteca de Weka provee una serie de

técnicas de clasificación con algoritmos de Machine Learning en Java. En esta sección, con

los datos de entrada generados durante la primer iteración de JoyMeter (dataset generado

con usuarios que utilizaron la aplicación con recomendaciones aleatorias), entrenando el

clasificador con el 66% de los datos de entrada (89 instancias) y evaluando con el 33%

restante, arrojaron los siguientes resultados:

● NaiveBayes: 70% accuracy, 30% error, precision avg (68%), recall avg (70%) 4 5

● SimpleLogistic 66% accuracy 33% error, precision avg (61,5%), recall avg (66%)

● DecisionTable 60% accuracy 40% error, precision avg (57%), recall avg (60%)

4 Precision average: precision media por cada atributo de clase (Ocio, Deporte, Estudio, Profesional) 5 Recall average: recall medio por cada atributo de clase (Ocio, Deporte, Estudio, Profesional) idem accuracy

80

Page 82: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

Dados los resultados de las pruebas de estos 3 algoritmos, se concluyó en la

elección del algoritmo de Naive Bayes, ya que provee la mejor cantidad de instancias

correctamente clasificadas.

8.2 Consideraciones

Para analizar las estrategias de recomendación, se tuvieron una serie de

consideraciones que se describen a continuación:

● JoyMeter realiza 3 recomendaciones diarias, una por cada momento del día

(mañana, tarde y noche) para cada usuario. El usuario adicionalmente puede solicitar

más recomendaciones cuando así lo desee.

● Las dos técnicas de recomendación van siendo alternadas a medida que se realizan

las sugerencias de las actividades. Con este enfoque, basado en AB testing , se 6

busca que las técnicas de recomendación no se vean afectadas por el cansancio del

usuario al utilizar la aplicación, o al menos se vean afectadas por igual.

● La técnica utilizada para la recomendación (con y sin filtro), es registrada en conjunto

con la sugerencia realizada para futuro análisis.

● Se utilizó un dataset generado previamente por cada usuario (actividades

realizadas), para entrenar al clasificador.

● Para la estrategia con filtrado en base al feedback del usuario. Se tomarán las

sugerencias aceptadas por los usuarios previamente (sugerencias hechas con una

estrategia random)

Con el clasificador entrenado para cada perfil de usuario, se hizo el seguimiento de

dos usuarios particulares, en el uso de JoyMeter, a fin de analizar la información obtenida

anteriormente sobre la precisión teórica del clasificador en contraste con la precisión real,

obtenida en base al uso de la aplicación sobre los usuarios aceptando/rechazando las

sugerencias dependiendo de cada técnica y las métricas obtenidas.

6 https://en.wikipedia.org/wiki/A/B_testing

81

Page 83: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

8.3 Perfiles de usuario anteriores a la utilización de las técnicas de

recomendación

Los perfiles que se encuentran en esta sección corresponden a los dos usuarios que más activos se encuentran en JoyMeter.

Perfil de usuario A:

El usuario A, posee un total de 82 actividades cargadas en JoyMeter al momento de

realizar el análisis de los clasificadores de Weka. Los gráficos a continuación brindan la

información inherente a sus preferencias que darán como resultado el perfil de dicho

usuario.

Figura 37: Usuario A, distribución por tipo de actividad

Para este usuario, en el gráfico de torta se ve una clara tendencia de las

preferencias del usuario en base al tipo de Actividad, el tipo de actividad recurrente es

“Ocio”, luego lo sigue “Profesional”, “Deporte” y por último “Estudio”.

82

Page 84: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

Figura 38: Usuario A, distribución por momento del día

En cuanto a la preferencia de en cual momento del día realiza actividades están

bastante equilibradas: por la mañana 43,4%, por la tarde 27,7% y por la noche 28,9%.

Figura 39: Usuario A, distribución por tipo de día

Las actividades de este usuario, tiene mayor tendencia a ser realizadas en un día

laboral (Lunes a Viernes) que en el fín de semana.

83

Page 85: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

Figura 40: Usuario A, distribución por nivel de satisfacción

Dentro de todas las actividades que realizó, para la puntuación de satisfacción de las

actividades, el usuario utilizó todo el rango provisto por JoyMeter, las puntuaciones más

recurrentes fueron “Cuatro”, “Cinco” y “Tres” en ese orden. En una considerable menor

medida “Uno” y “Dos” fueron utilizados en muy pocos casos. Existe una clara tendencia en

este perfil, de no cargar actividades que no le son de agrado o no generan una satisfacción

considerable.

Perfil de usuario B:

El segundo usuario a ser considerado para el experimento es el usuario B, este

usuario posee más actividades cargadas que el usuario A, con total de 99 actividades. Los

gráficos a continuación brindan la información que describe las preferencias del usuario.

84

Page 86: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

Figura 41: Usuario B, distribución por tipo de actividad

Según el tipo de actividad, para el usuario B, el más frecuente es “Ocio”, con el 51%

de las actividades. Los tipos de “Estudio”, “Profesional” poseen el mismo porcentaje 18.4%

y en último lugar se encuentra el tipo de actividad “Deporte” con un 12,2%

Figura 42: Usuario B, distribución por momento del día

El momento en el cual el usuario B realiza las actividades que carga en JoyMeter es

por la noche (36,7%) y en menor medida por la tarde (34,7%). Por último, por la mañana

con un 28,6%.

85

Page 87: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

Figura 43: Usuario B, distribución por tipo de día

Al igual que con el usuario A, el usuario B también posee una tendencia a realizar

actividades los días de semana que no están comprendidos como fin de semana.

Figura 44: Usuario B, distribución por nivel de satisfacción

Para la puntuación de satisfacción de las actividades, el usuario B utilizó todo el

rango provisto por JoyMeter, las puntuaciones “Cuatro” y “Tres” fueron las más utilizadas

con un porcentaje de 26,5% y 25,5% respectivamente. Luego siguen las puntuaciones “Dos”

(17,3%), Uno (16,3%) y Cinco (14,3%).En una considerable menor medida “Uno” y “Dos”

fueron utilizados en muy pocos casos. Existe una clara tendencia en este perfil, de no

cargar actividades que no le son de agrado o no generan una satisfacción considerable.

86

Page 88: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

8.4 Información posterior al período de experimentación con las

técnicas de recomendación

Esta sección se encuentra cronológicamente ubicada, pasado un mes desde que se

implementaron las técnicas de recomendación.

Usuario A:

Para el usuario A, luego del tiempo de prueba, se capturó la siguiente información.

El total de recomendaciones realizadas fue 111.

Figura 45: Usuario A, aceptación total de recomendaciones

Del total de recomendaciones realizadas, un 63,1% fue aceptado y las demás

fueron descartadas.

Considerando solamente las sugerencias aceptadas, el gráfico de porcentaje de

aceptación de cada técnica es el siguiente

Figura 46: Usuario A, técnicas de recomendación aceptadas

87

Page 89: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

La técnica que mayor aceptación tuvo fue la que posee el filtro que considera el

feedback del usuario, con un total de 50,7%. En menor medida, con solo tres centésimas de

diferencia se encuentra la técnica con clasificación pura. Descartando con un 1,5%

correspondiente a la técnica de random realizada en la iteración anterior.

Considerando las recomendaciones aceptadas, el porcentaje y el número total de

actividades por tipo se puede apreciar en el siguiente gráfico.

Figura 47: Usuario A, actividades aceptadas por tipo

La cantidad de Actividades aceptadas por tipo, coinciden con el perfil del usuario, ya

anteriormente a la fase de recomendaciones, se pudo apreciar que este tiene una clara

tendencia a realizar actividades de ocio por sobre las demás.

En el siguiente gráfico, se muestra la distribución de aceptación de

recomendaciones, dependiendo el momento del día.

Figura 48: Usuario A, actividades aceptadas por momento del día

88

Page 90: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

Existe una tendencia a no aceptar recomendaciones por la noche. Ya que el número

de aceptadas decrece considerablemente tomando en consideración los otros momentos

del día, Mañana y Tarde.

Utilizando la biblioteca de Weka, y extendiendo la funcionalidad que posee para

probar un clasificador para ver su tasa de efectividad. Se hicieron las corridas con ambas

técnicas arrojando los siguientes resultados para el usuario A

Con filtro basado en feedback

Deporte Profesional Estudio Ocio

Deporte 1 2 2 7

Profesional 0 3 0 2

Estudio 0 0 0 0

Ocio 3 3 1 18

Tabla 3: Usuario A, matriz de confusión de estrategia con filtro.

Los aciertos con esta técnica arrojaron un 52,4% de aciertos

Con clasificador

Deporte Profesional Estudio Ocio

Deporte 3 1 0 5

Profesional 0 0 1 2

Estudio 0 0 0 0

Ocio 1 7 2 20

Tabla 4: Usuario A, matriz de confusión de estrategia de clasificación.

Los aciertos con esta técnica arrojaron un 54,8% de aciertos

Se realizaron dos iteraciones posteriores consecutivas a los valores obtenidos con el

fin de considerar si existen cambios significativos en la efectividad de los clasificadores.

Para la técnica con el filtro basado en el feedback del usuario, los valores en cada

prueba resultaron: aciertos: 22/42 (52,4%), aciertos: 22/42 (52,4%), aciertos: 21/42 (50%)

89

Page 91: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

Para la técnica con el clasificador de Weka, los valores en cada prueba resultaron:

aciertos: 23/42 (54,8%), aciertos: 22/42 (52,4%), aciertos: 21/42 (50%)

Usuario B:

Para el usuario B, el total de recomendaciones realizadas fue 100.

Figura 49: Usuario B, aceptación total de recomendaciones

Del total de recomendaciones realizadas, un 53% fue aceptado y las demás fueron

descartadas.

Considerando solamente las sugerencias aceptadas, el gráfico de porcentaje de

aceptación de cada técnica:

Figura 50: Usuario B, técnicas de recomendación aceptadas

90

Page 92: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

La técnica que mayor aceptación tuvo fue la que posee el filtro que considera el

feedback del usuario, con un total de 52,8%. En menor medida, con solo seis centésimas de

diferencia se encuentra la técnica con clasificación pura.

Considerando las recomendaciones aceptadas, el porcentaje y el número total de

actividades por tipo se puede apreciar en el siguiente gráfico.

Figura 51: Usuario B, actividades aceptadas por tipo

La cantidad de Actividades aceptadas por tipo, coinciden con el perfil del usuario, ya

que este tiene una clara tendencia a realizar actividades de ocio por sobre las demás.

En el siguiente gráfico, se muestra la distribución de aceptación de

recomendaciones, dependiendo el momento del día.

Figura 52: Usuario B, actividades aceptadas por momento del día

91

Page 93: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

El usuario B, a diferencia con el usuario A, posee una distribución aproximadamente

equitativa en relación a en cuál momento del día fue realizada una recomendación. Por la

tarde con un 37,7%, por la noche con un 32,1% y por la mañana con un 30,2%.

Al igual que con el usuario A, se hizo uso de la biblioteca de Weka para obtener tasa

de efectividad. Se hicieron las corridas con ambas técnicas arrojando los siguientes

resultados para el usuario B

Con filtro basado en feedback

Deporte Profesional Estudio Ocio

Deporte 0 0 0 0

Profesional 2 7 0 0

Estudio 2 0 2 1

Ocio 4 4 6 18

Tabla 5: Usuario B, matriz de confusión de estrategia con filtro.

Los aciertos con esta técnica arrojaron un 58,7% de aciertos

Con clasificador

Deporte Profesional Estudio Ocio

Deporte 0 0 0 0

Profesional 2 5 1 2

Estudio 1 1 2 5

Ocio 5 5 5 12

Tabla 6: Usuario B, matriz de confusión de estrategia de clasificación.

Los aciertos con esta técnica arrojaron un 41,3% de aciertos

Se realizaron dos iteraciones posteriores a los valores obtenidos con el fin de

considerar si existen cambios cambios significativos en la efectividad de los clasificadores.

Para la técnica con el filtro basado en el feedback del usuario, los valores en cada

prueba resultaron: aciertos: 27/46 (58,7%), aciertos: 24/46 (52%), aciertos: 25/46 (54%)

92

Page 94: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

Para la técnica con el clasificador de Weka, los valores en cada prueba resultaron:

aciertos: 19/46 (41,3%), aciertos: 20/46 (43,4%), aciertos: 19/46 (41,3%)

8.5 Comparación y análisis de resultados

Luego de la fase de experimentación, con los usuarios seleccionados para el

análisis, la información capturada arroja resultados positivos en ambas técnicas de

recomendación. Como se dijo anteriormente, las técnicas fueron siendo alternadas a fin de

evaluarlas por igual considerando el mismo período de tiempo y el mismo desgaste que el

usuario puede percibir al ser recomendado tres veces al día, con sugerencias

personalizadas de actividades a realizar.

En este contexto se deberá analizar para futuros ciclos, el momento preferible para

realizar la recomendación a cada usuario dependiendo su perfil, a fin de evitar el descarte

de recomendaciones por parte del usuario. La tasa de descarte de recomendaciones fue en

promedio 41,95%, para el usuario A 36,9% y para el usuario B 47%.

Por muy poco margen, la técnica de recomendación con filtro basado en el feedback

del usuario, posee mejor índice de aceptación. Para el usuario A 50,7%, y para el usuario B

52,8%. Si bien el margen no es significativo, en comparación con la tasa de acierto que tuvo

cada estrategia utilizando la librería de Weka para obtener la aceptación de cada técnica.

Por más que el usuario B tuvo menor tasa de acierto con la estrategia del filtro en

comparación con la estrategia de clasificación pura, en la práctica, fue la técnica que más

acepto.

Es por ello que se concluye con el muestreo de usuarios realizado, en el período

comprendido, que la técnica con el filtro basado en el feedback del usuario es la técnica ha

de ser considerada para futuros trabajos.

8.6 Resumen

En este capítulo se analizó a través de experimentación y tasa de acierto, cuál es el

clasificador más conveniente para este trabajo de los que provee la biblioteca de Weka. Se

recabó la información de los perfiles de usuario antes de la fase de experimentación para

una vez concluida, analizar los resultados entre cada estrategia y dar como conclusión cuál

es la estrategia más conveniente.

93

Page 95: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

9 Conclusiones

Como se vio en capítulos precedentes, JoyMeter es un agente de recomendaciones

de actividades personales, que basa sus predicciones en una técnica de recomendaciones

basadas en contenido con el objetivo de obtener recomendaciones de actividades de

manera personalizada de acuerdo a las preferencias de cada usuario.

La implementación de los dos algoritmos de recomendación propuestos requiere de

dos componentes distintos en el perfil de usuario. El primer componente consta de un

conjunto de actividades personales previstas por el usuario. Y el segundo componente

consta del feedback indirecto previsto por el usuario al aceptar o rechazar una actividad

sugerida. Esta información es utilizada por el algoritmo de recomendación con filtro para

priorizar aquellas actividades que han sido del agrado del usuario en el pasado. Ambos

algoritmos de recomendación utilizan un clasificador provisto por Weka para la predicción

de actividades a sugerir.

La evaluación de la propuesta se realizó en dos etapas. En la primera etapa, se

utilizaron los datos obtenidos de actividades cargadas por un conjunto de usuarios junto con

sugerencias realizadas por una heurística de selección aleatoria de actividades. Con estos

datos se obtuvieron métricas sobre las actividades cargadas por cada usuarios y se

realizaron pruebas de precisión a los algoritmos de clasificación provistos por la biblioteca

Weka. Entre los clasificadores con los cuales se experimentó se optó por el clasificador de

redes de Bayes, Naive Bayes, ya que fue el que obtuvo mejor desempeño.

En una segunda etapa, llevada a cabo luego de la interacción de los usuarios con el

sistema de recomendaciones, se evaluó la efectividad de ambas estrategias de

recomendación sobre una muestra de usuarios y se obtuvieron métricas de los niveles de

aceptación sobre las recomendaciones realizadas con ambas estrategias. Los resultados

obtenidos muestran que ambas técnicas de recomendación tuvieron aproximadamente el

mismo grado de aceptación, obteniendo en promedio una diferencia porcentual que se

inclina al clasificador con filtro. Adicionalmente, dicha decisión fue reafirmada al comparar

ambas técnicas de clasificación para un perfil de usuario donde la técnica con clasificación

pura arrojaba mayores aciertos, pero en la práctica, el porcentaje de aceptación fue superior

con la estrategia de recomendación con filtro basado en el feedback implícito.

94

Page 96: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

9.1 Ventajas

A continuación se listan las principales ventajas del desarrollo propuesto en el

presente trabajo:

● Recomendaciones personalizadas mediante métodos no invasivos: Ambos enfoques

personalizan las recomendaciones individuales construyendo los perfiles desde la

interacción con JoyMeter, aprendiendo del comportamiento de los usuarios

individuales.

● Provisión de una técnica interactiva: En ambos enfoques, la concepción de los

perfiles de usuarios no es estática sino que se actualiza de acuerdo a una

determinada periodicidad. Esta característica permite que las recomendaciones se

realicen sobre las preferencias y gustos actuales de un usuario.

● Transparencia al cambio de estrategias: El cambio de estrategia de recomendación,

permite obtener métricas de la efectividad de las mismas sin afectar a la percepción

del usuario en cuanto al uso de la herramienta

● Uso de un dispositivo móvil: Las personas disponen hoy día sus dispositivos móviles

a su alcance en cada momento. Como JoyMeter se basa en la captura de

actividades por parte del usuario. Fué imprescindible que JoyMeter haya sido

realizado para dispositivos móviles para estar siempre al alcance de la mano del

usuario.

● Integración con Facebook: La integración de JoyMeter con Facebook es un punto

positivo ya que existen usuario que hacen uso constante de esta famosa red social

para contar su jornada. JoyMeter brinda la posibilidad que el usuario comparta en

Facebook la actividad que está realizando, fomentando indirectamente el uso de

JoyMeter.

● Decisiones de Diseño: JoyMeter se encuentra íntegramente desarrollado en Java,

con frameworks y estructuras extensibles para poder agregar o modificar

componentes sin que impacten en todo el diseño. Por ejemplo, algunas de las

funcionalidades extensibles son: probar distintas técnicas de recomendación

significa extender la funcionalidad base definida de un solo componente; o cambiar

la estrategia por la cual se calcula subjetivamente la felicidad que el usuario posee

significa extender la funcionalidad del componente LevelOfJoyService y definir su

nueva lógica.

95

Page 97: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

9.2 Limitaciones

Dado que JoyMeter es aún un prototipo, su implementación posee limitaciones,

algunas de las cuales se mencionan a continuación:

● Evaluaciones particulares: El número de usuarios que se utilizó en el sistema no fue

lo suficientemente grande todavía, como para una evaluación más real de las

técnicas de recomendación utilizando métodos o métricas tradicionales.

● Evaluaciones parciales: La captura de datos se realizó durante un período limitado.

Es necesario todavía monitorizar las actividades durante un periodo más amplio, en

el cual contemplar un mayor aprendizaje del agente, comprobando como el

recomendador evoluciona su comportamiento en el tiempo.

● Formato limitado: El recomendador se encuentra acoplado al formato de las

actividades, el cual fijo. Si pudiera desacoplarse a través del uso de palabras claves

(como es planteado en la sección próxima, trabajos futuros), el recomendador

lograría autonomía en su definición para el aprendizaje.

9.3 Trabajos Futuros

En base a las experiencias con JoyMeter, posibles extensiones del enfoque son:

● La priorización de actividades (por ej., de la más reciente sobre la más antigua), para

mejorar el filtrado, evitando recomendar aquellas actividades que dejaron de ser del

agrado del usuario.

● Adecuar el agente, de manera que actúe de manera más “proactiva”, de manera que

en base al nivel felicidad (nivel del día/histórico) decida sugerir (sin intervención del

usuario) una actividad que le genere un nivel de satisfacción dado que ayude a subir

su nivel de felicidad. Por ejemplo, si el nivel de felicidad viene decreciendo, y llega a

una cota/nivel crítico, el agente podría enviar una sugerencia al usuario de una

actividad a recomendar.

● Incluir recordatorios periódicos y amigables para incentivar el registro de las

actividades que está realizando el usuario.

● Recomendaciones colaborativa a través de la integración con Facebook, observando

las actividades que realizan los círculos de amigos de Facebook que también utilizan

JoyMeter.

● Recomendación de actividades basada en la captura de palabras claves en la

descripción de la actividad y no en un tipo predefinido. Por ejemplo, en vez de crear

96

Page 98: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

una actividad que tenga el tipo deporte y en descripción “jugar a la pelota”. El

usuario responderá la simple pregunta de “qué estás haciendo?” y de esa oración a

través de técnicas de data-mining se podrá saber qué tipo de actividad está

realizando y con qué criterio se tendrá en cuenta para realizar una recomendación.

97

Page 99: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

Apéndice

Apéndice A: Escalas de felicidad

1. Escalera de felicidad de Gallup: Propone valorar la felicidad en base a la metáfora de una escalera con escalones

numerados, donde el escalón de más alto (valor 10) representa la mejor vida posible y el más bajo la peor vida posible. El individuo debe responder a la pregunta ¿en qué peldaño de la escalera siente que se encuentra actualmente?

2. Escala de satisfacción con la vida de Diener: Propone 5 afirmaciones sobre la satisfacción del individuo con respecto a su vida y

sus logros, el individuo debe responder el nivel de adhesión con respecto a cada afirmación, con valores entre 1 y 7, donde 7 significa “Totalmente de acuerdo” y 1 significa “Totalmente en desacuerdo”

3. Escala de la felicidad subjetiva de Lyubomirsky: Propone 4 preguntas con respecto al nivel de felicidad general del individuo, a las

cuales se debe responder entre 7 valores los cuales van desde “Poco Feliz” hasta “Muy Feliz”.

4. Satisfacción en áreas específicas: Se propone calificar el nivel de satisfacción con respecto a 7 áreas específicas,

como salud, situación económica y amistades, calificando entre 10 posibles valores, donde 1 corresponde a completamente insatisfecho y 10 a completamente satisfecho.

5. Reconstrucción del día: En este método las personas reconstruyen su día previo, con un cuestionario

autoadministrado. Por ejemplo, la encuesta propuesta por Kahneman et al. (2004) se divide en cuatro módulos. El primer módulo incluye las preguntas mínimas para medir la felicidad, pero agrega preguntas por estados de ánimo. El segundo módulo pide reconstruir el día de ayer como si escribiera un diario de vida: ¿dónde estaba?, ¿qué hizo y experimentó? y ¿cómo se sintió? Estas preguntas permiten que el entrevistado recuerde las actividades realizadas, horas de inicio y término, y el grado de satisfacción personal asociado a ellas. El tercer módulo profundiza en la descripción y sentimientos asociados a cada episodio del día anterior. El cuarto módulo incluye preguntas generales sobre cómo fue el día de ayer, cómo se sintió el entrevistado y cómo lo percibe que lo vio el resto.

6. Escala de Fredrickson: Propone veinte adjetivos que describen cada emoción a niveles de intensidad

diferente con una escala de 5 grados de intensidad. Para computar una razón o ratio de positividad, el individuo debe indicar en qué nivel ha experimentado (usando una escala de 0 a 4 donde 0 es nada y 4 es mucho) cada una de las veinte emociones. Se debe contar con un uno todas las emociones positivas en el que hayas contestado un nivel de intensidad

98

Page 100: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

igual o mayor de 2. Contar con un uno todas las emociones negativas en el que hayas contestado hayas contestado un nivel de intensidad igual o mayor a 1. y finalmente dividir el total de emociones positivas por el de negativas (o por 1 en caso de ausencia de emociones negativas).

Apéndice B: Tecnologías utilizadas en el Servidor de JoyMeter

Para la implementación del servidor, se optó por la tecnología JEE, utilizando el

framework Spring, el cual simplifica y facilita el desarrollo de aplicaciones web (entre otras),

junto con Jersey para exponer los distintos endpoints y JPA/Hibernate para la persistencia

de datos.

Entre las ventajas de utilizar JEE, Spring y Jersey frameworks: ● Se consiguen plataformas para el despliegue en la nube sin costo

● Spring ofrece una amplia gama de soluciones para facilitar y agilizar el desarrollo

de servicios web.

● Spring IoC containers e inyección de dependencias, facilitan el desarrollo y delega

la creación de objetos a el framework

● Jersey facilita el desarrollo de servicios web Restful, permitiendo exponer los

servicios con gran variedad de representaciones de datos (media types)

● Jersey ofrece su propia API que se extienden al conjunto de herramientas JAX-RS

con las características y utilidades adicionales para simplificar aún más el servicio

REST y desarrollo de clientes

El uso de Hibernate/JPA: El desarrollo es más productivo, el ORM ayudará a disminuir el tiempo requerido

para la implementación de una aplicación de forma exponencial, al eliminar la necesidad de

profundizar en la codificación de mecanismo de mapeo objeto/relacional.

Bien diseñado: ORM es un patrón de un diseño arquitectónico efectivo, ya fue

implementado y bien probado durante un período de tiempo. No tenemos que gastar

nuestro tiempo para hacer de nuevo algo que ya está hecho, probado y utilizado por

muchos años.

Hibernate es independiente del motor de base de datos

Ya que Hibernate es Orientado a objetos, la curva de aprendizaje es mucho más

corta.

99

Page 101: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

Estructura del servidor

Una aplicación de servicios web estándar desarrollada con spring se encuentra

estructurada en capas, es por eso que el servidor de JoyMeter se encuentra dividido en una

arquitectura por capas. La arquitectura basada en capas tiene se enfoca en la distribución

de roles lo cual facilita la distribución de responsabilidades y un fácil mantenimiento, ya que

en caso que sobrevenga algún cambio, solo se atacará el nivel requerido sin tener que

involucrar a las demás capas. En ambientes colaborativos, permite distribuir el trabajo por

niveles. De este modo, cada grupo de trabajo estará totalmente abstraído del resto de los

niveles, solo bastará conocer la API que existe entre niveles.

Spring ofrece gran número de soluciones siguiendo este patrón, invitando a

extender/implementar sus interfaces y hacer uso de las mismas.

Manejo de excepciones Adicionalmente, el server cuenta con un componente que opera de manera

transversal a las 3 capas, este componente es el ExceptionHandler, propio del framework

Jersey. Este componente es el encargado de manejar las excepciones de la aplicación para

retornar una respuesta http valida, con su status code correspondiente. Por ejemplo, en la

capa de presentación, nos podemos topar en tiempo de ejecución con un request mal

formado, por lo que se lanzara una excepcion JoymeterBadRequestException la cual por

100

Page 102: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

extender de WebApplicationException será manejada por el exception handler de Jersey,

generando una respuesta con status code 400 (Bad Request).

Las excepciones correspondientes serán descritas con un mayor nivel de detalle en

la capa de presentación, por cada llamado a la api.

Capa Resource - Capa de presentación

La capa Resource, expone los recursos que el servidor de JoyMeter brinda a sus

clientes. Para lograr este objetivo, el servidor utiliza http como protocolo de comunicación a

través de una API de servicios REST. Se optó por utilizar Jersey ya que es la API oficial de

RESTful de Oracle.

Un Sistema RESTful ofrece beneficios adicionales como el desacoplamiento,

permitiendo un sistema altamente escalable.Se puede escalar muy ampliamente mediante

la adición de nodos de servidor adicionales con un balanceador de carga. Al poseer una

interfaz uniforme beneficia que no debamos documentar por cada recurso, las operaciones

básicas de la API. Cada recurso se expone a través de una URI con los cuatro métodos

(GET, POST, UPDATE, DELETE) para referirse a nuestros recursos, lo que asegura que

cualquier herramienta que pueda trabajar con HTTP (de los cuales hay muchas) puedan

comunicarse con nuestro servidor. Cuando se hace correctamente, esto significa que el

cliente no necesita comprender nada más que el formato de datos. En particular, no es

necesario entender la estructura URI del servidor. Idealmente, una API REST será

consumida por un conjunto de clientes, que comprendan los formatos de datos (que hablen

el mismo idioma).

101

Page 103: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

JoyMeter, expone tres apis para la interacción con los clientes. Estos son: SessionResource:

● Método POST ({joymeter.uri}/sessions) para atender la solicitud de alta de un

usuario, con la información necesaria para identificar al mismo y el dispositivo con el

cual se registró. En respuesta a esta solicitud, se retornará la credencial que

identifica al usuario con el dispositivo, la cual deberá ser utilizada para posteriores

consultas al servidor.

UserResource:

● Método GET ({joymeter.uri}/users/me) para atender la solicitud de obtener la

información de un usuario.

● Método PUT ({joymeter.uri}/users/me) para atender la solicitud de actualizar la

información de un usuario.

● Método GET ({joymeter.uri}/users/me/loj) para atender la solicitud de obtener el

historial de nivel de felicidad de un usuario en el transcurso de n días.

● Método GET ({joymeter.uri}/users/me/suggest) para atender la solicitud de un

usuario que desea que se le sugiera una actividad a realizar.

La representación gráfica de resftulObjects de los resource Session y User quedaría de la siguiente manera:

ActivityResource:

● Método GET ({joymeter.uri}/activities) para atender la solicitud de obtener todas las

actividades realizadas por el usuario en cuestión.

102

Page 104: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

● Metodo POST ({joymeter.uri}/activities) para atender la solicitud de agregar una

nueva actividad para un usuario determinado.

● Método GET ({joymeter.uri}/activities/{id}) para atender la solicitud de obtener en

detalle una actividad en particular (identificada por su id).

● Método PUT ({joymeter.uri}/activities/{id}) para atender la solicitud de actualizar la

información de una actividad en particular (identificada por su id).

● Método DELETE ({joymeter.uri}/activities/{id}) para atender la solicitud de borrar una

determinada actividad (identificada por su id).

● Método POST ({joymeter.uri}/activities/syncup) para atender la solicitud proveniente

del cliente para actualizar el servidor con los últimas actividades del usuario (cuando

el cliente no puede conectarse con el servidor por problemas externos a la

aplicación, el cliente guarda temporalmente estos cambios y la informa al servidor

una vez establecida nuevamente la conexión).

La representación gráfica de ActivityResource se muestra a continuación:

A continuación se presenta las posibles respuestas de error propias de JoyMeter por cada operacion en la API:

Resource Operation Descripcion de la

operación

Caso de error HTTP Status code

Excepción que dispara el error

Joymeter error code

103

Page 105: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

sessions POST signUp de usuario

Token de facebook invalido

400 - Bad request

JoymeterBadRequestException

100

Token de facebook vencido

400 - Bad request

JoymeterBadRequestException

101

activities GET Obtiene el listado de todas las actividades del usuario autenticado

N/A N/A N/A N/A

POST Agrega una actividad al usuario autenticado

N/A N/A N/A N/A

activities/{id}

GET Obtiene la actividad con identificador <id> de la actividad

Identificador de actividad inválido

400 - Bad request

JoymeterBadRequestException

102

El usuario autenticado no tiene permisos para acceder a la actividad de identificador <id>

401 - Unauthorized

JoymeterUnauthorizedException

99

DELETE Elimina la actividad con identificador <id> de la actividad

Identificador de actividad inválido

400 - Bad request

JoymeterBadRequestException

102

El usuario autenticado no tiene permisos para acceder a la actividad de identificador <id>

401 - Unauthorized

JoymeterUnauthorizedException

99

PUT Modifica la actividad con identificador <id> de la actividad

Identificador de actividad inválido

400 - Bad request

JoymeterBadRequestException

102

El usuario autenticado no tiene permisos para acceder a la actividad de identificador <id>

401 - Unauthorized

JoymeterUnauthorizedException

99

users/me GET Obtiene la representación del usuario autenticado

N/A N/A N/A N/A

PUT Modifica los datos del usuario autenticado

N/A N/A N/A N/A

users/me/suggest

GET Sugiere una actividad al usuario autenticado

N/A N/A N/A N/A

users/me/loj

GET Obtiene el histórico de nivel de felicidad para el usuario autenticado

N/A N/A N/A N/A

104

Page 106: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

Adicionalmente todas las operaciones son interceptadas por JoymeterSecurityInterctor (cuyas responsabilidades son descritas en la sesión) quien valida a partir de las credenciales previstas si es un usuario previamente autenticado. Los errores derivados de esta validación se describen en la siguiente tabla:

Caso de error HTTP Status code

Excepción que dispara el error

Joymeter error code

No se pasan las credenciales en el request

401 - Unauthorized

JoymeterUnauthorizedException

99

Token de sesión inválido

400 - Bad request

JoymeterInvalidSessionException

98

Seguridad en la capa de presentación:

Para asegurar el acceso de clientes autenticados a los distintos recursos expuestos,

y asegurar que únicamente el cliente autenticado y autorizado para un usuario dado puede

acceder únicamente a los recursos de ese usuario.

HTTP Basic es el mecanismo de seguridad elegido para proteger el server de

llamados no autorizados. Como HTTP no posee estado, hay que enviar las credenciales en

cada petición.

Las credenciales son incluidas agregando un header del tipo Authorization, con el

formato Authorization: Bearer {joymeterSessionId}. Siendo joymeterSessionId la credencial

que identifica a un usuario utilizando un dispositivo en la aplicación.

Si se intenta acceder a un recurso protegido sin la cabecera Authorization, el

servidor responde con un status 400 Bad request y la descripción del error en formato

JSON.

A favor y en contra del HTTP Basic:

● A favor:

105

Page 107: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

○ Estándar HTTP, funciona out-of-the-box. ○ Es RESTfull, no obliga a mantener estado en el servidor.

● En contra: ○ La credencial del usuario se transmite sin cifrar.

Para solucionar el punto que posee en contra, se utilizará HTTPs para el cifrado de

cada solicitud. De esta manera se protegerá la información sensible de JoyMeter.

El único método que no se encuentra protegido es el que atiende la solicitud de alta

de un usuario. Ya que claro está, no existe al momento del llamado, las credenciales del

usuario en cuestión.

Capa Service - Capa de lógica

Es la capa que a partir de una petición de la capa de presentación, se encarga de la

lógica de negocio de la aplicación, y de la comunicación con la capa de Repository para la

persistencia de los datos.

La capa service, puede hacer uso de otros componentes del mismo nivel para llevar

a cabo su tarea.

Aquí, se encuentran validación y verificaciones relacionadas a la lógica del negocio,

cálculos, manipulación de datos, y como ya se mencionó, el acceso y persistencia de los

datos a través de la capa repository.

JoyMeter Server tiene en su capa de lógica los siguientes servicios:

● UserService ● ActivityService ● SessionService ● NotificationService ● RecomendationService ● LevelOfJoyService

User service: User service es el encargado de toda la lógica relacionada a las acciones que se

pueden hacer para un usuario, como actualizar un usuario, obtener una actividad sugerida

para ese usuario o obtener el Level of Joy histórico del usuario.

Este servicio, se sirve de otros servicios como NotificationService,

LevelOfJoyService y RecomendationService para completar la funcionalidad de cada

método. Asi como también hace uso del repositorio UserRepository para persistir los datos

del usuario una vez completadas con las acciones de cada método.

106

Page 108: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

Activity service: Se ocupa de la lógica relacionada a las actividades de un usuario como: obtener una

actividad en base a su identificador, agregar una nueva actividad de un usuario, borrar una

actividad y actualizar una actividad.

Este servicio hace uso del LevelOfJoyService ,para actualizar los niveles de felicidad

en base a los cambios en las actividades. El nivel de felicidad de un día dado, se calcula en

base a la totalidad de las actividades de ese día, la satisfacción alcanzada por cada una de

estas y el nivel del día anterior. Es por esta razón que cada nueva actividad, cada

actualización o eliminación, afecta al cálculo del nivel cada día.

Adicionalmente, activity service hace uso del ActivityRepository, para persistir las

actividades y sus cambios.

Session service: Es responsable de la lógica de autenticación y generación de sesiones. Este

servicio, tiene un solo método signUp, el cual se comunica con la API de facebook usando

el token del usuario, valida el mismo contra facebook, si este no es un usuario válido de

facebook retorna una excepción, la cual será manejada posteriormente por un exception

handler de jersey y devuelta como un error Bad Request. Si el usuario es un usuario de

facebook, y el token no ha expirado, en base a el email que nos retorna facebook, se valida

si el usuario es un usuario de JoyMeter y se genera una session para el mismo, caso

contrario, se crea un usuario de joymeter y se genera la session para este.

Para lograr la comunicacion con facebook, se usa el modulo de spring “Spring

Social”.

Para la persistencia de las sesiones se usa el SessionRepository, mientras que la validación

de la existencia del usuario y la persistencia de un nuevo usuario se hacen a través de

UserRepository.

Notification service: Es el encargado de la lógica para notificar al usuario sobre una actividad sugerida.

Este servicio sigue el patrón strategy, facilitando la implementación de distintas estrategias

para la notificación de actividades. Para poder enviar notificaciones a los clientes, el

servidor debe ser dado de alta en al API de GCM de google. Google provee una clave para

al Servidor, de esta manera se reconoce que 3rd party server está haciendo cuál llamado.

107

Page 109: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

Dentro de llamado deberá incluirse a quien será dirigido el mensaje (en el campo “to”

, irá el GCM Token id del cliente cuando se registró a la api) y en “data” puede ir cualquier

objeto en formato JSON, este será el mensaje en sí. {

"to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",

"data" : {

...

},

}

Para enviar el mensaje, la implementación actual, utiliza el default client de Jersey

para hacer un llamado post, con la información necesaria para ejecutar el envío de mensaje

satisfactoriamente.

Este servicio es utilizado, por el servicio UserService.

108

Page 110: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

Recommendation service: Es el servicio encargado de elegir una actividad para sugerir a un usuario. Este

servicio sigue el patrón strategy, permitiendo implementar nuevas estrategias para la

elección de la actividad a recomendar. Hoy se ofrece una implementación simple, la cual

toma las dos estrategias de recomendación mencionadas en el capítulo 7 - enfoque. Este

servicio es utilizado, por el servicio UserService.

Level of Joy service: Es el responsable de mantener el cálculo del nivel de felicidad histórico. El nivel de

felicidad se actualiza para cada día, en cada cambio en las actividades del usuario, ya sea

una nueva actividad, una actividad que se elimina o una que se actualiza. Es importante re

calcular los niveles de satisfacción históricos en cada cambio de actividad porque el nivel de

felicidad de un día dado se calcula en base al nivel del día anterior, aplicando un factor de

decaimiento, y aplicando el nivel obtenido de las actividades del dia:

AF (t) = F (t−1) × d + (t)

F: función nivel de satisfacción en el día t D: factor de decaimiento A: función nivel de satisfacción promedio en actividades del día t

El servicio Level Of Joy, sigue el patrón template method, permitiendo implementar

distintas alternativas para el cálculo de la función A y el factor de decaimiento d

Por defecto, el cálculo se hace sacando el promedio del nivel de felicidad de las

actividades del día, y se aplica como factor de decaimiento el valor 0.99

109

Page 111: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

LevelOfJoyService hace uso de ActivityRepository para obtener la información de las

actividades, y del LevelOfJoyRepository para persistir los cálculos de los niveles de felicidad

históricos, como para obtener el historial y ser retornado en el método

getLastEntriesByUser.

Capa Repository - Capa de persistencia

La capa repository, es la capa encargada de persistir los datos, y obtener los datos

de forma transparente a la capa superior (capa de servicio). Esta capa sigue el patrón de

strategy, permitiendo la implementación de distintas alternativas para la persistencia de

datos sin afectar a la capa superior, abstrayendo y encapsulando la implementación de la

persistencia, de esta manera, podemos persistir ya sea en una base de datos relacional, por

medio de un ORM como Hibernate, o consumiendo un servicio REST externo, sin

necesidad de modificar los llamados hechos en la capa de servicio.

110

Page 112: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

Se eligió persistir los datos en una una bd relacional, MySQL. Donde se guardarán el

perfil de los usuarios, las actividades que el usuario va realizando, así como también el

historial de felicidad del usuario y las sugerencias. La persistencia, como se mencionó

anteriormente se realiza utilizando la implementación JPA de Hibernate.

Por ejemplo para el caso del UserRepository, el cual es utilizado por los servicios

SessionService y UserService. La interfaz UserRepository, define todos los métodos para

obtener la información del usuario y para persistir los cambios del mismo.

La implementación actual, implementa estos métodos definidos en la interfaz por medio de

JPA/Hibernate.

Contamos con cinco repositorios:

● ActivityRepository

111

Page 113: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

● AdviceRepository ● LevelOfJoyRepository ● SessionRepository ● UserRepository

Cada uno encargado del acceso a datos de una entidad determinada, estas

entidades hoy se encuentran mapeadas uno a uno con una tabla de la base de datos, las

tablas son:

Apéndice C: Tecnologías utilizadas en el Cliente de JoyMeter

● Facebook SDK: El SDK de facebook para Android, integra cualquier aplicación

Android que se desarrolle con la famosa red social. Luego de la integración, se

podrá hacer inicio de sesión, compartir contenido, enviar mensajes, invitaciones a la

aplicación, etc. Para más información https://developers.facebook.com/docs/android/

● GCM (Google Cloud Messaging): es el servicio gratuito de google para enviar

mensajes en varias plataformas, como Android, iOS y Chrome. Por ejemplo, un

servidor puede enviar mensajes directamente a dispositivos individuales, grupos de

dispositivos o dispositivos suscritos a temas. Además, la aplicación en un dispositivo

112

Page 114: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

puede enviar mensajes directamente a un servidor y a los dispositivos que

pertenecen al mismo grupo. Para más información https://cloud.google.com/

● Otto: Otto es un proyecto de código abierto diseñado para implementar un bus de

eventos, donde los componentes pueden publicar y suscribirse a eventos de su

interés.

Utilizando Otto se logra desacoplar las diferentes partes de la aplicación al mismo

tiempo que les permite comunicarse de manera eficiente. Otto hace uso solamente

de 2 métodos. Lo cual lo hace muy simple para manejar. El método register acepta

por parámetro un componente el cual desea registrarse al bus de eventos. (en este

caso this es un componente visual).

A través de la anotación @Subscribe, se definen en el componente que se

subscribió, los métodos que se ejecutarán en caso de que un evento de su interés

sea ejecutado. Cuando un evento se dispare con el DTO que el componente

interesado define en su clase, se atenderá el evento disparado.

Por último, el componente que desee disparar este evento en el Bus, deberá hacerlo

con el método post de la siguiente manera

Para más información http://square.github.io/otto/

● Retrofit: Retrofit es el HTTP client creado para Android por square. Retrofit

convierte una HTTP API en una interfaz de Java.

113

Page 115: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

En este ejemplo puede verse la declaración de la interfaz GitHubService, con un

método listRepost() el cual arriba de la declaración del método, tiene una anotación

que dicho método se refiere a un llamado GET al path “users/{user}/repos” donde

{user} es un Path param en la url, definido tanto en la anotación, como en el método.

La clase Retrofit genera la implementación de la interface GitHubService

Cada llamada a los métodos creados en la interfaz, podrán ser sincrónicos (busy

waiting) o asincrónicos (definiendo un callback). En nuestro caso hacemos uso de los

llamados asincrónicos, justamente para evitar una espera ocupada y lograr así, una

aplicación más fluida a vista del usuario.

● GreenDao: greenDAO es una biblioteca de código abierto para Android que

proporciona una interfaz fácil de usar para bases de datos SQLite para ayudar a los

desarrolladores a manejar datos de manera eficiente mediante mapeo de objetos

Java a tablas de la base (a menudo llamadas ORM). De esta manera se puede

almacenar, actualizar, eliminar y realizar queries para los objetos Java usando una

API orientada a objetos simples.

Para poder utilizar greenDAO en cualquier proyecto Android, es necesario crear un

proyecto secundario, el cual generará el código específico para el proyecto que se

está trabajando en cuestión (creando las respectivas entidades con las relaciones y

restricciones pertinentes). Esta funcionalidad se desacopló del uso de la base, en

relación a la construcción de la misma, por cuestiones de practicidad, modelamiento

y performance.

114

Page 116: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

Para más información http://greenrobot.org/greendao/documentation/introduction/

● MPAndroidChart: es una librería para desplegar todo tipo de gráficos en

aplicaciones Android, estos pueden ser gráficos de linea, de barra horizontales o

verticales, gráficos de torta, gráficos de vela, gráficos de burbuja, gráficos del tipo

radar, etc. Todos customizables y con la posibilidad de adaptarlos a la interfaz visual

de cualquier aplicación android. Solamente bastará indicar el tipo de gráfico, los

índices, la escala y el contenedor visual donde se desplegará. Para más información

https://github.com/PhilJay/MPAndroidChart

Autenticación con JoyMeter (Login)

Al estar JoyMeter integrado con Facebook, el usuario que desee utilizar la aplicación

por primera vez se encontrará con una página de Login, que le informará los términos y

condiciones de la aplicación, así como también los permisos necesarios para integrarse con

Facebook. El usuario se autenticará con las credenciales de facebook. Y posteriormente

pasará a estar registrado en JoyMeter.

Hay dos modos de implementar el inicio de sesión con Facebook en Android:

● Clase LoginButton: proporciona un botón que puedes agregar a tu interfaz de

usuario. Sigue el token de acceso actual y tiene la capacidad de iniciar y cerrar

sesiones.

● Clase LoginManager: permite comenzar inicios de sesión sin usar ningún elemento

de la interfaz de usuario.

115

Page 117: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

JoyMeter, hace uso del botón de Login en la pantalla inicial. Para que el botón sea

visible al usuario solamente bastará asociar al layout de la pantalla de Login la clase

correspondiente al Botón de Facebook, y una acción al ser seleccionado por el usuario

(FacebookCallback).

En esta porción del código se puede apreciar que al botón “loginBtn” se le registra

un callback del tipo FacebookCallback<LoginResult>. Se creará una clase anónima con

dicha interfaz y se definirán los métodos “onSuccess”, “onCancel” y “OnError” para cada

resultado respectivamente.

Para identificar cada dispositivo Android que es usado para utilizar JoyMeter

debemos incluir el alta del dispositivo en GCM, en el proceso de registración del usuario que

ya poseíamos con facebook. El flow completo para el login del usuario sería:

116

Page 118: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

JActivityService - Presentador de Actividades

Puede considerarse la capa de lógica que involucra todas las operaciones que

pueden llegar a realizarse con las actividades del usuario (crear, modificar, consultar,

eliminar), teniendo en cuenta la interacción con la base de datos local del cliente y la

actualización con el server, cuando así se requiera. Veamos cada caso particularmente.

● Obtener las actividades correspondientes al usuario

○ Obtener las actividades de la base local

○ En caso que no exista ninguna solicitarlas al servidor

○ Al obtener la respuesta del servidor actualizar la base local

○ Disparar un evento con las actividades del usuario

Diagrama flujo - obtener localmente las actividades realizadas

117

Page 119: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

Diagrama flujo - solicitar las actividades al servidor ya que localmente no existen

● Agregar una actividad nueva. ○ Agregar la actividad en la base local

○ Llamar al servidor para agregar la actividad en el servidor.

○ En caso de no haber conexión o falla de conexión con el servidor, se

guardará localmente la acción para sincronizar el servidor posteriormente.

Diagrama de flujo - agregar una actividad local y en el servidor

Diagrama de flujo - servidor inaccesible, se guardará la acción para sincronizar luego

118

Page 120: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

● Actualizar una actividad existente ○ Actualizar la actividad en la base local

○ Llamar al servidor para actualizar en el servidor la actividad modificada.

○ En caso de no haber conexión o falla de conexión con el servidor, se

guardará localmente la acción para sincronizar el servidor posteriormente.

○ Disparar un evento con la actividad actualizada.

Diagrama de flujo - actualizar una actividad local y en el servidor Como puede verse en el diagrama, si existe conexión a internet se envía la

información al servidor de JoyMeter para actualizar la actividad. En caso de que el resultado

del llamado al servidor sea un success, como ya se encuentra en la base local, no se realiza

ninguna acción. En caso de que el servidor nos retorne un error. Se guardará la acción, para

actualizar el server más tarde.

En caso de que no haya conexión a internet. El flujo sería el siguiente

Diagrama de flujo - servidor inaccesible, se guardará la acción para sincronizar luego

En caso de que el connectivityHelper retorne que no existe conección a internet. Se

procederá a guardar temporalmente la acción para sincronizar con el servidor cuando la

conexión se re-establezca.

● Eliminar una actividad existente.

119

Page 121: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

○ Eliminar la actividad en la base local. ○ Llamar al servidor para eliminar la actividad en el servidor. ○ En caso de no haber conexión o falla de conexión con el servidor, se

guardará localmente la acción para sincronizar el servidor posteriormente. ○ Disparar un evento con la actividad eliminada.

Al igual que en el flujo de actualizar una actividad, la respuesta satisfactoria del

server se desestima, ya que localmente se eliminó. En caso que el servidor de JoyMeter

retorne un error. Se procederá a guardar la acción correctora para cuando se restablezca la

conexión.

● Sincronizar información con el servidor

○ Para enviar la información necesaria para sincronizar la información del

cliente al servidor, hay que tener unas consideraciones necesarias. Ya que el

usuario puede estar interactuando con el celular, creando, eliminando y

modificando actividades, que luego deberán o no, -depende de la acción que

se realizó- ser informada al servidor. Por ejemplo, si mientras el usuario no

posee conexión a internet crea una nueva actividad y luego la modifica. Al

servidor habrá que enviarle solamente el alta de una nueva actividad con los

valores de la actualización. También existe el caso en que primero cree una

actividad, luego la modifique, y al final la elimine. En ese caso, no habrá que

enviar información alguna de dicha actividad al servidor.

El payload para la api de sincronización corresponde al formato:

120

Page 122: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

Donde syncupActionMethod podrá ser “SAVE”, “UPDATE” o “DELETE” y activity es toda la información contenida de la actividad. Cuando el endpoint de syncup responde con un SUCCESS, confirmando que la base de datos del server se actualizó correctamente, se procede a eliminar toda la información temporal del celular.

Compartir con Facebook

El código necesario para publicar una actividad recién realizada se encuentra centralizado en el siguiente método:

Si el usuario seleccionó compartir en facebook la actividad, ya sea creada o

actualizada recientemente. Se inicializa el SDK de facebook, se crea el callbackManager, y

el contenido ShareContent de facebook a compartir.

121

Page 123: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

Se creó la clase ShareUtils, para centralizar y simplificar la lógica para crear el

contenido a compartir en facebook, a través de la actividad pasada por parámetro.

Con el método show, se desplegará la ventana de facebook para compartir el

contenido, permitiendo al usuario la opción de etiquetar personas, indicar en qué ubicación

está realizando la actividad. Así como también escribir un comentario personalizado en

base a la publicación

Apéndice D: Manual de usuario

Pantalla inicial/principal de JoyMeter

Una vez que el usuario se haya autenticado a través de facebook, se accede a la

pantalla de inicio. En la misma se encuentran el listado de las últimas actividades, el botón

se utiliza para crear nuevas actividades y un botón para poder acceder al gráfico de

satisfacción de los últimos días.

122

Page 124: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

Cómo agregar una nueva actividad

Para cargar una nueva actividad, se debe presionar el botón , se abrirá un

formulario de carga, en el cual se podrá cargar:

● El título de la nueva actividad

● El tipo de actividad (Trabajo, Entretenimiento, Recreación, Descanso, etc)

● La descripción de la actividad

● El nivel de satisfacción (de 1 a 5, representado con estrellas)

● Fecha y hora de inicio de la actividad

● Duración de la actividad

● Si se desea compartir esta actividad en Facebook

Una vez cargados estos campos, se debe presionar el botón ubicado en la

esquina superior derecha para confirmar la creación de la actividad. Una vez guardada la

actividad se retorna a la pantalla principal.

En caso que el usuario seleccione que desea compartir la actividad en Facebook,

antes de retornar a la pantalla principal se abrirá una pantalla de facebook para publicar en

la red social la actividad que está realizando el usuario. La misma tendrá una descripción

pre-cargada. El usuario podrá modificar/agregar el detalle de lo que va a publicar cómo

agregar una imagen a la misma publicación, como así también etiquetar amigos, mostrar

dónde se encuentra.

123

Page 125: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

Cómo editar una actividad

En la pantalla principal de JoyMeter se listan las actividades más recientes del

usuario, manteniendo presionada la actividad deseada, se despliega un menú con las

opciones Editar y Eliminar.

Si se selecciona la opción Editar, se abrirá la página con un formulario con los mismos

campos que el formulario de carga, con los valores de la actividad precargados:

● El título de la actividad

● El tipo de actividad

● La descripción de la actividad

● El nivel de satisfacción

● Fecha y hora de inicio de la actividad

● Duración de la actividad

● Si se desea compartir esta actividad en Facebook

Una vez actualizados los campos deseados, se debe presionar el botón ubicado

en la esquina superior derecha. Una vez guardada la actividad actualizada con los nuevos

valores se retorna a la pantalla principal.

Al igual como en el caso de creación de una nueva actividad. En caso que el usuario

haya seleccionado que desea compartir la actividad en Facebook, se abrirá de la misma

manera anteriormente descrita la pantalla de facebook para compartir en la red social la

actividad.

124

Page 126: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

Cómo eliminar una actividad

En la pantalla principal de JoyMeter, manteniendo presionada la actividad deseada,

se despliega un menú con las opciones Editar y Eliminar.

Si se selecciona la opción Eliminar , se eliminará la actividad mostrando una notificación de

que se eliminó correctamente.

Gráfico de Satisfacción

En la pantalla principal de JoyMeter, al presionar el botón , se desplegará un

gráfico que representa el nivel actual de felicidad que el usuario posee, así como también el

historial de los últimos N días de cómo fue variando el nivel de felicidad. Esta variación se

calcula en base a las actividades que el usuario fue realizando y el nivel de satisfacción que

fue cargando en cada actividad.

Sugerencia de Actividades

Al final de la vista anterior, se puede apreciar el botón que el usuario puede utilizar

para solicitar a JoyMeter, le sugiera una actividad a realizar. La recomendación es

informada al usuario a través de una push-up notification.

125

Page 127: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

Al hacer clic en la notificación se abre la aplicación de JoyMeter y se carga la

actividad que fue sugerida para ser finalmente aceptada por el usuario o descartada.

126

Page 128: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

11 Referencias [1] Daniel Goleman - Inteligencia Emocional - 1996.

[2] Martin Seligman - Authentic Happiness -2002.

[3] Fredrickson, B. L. - What good are positive emotions? - 1998.

[4] Fredrickson, B. L. The role of positive emotions in positive psychology: The broaden-and-build theory of positive emotions. - 2001. [5] Lucas, R.E., Diener, E., Larsen, R.J. - Measuring positive emotions - 2003. [6] Diener, Ed; Smith, Heidi; Fujita, Frank - The personality structure of affect - 1995. [7] Csikszentmihalyi, M. - Society, culture and person: a systems view of creativity - 1988. [8] Fredrickson, B. L.; Joiner, T. - Positive emotions trigger upward spirals toward emotional well-being - 2002. [9] Oros, L. B.; Richaud, M.C.;Vanucci,V. - Desarrollo de emociones positivas en la niñez. Lineamientos para la intervención escolar. - 2011. [10] Derryberry, D. y Tucker, D. M. - Motivating the focus of attention. - 1994. [11] Isen, A. M. - Positive effect and decision making. - 2000. [12] Isen, A. M. y Daubman, K. A. - The influence of affect on categorization. - 1984. [13] Isen, A. M., Daubman, K. A. y Nowicki, G. P. - Positive affect facilitates creative problem solving. - 1987. [14] Isen, A. M., Johnson, M. M. S., Mertz, E. y Robinson, G. F. - . The influence of positive affect on the unusualness of word associations. - 1985. [15] Lyubomirsky, S., Sheldon, K. M., & Schkade, D. - Pursuing happiness: The architecture of sustainable change - 2005. [16] Fredrickson, B. L. - The value of positive emotions - 2003. [17] Fredrickson, B. L. y Levenson, R. W. - Positive emotions speed recovery from the cardiovascular sequelae of negative emotions. - 1998. [18] Fredrickson, B.L., Mancuso, R.A., Branigan, C. y Tugade, M.M. - The undoing effect of positive emotions - 2000. [19] Fredrickson, B. L. - Cultivating positive emotions to optimize health and well-being. - 2000 [20] Fridja, N.H. - The emotions. - 1986. [21] Salovey, P., Stroud, L.R., Woolery, A. y Epel, E. - Perceived emotional intelligence, stress reactivity, and symptom reports: further explorations using the trait meta-mood scale. - 2002. [22] M. Wooldridge and N. R. Jennings - Intelligent agents:Theory and practice - 1995. [23] Maes, P. - Agents that reduce work and information overload- 1994. [24] Denis Lemongew Nkweteyim. - A Collaborative Filtering Approach To Predict Web Pages of Iterest from Navigation Patterns of Past Users Within an Academic Website. - 2005. [25] Pazzani M. J., Muramatsu J., Billsus D.: Syskill & Webert: Identifying Interesting Web Sites. - 1996. [26] Lang, K. - Newsweeder: Learning to filter news. - 1995. [27] Belkin, N. and Croft, B. - Information filtering and information retrieval. - 1992.

127

Page 129: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

[28] A. Woodruff, R. Gossweiler, J. Pitkow, E.H. Chi, and S.K. Card. - Enhancing a Digital Book with a Reading Recommender. - 2000. [29] Kamba, T. Bharat, K. Albers, M.C. - The Krakatoa Chronicle: An Interactive, Personalized Newspaper on the Web - 1995. [30] Balabanović, M. Shoham, Y. - Fab: Content-Based, Collaborative Recommendation - 1997. [31] Sarwar, B. M., Karypis, G., Konstan, J. A., and Riedl, J. - Item-based Collaborative Filtering Recommender Algorithms. - 2001. [32] Schafer, J. B., Konstan, J. and Riedl, J. - Recommender Systems in E-Commerce - 1999. [33] Konstan, J. A., Riedl, J., Borchers, A. and Herlocker, J. L. - Recommender Systems: A GroupLens Perspective. - 1998. [34] Burke, R. Hybrid Recommender Systems: Survey and Experiments. User Modeling and User-Adapted Interaction. - 2002. [35] Ungar, L. H., and Foster, D. P. - Clustering methods for collaborative filtering. - 1998. [36] Konstan, J., Miller, B., Maltz, D., Herlocker, J., Gordon, L., and Riedl, J. - GroupLens:Applying Collaborative Filtering to Usenet News. - 1997. [37] Claypool, M., Gokhale, A., Miranda, T., Murnikov, P., Netes, D. and Sartin,M. - Combining Content-Based and Collaborative Filters in an Online Newspaper - 1999. [38] Towle, B. and Quinn, C. - Knowledge Based Recommender Systems Using Explicit User Models - 2000. [39] Resnick, P., Iacovou, N., Suchak, M., Bergstrom, P. and Riedl, J. - GroupLens: An Open Architecture for Collaborative Filtering of Netnews - 1994. [40] Shardanand, U., and Maes, P. Social Information Filtering: Algorithms for Automating 'Word of Mouth'. In Proceedings of CHI '95. Denver, CO - 1995. [41] Burke, R. Hybrid Recommender Systems: Survey and Experiments. User Modeling and User-Adapted Interaction. 12(4), pages 331-370. [42] Hanani, U., B. Shapira, and P. Shoval, ‘Information filtering: Overview of issues, research and systems’. User Modeling and User Adapted Interaction 11 - 2001. [43] Breese, J. S., Heckerman, D. and Kadie, C - ‘Empirical analysis of predictive algorithms for collaborative filtering’. In: Proceedings of the 14th Annual Conference on Uncertainty in Artificial Intelligence - 1998. [44] Krulwich, B -‘Lifestyle Finder: Intelligent User Profiling Using Large-Scale Demographic Data’. Artificial Intelligence Magazine 18 (2) - 1997. [45] Middleton, S.E. "Capturing knowledge of user preferences with recommender systems", Mini-thesis, University of Southampton - 2001. [46] Yiming Yang and Xin Liu. A re-examination of text categorization methods. In Proceedings of the 22nd Annual International ACM SIGIR Conference on Research and development in information retrieval - 1999. [47] Ian H Witten, Eibe Frank, and Mark A Hall. Data Mining: Practical Machine Learning Tools and Techniques: Practical Machine Learning Tools and Techniques. Elsevier - 2011. [48] Vladimir Vapnik. The Nature of Statistical Learning Theory. Springer - 1995. [49] Hofmann - Probabilistic latent semantic indexing - 2004. [50] E. Cohen, M. Datar, S. Fujiwara, A. Gionis, P. Indyk, R. Motwani, J. Ullman, and C. Yang. Finding Interesting Associations without Support Pruning. In Proc. of the 16th Intl. Conf. on Data Engineering - (ICDE 2000).

128

Page 130: TRABAJO FINAL DE GRADO - ridaa.unicen.edu.ar

[51] J. Dean, and S. Ghemawat., ”MapReduce: Simplified Data Processing on Large Clusters.”, In Proc. of 6th Symposium on Operating Systems Design and Implementation (OSDI) - 2004. [52] Burke, R: Hybrid recommender systems: Survey and Experiments. User Modeling and User-Adapted Integration - 2007 [53] XPod - https://www.researchgate.net/publication/234779704_A_Human_Activity_Aware_Learning_Mobile_Music_Player [54] CF-NADE - http://tech.hulu.com/blog/2016/08/01/cfnade.html. [55] PicFeel - http://www.emotional-apps.com/picfeel. [56] Happiness - http://babypl.pl/spyappsiphone/track-your-happiness-iphone-app. [57] Miriam Rocha Díaz - 2014 - Emociones, Estados de Ánimo e Inteligencia Emocional https://miriamrochadiaz.wordpress.com/2014/05/06/emociones-estados-de-animo-e-inteligencia-emocional/ [58] Ahmad Ramsés Barragán Estrada y Cinthya Itzel Morales Martínez - 2014 -PSICOLOGÍA DE LAS EMOCIONES POSITIVAS: GENERALIDADES Y BENEFICIOS [59] Enrique García Fernández Abascal - - Disfrutar de las emociones positivas: Psicología

129