U
NIVERSIDAD
N
ACIONAL DEL
C
ENTRO DE LA
P
ROVINCIA DE
B
UENOS
A
IRES
F
ACULTAD DE
C
IENCIAS
E
XACTAS
Asistencia inteligente a las personas en base a sus hábitos
diarios
Alumnos:
Gonzalo S
ANM
ARTÍNEzequiel T
RAPANIDirector:
Dr. Alvaro S
ORIACo-director:
Ing. Rodrigo I
BAÑEZÍNDICE GENERAL
Resumen 9
1 Introducción 10
1.1 La tesis . . . 11
1.2 Estructura de la tesis . . . 11
2 Estado del arte 13 2.1 Captura de la información . . . 13
2.1.1 Sensores físicos . . . 14
2.1.2 Sensores virtuales . . . 14
2.2 Técnicas de machine learning . . . 15
2.2.1 Árboles de decisión . . . 16
2.2.2 Razonamiento basado en reglas . . . 18
2.2.3 Cadena de Márkov (MC) . . . 18
2.2.4 String matching . . . 20
2.2.5 Técnicas aplicadas en APR . . . 20
2.3 Aplicaciones de asistencia a las personas . . . 20
2.3.1 New York: City 24/7 plataforma de información y seguridad . . . 21
2.3.2 KNX . . . 22
2.3.3 Smart Santander Project . . . 22
2.3.4 Philips Medication Dispensing . . . 24
2.3.5 Resumen . . . 25
ÍNDICE GENERAL 2
3 Enfoque de APR 27
3.1 Fase de entrenamiento . . . 30
3.1.1 Crear actividad . . . 30
3.1.2 Discretización y segmentación de actividades . . . 32
3.1.2.1 Discretización . . . 32
3.1.2.2 Segmentación . . . 39
3.1.3 Entrenamiento de técnicas de machine learning. . . 42
3.1.3.1 String matching . . . 43
3.1.3.2 Árboles de decisión . . . 43
3.2 Fase de asistencia . . . 48
3.2.1 Crear actividad . . . 48
3.2.2 Discretización y segmentación de actividades . . . 48
3.2.3 Reconocer actividad . . . 50
3.2.4 Predecir futura actividad . . . 52
3.3 Edición de actividades . . . 54
3.4 Resumen . . . 57
4 Diseño de la aplicación 58 4.1 Arquitectura general . . . 58
4.2 Handler . . . 59
4.3 Creación de actividades . . . 61
4.3.1 Fase de entrenamiento . . . 62
4.3.2 Fase de asistencia . . . 63
4.4 Procesamiento de actividades . . . 64
4.4.1 Segmentación de actividades . . . 66
ÍNDICE GENERAL 3
4.5 Técnicas de machine learning . . . 70
4.5.1 Entrenamiento de actividades . . . 72
4.5.1.1 Entrenamiento de string matching . . . 72
4.5.1.2 Entrenamiento de árboles de decisión. . . 74
4.5.2 Generación de la asistencia al usuario . . . 75
4.5.2.1 Reconocimiento de actividades . . . 76
4.5.2.2 Predicción de actividades . . . 78
4.6 Perfil del usuario . . . 78
4.7 APR en acción . . . 81
5 Resultados experimentales 86 5.1 Definición de los dataset . . . 88
5.2 Pruebas realizadas . . . 90
5.3 Resumen . . . 94
ÍNDICE DE FIGURAS
1.1.1 Enfoque propuesto . . . 11
2.1.1 Ejemplos de sensores físicos . . . 14
2.1.2 Ejemplos de sensores físicos . . . 15
2.2.1 Técnicas más utilizadas sobre una base de 50 aplicaciones de reconocimiento . . . 16
2.2.2 Representación del árbol de decisión. . . 17
2.2.3 Representación de una cadena de Márkov . . . 19
2.3.1 Categorización de aplicaciones de acuerdo a su área de impacto . . . 21
2.3.2 Monitores inteligentes . . . 22
2.3.3 Sensor de estacionamiento instalado en la ciudad Santander . . . 23
2.3.4 Monitor que informa acerca de estacionamientos disponibles en la ciudad Santander . . . 23
2.3.5 Mapa con la ubicación de estacionamientos libre en la ciudad Santander . . . 24
2.3.6 Dispositivo Philips Medication Dispensing . . . 25
3.0.1 Enfoque de APR . . . 28
3.0.2 Actividades de ejemplo CaminoInglés e Inglés . . . 30
3.1.1 Eventos capturados sobre las actividades CaminoInglés e Inglés . . . 31
3.1.2 Actividad CaminoInglés con sus eventos procesados . . . 32
3.1.3 Resultado de dividir el conjunto de datos en 4 grupos equitativamente . . . 33
3.1.4 Resultado del cálculo de la media para cada grupo . . . 33
ÍNDICE DE FIGURAS 5
3.1.5 Resultado luego de reubicar los puntos . . . 34
3.1.6 Resultado final . . . 34
3.1.7 Trayectoria de la actividad CaminoInglés . . . 36
3.1.8 Trayectoria de la actividad CaminoInglés luego de aplicar la primer etapa de k means . . . 37
3.1.9 Trayectoria de la actividad CaminoInglés discretizada . . . 38
3.1.10 Intersección entre grupos . . . 39
3.1.11 Actividad CaminoInglés discretizada . . . 39
3.1.12 Actividad CaminoInglés con su primero segmento generado . . . 40
3.1.13 Segundo segmento generado para la actividad CaminoInglés . . . 40
3.1.14 Resultado final luego de segmentar la actividad CaminoInglés . . . 42
3.1.15 Resultado final luego de segmentar la actividad Inglés . . . 42
3.2.1 Interfaz de asistencia . . . 54
3.3.1 Interfaz de edición de actividades . . . 56
3.3.2 Actividad CaminoInglés editada . . . 57
4.1.1 Diagrama de paquetes: Arquitectura general de APR . . . 59
4.2.1 Diagrama de clases: Paquete Handler . . . 60
4.3.1 Diagrama de clases: Paquete ActivityManager . . . 61
4.3.2 Diagrama de secuencia: Creación de actividades durante la fase de entrenamiento . . . 63
4.3.3 Diagrama de secuencia: Creación de actividades durante la fase de asistencia . . . 64
4.4.1 Diagrama de clases: Paquete ActivityProcessor . . . 65
4.4.2 Diagrama de secuencia: Segmentación de una actividad. . . 67
4.4.3 Diagrama de secuencia: Discretización de un segmento . . . 69
4.5.1 Diagrama de clases: Paquete Machine Learning . . . 70
4.5.2 Diagrama de secuencia: Entrenamiento de las técnicas de machine learning . . . 72
ÍNDICE DE FIGURAS 6
4.5.4 Diagrama de secuencia: Entrenamiento de la técnica árboles de decisión . . . 74
4.5.5 Diagrama de secuencia: Generación de asistencia brindada al usuario . . . 76
4.5.6 Diagrama de secuencia: Reconocimiento de actividades por la técnica string matching . . . 77
4.5.7 Diagrama de secuencia: Predicción de la siguiente actividad por la técnica árboles de decisión . . 78
4.6.1 Diagrama de clases: Paquete UserProfile . . . 79
4.7.1 Interfaz gráfica de APR: Pagina de inicio . . . 81
4.7.2 Interfaz gráfica de APR: Página para visualizar la lista de actividades realizadas . . . 82
4.7.3 Interfaz gráfica de APR: Página de edición de actividades . . . 83
4.7.4 Interfaz gráfica de APR: Página de asistencia . . . 84
4.7.5 Interfaz gráfica de APR: Páginas visualizadas desde dispositivos con resoluciones más pequeñas . 85 5.0.1 Tecnica de K-fold Cross Validation . . . 87
5.1.1 Actividades del dataset 1 . . . 88
5.1.2 Actividades del dataset 2 . . . 89
5.2.1 Resultados experimentales sobre el dataset 1 . . . 91
ALGORITMOS
3.1 Cálculo del valor K para la discretización de las posiciones . . . 36
3.2 Comparar dos segmentos . . . 41
3.3 Ubicar una actividad en su grupo correspondiente . . . 45
3.4 Verificar si dos actividades pertenecen al mismo grupo . . . 46
3.5 Entrenamiento de las técnicas de WEKA . . . 47
3.6 Obtener similitud entre dos eventos . . . 49
3.7 LCS . . . 51
ÍNDICE DE TABLAS
2.2.1 Árboles de decisión: dataset de entrada . . . 17
2.2.2 Ejemplo de matriz de transición Márkov. . . 19
2.3.1 Comparación entre aplicaciones actuales . . . 26
3.1.1 Descripción del esquema . . . 43
3.1.2 Dataset de entrenamiento . . . 44
3.1.3 Entradas 1 y 2 generadas para el entrenamiento de árboles de decisión . . . 47
3.2.1 Entrada enviada a clasificar. . . 53
5.2.1 Configuraciones probadas durante los experimentos. . . 90
RESUMEN
Hoy en día existe un gran número de tecnologías que permiten obtener información acerca del mundo real. Los sistemas móviles actuales son capaces de reconocer el entorno en el cual están siendo usados y ofrecer dicha información. Los dispositivos GPS, y la existencia de WebServices, son algunos de los ejemplos que demuestran la gran variedad de fuentes de información con la que contamos actualmente [7]. Sin embargo, el desarrollo de aplicaciones que aprovechen esa información es una rama que aún no ha sido muy explorada.
En este contexto, se presenta APR (asistente personalizado de rutinas) una aplicación que se encarga de asistir a las personas en su rutina de acuerdo a sus hábitos cotidianos. Esta aplicación estudia las actividades diarias de una persona basada en la información obtenida por el GPS y otros eventos relacionados al entorno en el que las realiza, como por ejemplo temperatura, hora, etc. A través de la observación y aprendizaje de la información se puede personalizar la asistencia a cada individuo basados en sus hábitos. Para estudiar los hábitos de las personas, se utilizaron técnicas de machine learning que permiten construir una base de conocimiento a partir de la información obtenida. Una vez que la aplicación contiene suficiente información acerca de las actividades habituales del usuario, se puede asistir al mismo.
La asistencia ofrecida al usuario le brinda información acerca de la actividad que se encuentra realizando y de la siguiente actividad a realizar. La información es obtenida en base al análisis de los eventos capturados del entorno mientras el usuario realiza sus actividades y el conocimiento de las técnicas de machine learning. Junto a la infor-mación de la actividad que el usuario está realizando se le indica mediante un mapa la trayectoria que comúnmente realiza en la realización de la misma. Con respecto a la siguiente actividad a realizar se le indica el nombre de dicha actividad y otros datos, como por ejemplo, si la actividad se va a realizar a tiempo o con retraso.
CAPÍTULO 1
INTRODUCCIÓN
Acompañando el crecimiento masivo de Internet, ha habido un gran avance en la miniaturización de dispositivos tecnológicos y en los sistemas de comunicación. Esto permite que la mayoría de las personas realicen sus activi-dades diarias conectadas a múltiples dispositivos que son capaces de captar y ofrecer información sin requerir la intervención de los usuarios [9]. Dispositivos como celulares, tablets, lentes (google glass), marcapasos cardíacos y smartwatches, entre otros, tienen la capacidad de proveer información útil para las personas. Estos avances permiten obtener una nueva visión más detallada del mundo real.
La información que nos proveen las distintas tecnologías que comúnmente usamos toma cada vez más importancia en la vida de las personas. Frecuentemente dicha información es usada por los usuarios para tomar decisiones durante sus actividades. Por ejemplo, consultar la temperatura antes de salir a hacer ejercicios al aire libre, guiarse a través de las rutas y recorridos que nos indica un GPS, consultar fechas y horarios de los próximos vuelos de una aerolínea, etc.
Si bien esta información es muy útil, se puede decir que los dispositivos que nos la brindan actúan de una manera pasiva. Generalmente es el usuario quien busca la información que necesita para luego actuar en consecuencia. Esto se debe a que actualmente se carece de sistemas informáticos que actúen de manera activa, es decir, que asisten al usuario sin que éste tenga que intervenir observando la información obtenida del entorno. La principal causa por la que aún no existe un gran número de tales aplicaciones es debido a su complejidad.
La gran cantidad y variabilidad de la información hace difícil su interpretación. Procesar en una misma aplicación datos provenientes de múltiples sensores de distintos tipos es una tarea realmente compleja [18]. A su vez cada información puede ser interpretada de distintas maneras por distintas personas. Por ejemplo, para una persona una temperatura mayor a 5º C es suficiente como para salir a realizar ejercicios al aire libre, sin embargo para otras puede ser una temperatura baja. Esto requiere que la aplicación sea capaz de interpretar la información de una manera diferente de acuerdo a las preferencias de cada usuario.
Las aplicaciones que intentan hacer uso de la información proveniente de distintos dispositivos son cada vez más comunes. Dichas aplicaciones abarcan diferentes áreas que permiten asistir desde personas hasta grandes infraes-tructuras. Por ejemplo, hoy en día existen casas inteligentes que contienen un gran número de sensores que permiten monitorizar el estado actual de la casa y automatizar tareas en base a las observaciones. A pesar de la existencia de dichas aplicaciones, el total de información que puede ser obtenida hoy en día no es totalmente aprovechada.
CAPÍTULO 1. INTRODUCCIÓN 11
1.1.
La tesis
En este contexto, el resultado de esta tesis es la aplicación llamada APR (Asistente Personalizado de Rutinas) que observa las actividades realizadas por el usuario durante su vida cotidiana. Estas actividades son detectadas del análisis de los movimientos de las personas (ej: posiciones de GPS) y eventos que suceden (ej: lluvia, baja temperatura, fechas especiales, etc). En base a las actividades detectadas, APR asiste al usuario en las próximas actividades a desarrollar en el futuro inmediato, sugiriendo el recorrido geográfico de la actividad en curso y la información acerca de la próxima actividad a realizar.
En la figura 1.1.1 se puede observar un diagrama que describe el enfoque propuesto. Durante la fase de entrena-miento se deben conocer las actividades que realiza el usuario durante su rutina. Para eso, APR crea cada actividad con las posiciones geográficas que el usuario recorre, la hora, fecha y cualquier otro evento capturado durante la realización de la misma. Las actividades son utilizadas para entrenar a APR y que la misma tenga conocimiento acerca de los hábitos del usuario. Una vez hecho esto se podrá pasar a la fase de asistencia. Durante la fase de asistencia, APR intenta reconocer la actividad que el usuario está realizando y predecir su próxima actividad. Para esto se utilizan los eventos que se capturan mientras el usuario realiza su actividad y el conocimiento de APR. La información de la actividad reconocida y la actividad futura forman parte de la asistencia que será brindada al usuario.
Figura 1.1.1: Enfoque propuesto
1.2.
Estructura de la tesis
CAPÍTULO 1. INTRODUCCIÓN 12
darle autonomía a la aplicación. Finalmente, se hizo un relevamiento y análisis de algunas aplicaciones actuales que son utilizadas para asistir a las personas.
El capítulo 3 muestra el enfoque propuesto desde un punto de vista abstracto para resolver los objetivos plantea-dos. Aquí se detalla principalmente el funcionamiento de APR y los aspectos tomados en cuenta a la hora de su realización.
En el capítulo 4 se realiza una especificación detallada del diseño de la aplicación. Para esto se realizaron diversos diagramas (paquete, secuencia y de clase), haciendo foco en aquellos aspectos importantes para la implementación de la aplicación.
En el capítulo 5 de la tesis se realiza un análisis del nivel de precisión que tiene la aplicación durante la asistencia frente a distintas configuraciones. El objetivo de las evaluaciones es poder observar el comportamiento de la apli-cación frente a escenarios reales y poder determinar cuál es la configuración óptima para su funcionamiento. Para evaluar la precisión se plantea un plan de testing. Durante el periodo de testing se hace uso de dos datasets que presentan la información capturada a lo largo de tres meses de las actividades realizadas por diferentes usuarios. Luego de evaluar los dos datasets se hace una comparativa de los resultados.
CAPÍTULO 2
ESTADO DEL ARTE
Las claves para poder asistir a las personas se centran en la captura e interpretación de la información relevante del entorno. Para poder capturar esta información existen diversos sensores. Sin la existencia de dichos sensores resulta imposible pensar en una aplicación que sea capaz de observar y comprender el entorno en la que se encuentra y poder tomar decisiones en base a ello.
Un sensor no es más que un dispositivo diseñado para recibir información de una magnitud del exterior y transfor-marla en otra magnitud, normalmente eléctrica, que seamos capaces de cuantificar y manipular1. Estos sensores
tienen la capacidad de proveer una amplia gama de información ya sea meteorológica, de posición, tiempo, velo-cidad, aceleración, proximidad, táctiles, de luz, etc. En la actualidad los sensores se encuentran en la gran mayoría de los dispositivos tecnológicos actuales, como smartphones, smartwatches, cámaras, notebooks, tablets, etc. Esto permite contar con un gran número de fuentes de información accesibles.
La información capturada debe ser interpretada para poder tomar diferentes decisiones. Dicha información puede ser interpretada fácilmente por una persona, pero no así por las aplicaciones. Uno de los grandes desafíos es lograr que estas aplicaciones puedan emular el razonamiento de los humanos. De esta manera se podrá lograr una mayor autonomía por parte de las aplicaciones, reduciendo así la intervención humana. Para poder lograr esta autonomía se implementan técnicas de inteligencia artificial. Una de las ramas de inteligencia artificial utilizada para dicho fin es machine learning [14].
Machine learning tiene como objetivo desarrollar técnicas que permitan a las computadoras aprender. Son algorit-mos capaces de procesar un conjunto de información recibida, la cual es tenida en cuenta como punto de partida para su aprendizaje. A partir de allí, se podrá realizar razonamientos lógicos de acuerdo a los patrones que se observan de la información aprendida. Es, por lo tanto, un proceso de inducción del conocimiento [1].
Aplicado a nuestro problema, la técnica de machine learning aprende los hábitos diarios de la persona para lue-go poder asistirla. Esta asistencia está centrada en reconocer la actividad actual que el usuario está realizando e identificar cual es la próxima actividad que debe realizar.
2.1.
Captura de la información
A continuación se estudia a los sensores como principal fuente de información. Estos se pueden clasificar en dos tipos: sensores físicos y sensores virtuales [15].
1http://es.wikipedia.org/wiki/Sensor
CAPÍTULO 2. ESTADO DEL ARTE 14
2.1.1.
Sensores físicos
Son los sensores más usados actualmente y tienen la capacidad de generar información por sí mismos. Se encargan de proveer información respecto de fenómenos físicamente observables. Se caracterizan por tener su propio hard-ware, por lo que el desarrollo y su posterior mantenimiento resultan más costosos. La mayoría de los dispositivos que usamos hoy en día están equipados con una variedad de estos sensores.
La variabilidad de información que estos sensores nos pueden proveer es muy amplia. En la actualidad contamos desde sensores wearables hasta sensores estáticos. Gran parte de los sensores wearables tiene fines medicinales como por ejemplo: medidor del ritmo cardíaco o de presión arterial, como se puede ver en la figura 2.1.1a. Por otro lado, los sensores estáticos se encuentran generalmente en casas, edificios, etc. Algunos de ellos pueden ser sensores de humo, de temperatura, cámaras, proximidad, etc. La figura 2.1.1b muestra un ejemplo de los mismos.
(a) Monitor de ritmo cardíaco (b) Detector de humo
Figura 2.1.1: Ejemplos de sensores físicos
2.1.2.
Sensores virtuales
Generalmente estos sensores no generan información por sí mismos y no necesitan de presencia física. Los sensores virtuales se caracterizan por capturar información que no puede ser obtenida físicamente, como la hora, fecha actual, posiciones geográficas, datos relacionados a redes sociales como notificaciones de nuevos mails, tweets, chats, etc.
CAPÍTULO 2. ESTADO DEL ARTE 15
(a) Web service Accuweather sobre información climática
(b) Reloj virtual en un dispositivo con Android
Figura 2.1.2: Ejemplos de sensores físicos
2.2.
Técnicas de machine learning
CAPÍTULO 2. ESTADO DEL ARTE 16
Figura 2.2.1: Técnicas más utilizadas sobre una base de 50 aplicaciones de reconocimiento
Basados en estos datos se hizo una breve explicación de algunas de las técnicas más usadas, como también otras técnicas aplicadas en APR.
2.2.1.
Árboles de decisión
Un árbol de decisión es un modelo predictivo que se basa en una jerarquía de decisiones y sus consecuencias. Cada nodo en el árbol de decisión especifica una instancia de una consulta y cada rama perteneciente a ese nodo corresponde a uno de las decisiones posibles para esa consulta.
CAPÍTULO 2. ESTADO DEL ARTE 17
Día Pronóstico Temperatura Humedad Viento Jugar al tenis D1 soleado alta alta débil no D2 soleado alta alta fuerte no D3 nublado alta alta débil si D4 lluvioso media alta débil si D5 lluvioso baja normal débil si D6 lluvioso baja normal fuerte no D7 nublado baja normal fuerte si D8 soleado media alta débil no D9 soleado baja normal débil si D10 lluvioso media normal débil si D11 soleado media normal fuerte si D12 nublado media alta fuerte si D13 nublado alta normal débil si D14 lluvioso media alta fuerte no
Tabla 2.2.1: Árboles de decisión: dataset de entrada
Figura 2.2.2: Representación del árbol de decisión
CAPÍTULO 2. ESTADO DEL ARTE 18
modelos de toma de decisiones pero la construcción de los mismos, especialmente los que tienen muchas ramas, son complejos. El cálculo de probabilidades de las diferentes ramas posibles determinando la rama más óptima son tareas complejas. A su vez, la fiabilidad de la información en el árbol de decisión depende del conjunto de datos de entrenamiento inicial [20]. Un pequeño cambio en los datos de entrada puede causar grandes cambios en el árbol. Cambios en las variables o una alteración de la secuencia a medio camino podría requerir volver a construir el árbol.
2.2.2.
Razonamiento basado en reglas
Razonamiento basado en reglas, también conocido como sistemas expertos, es una de las técnicas comúnmente utilizada en inteligencia artificial. Su idea es capturar el conocimiento de un humano experto dentro del dominio del problema e incorporarlo a un sistema informático. Dicho conocimiento es traducido en un conjunto de reglas. Una regla representa la información de que, o no, hacer cuando ciertas situaciones son encontradas. Una regla típica tiene el siguiente formato:
IF [condición] THEN [conclusión].
Donde la condición representa premisas o hechos y la conclusión representa acciones asociadas para dichas pre-misas. La condición puede ser una premisa, o un conjunto de ellas, asociadas con operadores lógicos AND y OR [5].
Los componentes principales de un sistema de razonamiento basado en reglas son:
Base de datos: Contiene un conjunto de hechos sobre el problema a resolver.
Conocimiento base: Contiene el conjunto de reglas extraídas desde el conocimiento experto sobre el dominio en cuestión.
Motor de procesamiento: Es el componente que se encarga de procesar la entrada de datos con las reglas que forman parte del conocimiento para encontrar una solución.
Si bien la técnica de razonamiento basado en reglas es sencilla de comprender, presenta algunas limitaciones. Mu-chas veces representar el conocimiento de algún experto sobre algún dominio en particular, mediante un conjunto de reglas, no es sencillo. Si el conocimiento es muy extenso se pueden producir reglas contradictorias. Además, si el número de reglas generadas es muy grande, el costo computacional de comparar cada regla para hallar un resultado puede ser elevado.
2.2.3.
Cadena de Márkov (MC)
CAPÍTULO 2. ESTADO DEL ARTE 19
Figura 2.2.3: Representación de una cadena de Márkov
Los modelos de Márkov pueden ser implementados mediante matrices NxN. Donde N representa la cantidad de diferentes estados que puede tener y las celdas contiene la probabilidad de pasar de un estado A a un estado E. Por ejemplo, si tenemos un conjunto S = {soleado, lluvioso} que representan los posibles estados del tiempo y la siguiente información:
1. Si el día está soleado hay una probabilidad de 0.4 de que el siguiente día esté lluvioso, y una probabilidad de 0.6 de que siga soleado.
2. Si el día está lluvioso tenemos una probabilidad de 0.3 de que el siguiente día siga lluvioso, y una probabilidad de 0.7 de que esté soleado.
Con esta información se puede armar la siguiente matriz de transición como lo muestra en la tabla 2.2.2.
Matriz de transición Soleado Lluvioso Soleado 0.6 0.4 Lluvioso 0.7 0.3
Tabla 2.2.2: Ejemplo de matriz de transición Márkov
CAPÍTULO 2. ESTADO DEL ARTE 20
2.2.4.
String matching
String matching es un algoritmo que intenta encontrar una subcadena de caracteres (denominada patrón) en un texto determinado. Existen dos variaciones principales de dicho algoritmo: string matching exacto y string matching aproximado. El primero de ellos intenta buscar que el patrón aparezca exactamente en su totalidad dentro del texto. Mientras que string matching aproximado busca cierta similitud entre el patrón y el texto, y no exige exactitud entre ellos.
Si bien string matching no es conocido como una técnica de reconocimiento pura, muchas áreas la utilizan. Se puede encontrar en: problemas de reconocimiento facial [3], o de reconocimiento de gestos [2], entre otros. String matching es una técnica sencilla de implementar y fácil de comprender, pero tiene algunas complicaciones a la hora de aplicarlo como técnica de reconocimiento. El principal desafío a la hora de utilizar dicha técnica se centra en poder representar nuestro dominio del problema en término de cadenas de caracteres. Si el dominio de datos es extenso y complejo puede resultar difícil expresarlo en términos de uno o más cadenas.
2.2.5.
Técnicas aplicadas en APR
Dentro de las técnicas explicadas en esta sección se utilizaron las técnicas string matching y árboles de decisión. String matching se utilizó para reconocer las actividades que el usuario realiza. Dicha técnica se seleccionó debido a los buenos resultados arrojados en otros trabajos similares de reconocimiento y a la facilidad de aplicarla en el contexto de nuestro problema. En [2] se puede observar la efectividad de aplicar string matching sobre un aplicación de reconocimiento de gestos.
Para predecir actividades futuras se evaluaron las técnicas de árboles de decisión, Márkov y razonamiento basado en reglas. Como se puede observar en la sección 5.2, la técnica que obtuvo mejores resultados fue árboles de decisión. Por lo que se decidió optar por dicha técnica.
2.3.
Aplicaciones de asistencia a las personas
CAPÍTULO 2. ESTADO DEL ARTE 21
Figura 2.3.1: Categorización de aplicaciones de acuerdo a su área de impacto
A continuación se describen algunas de las aplicaciones existentes en la actualidad:
2.3.1.
New York: City 24/7 plataforma de información y seguridad
City 24/72 es una empresa comprometida a hacer las comunicaciones públicas más accesible para todos en cualquier parte. Dicha empresa en colaboración con Cisco y la ciudad de New York, ha lanzado una plataforma interactiva que integra información de programas del gobierno, negocios locales y de los ciudadanos para proveer conocimiento en todo momento y lugar, y que sea accesible desde cualquier dispositivo2. En pocas palabras, entrega la información que las personas necesitan saber, donde y cuando les sea más útil.
Para brindar la información se instalaron monitores inteligentes que se pueden encontrar en paradas de colectivos, estaciones de trenes, shoppings, etc. Estos monitores incorporan tecnología táctil, de voz y audio para entregar una amplia variedad de información, servicios y ofertas que se encuentran en un radio de dos cuadras. La información que estos dispositivos brindan puede ser accedida vía Wifi mediante celulares, tablets y notebooks que se encuentren conectados. En la figura 2.3.2 se puede observar dichos monitores.
Los objetivos generales se centran en:
Informar instantáneamente a las personas con la información relevante que se encuentre cercana.
Proveer información de toda la ciudad a los departamentos de policía y bomberos, y de esta manera poder asistir rápidamente a los lugares donde se los necesite.
CAPÍTULO 2. ESTADO DEL ARTE 22
Figura 2.3.2: Monitores inteligentes
2.3.2.
KNX
KNX tiene como objetivo promover el desarrollo de sistemas para edificios inteligentes que permitan el control y motorización de diferentes dispositivos dentro del mismo, tales como aires acondicionados, luces, cámaras, alarmas, etc. Para eso provee un estándar de protocolos de transmisión de red que permite que los distintos artefactos del edificio se comuniquen mediante un lenguaje en común3[13].
KNX consta de dos grupos de elementos importantes:
Actuadores: Son los elementos del sistema que “actúan“ sobre el edificio, como por ejemplo luces, motores, alarmas, etc.
Sensores: Son los elementos del sistema que recogen datos o interpretan órdenes del usuario, por ejemplo, pulsadores, detectores de movimiento, termostato, etc.
En la actualidad se utiliza en grandes edificios industriales para el ahorro de energía y la automatización de sistemas. Una de las instalaciones más grandes de KNX se encuentra en Alemania en una fábrica de 5700m2. La fábrica opera las 24 hs del día y requiere luz artificial para ciertos periodos y ciertas áreas. La ventilación depende de las actividades de las máquinas del edificio. La solución KNX permite la integración de dispositivos que permitan la automatización de luz, calefacción y administración de notificaciones. Para esto cuenta con un conjunto de lámparas fluorescentes como actuadores, sensores de temperatura, sensores de luz y de presencia. El sistema optimiza el consumo de energía teniendo en cuenta la presencia del personal dentro del edificio y la luz natural. La ventilación y calefacción se configuran automáticamente de acuerdo a la temperatura ambiente y la cantidad de máquinas operando dentro de la fábrica. Además se le envían notificaciones al usuario cuando los sensores detectan valores que sobrepasan ciertos umbrales, los cuales fueron configurados previamente por un administrador.
2.3.3.
Smart Santander Project
Es un proyecto realizado por varias compañías e instituciones que se centra en instalar aproximadamente 20 mil sensores dentro de diversas ciudades. El objetivo es poder obtener información variada en distintos puntos de las
CAPÍTULO 2. ESTADO DEL ARTE 23
ciudades, por ejemplo luminosidad, temperatura, ruido, estacionamiento libre, etc. Una de las ciudades que participa de este proyecto es la ciudad de Santander4[4].
La ciudad de Santander está dividida en 22 zonas diferentes, donde en cada una se encuentra un dispositivo central encargado de reunir toda la información de los sensores que se encuentra en la zona. Estos sensores, analizan la variación del campo magnético generado por un auto estacionado [21]. Para lograr esto, los sensores se encuentran instalados dentro de una contenedor que se ubican debajo de la superficie de la calle. La figura 2.3.3 muestra un sensor ya instalado.
Figura 2.3.3: Sensor de estacionamiento instalado en la ciudad Santander
Una vez que los datos son capturados se envían periódicamente al sensor central de la zona. Este sensor se encarga de procesar la información y enviarla a diversos monitores ubicados en distintos puntos de la ciudad. Los monitores se encargan de informar a las personas acerca de lugares libres para estacionar. La figura 2.3.4 muestra un monitor en funcionamiento.
Figura 2.3.4: Monitor que informa acerca de estacionamientos disponibles en la ciudad Santander
A su vez el estado de los diferentes sensores se mantiene actualizado en un mapa que puede ser accedido a través de Internet por las personas, como lo muestra la figura 2.3.5.
CAPÍTULO 2. ESTADO DEL ARTE 24
Figura 2.3.5: Mapa con la ubicación de estacionamientos libre en la ciudad Santander
2.3.4.
Philips Medication Dispensing
Philips Medication Dispensing es un dispositivo de asistencia que se encuentra dentro de la rama medicinal. PMD está diseñado para simplificar a sus usuarios los regímenes de medicación5. Fue creado para las personas medicadas que frecuentemente olvidan tomar su medicación o suele tomar la medicación equivocada. También reduce el riesgo de que el usuario sufra una sobredosis debido a la mala utilización de su medicación. En la figura 2.3.6 se puede observar el dispositivo PMD.
CAPÍTULO 2. ESTADO DEL ARTE 25
Figura 2.3.6: Dispositivo Philips Medication Dispensing
Para su configuración el usuario previamente debe colocar la medicación en el dispensador e indicar el horario en el que debe tomarla. Luego, PMD configura automáticamente el calendario en el que la medicación debe ser tomada.
Durante la asistencia PMD alerta al usuario cuando es el momento de tomar su medicación mediante una luz y un recordatorio por voz. Una vez que el usuario es notificado debe presionar el botón del dispositivo para el dispensador haga entrega de la medicación correspondiente. PMD también puede ser sincronizado con el celular del usuario, mediante la cual se notificará cuando el usuario pierde una dosis, o si es momento de rellenar el dispensador con medicamentos.
2.3.5.
Resumen
Como podemos ver existen diversos tipos de aplicaciones en el mercado que haciendo uso de la tecnología dan soporte a las personas. Estas aplicaciones cubren aspectos que intentan facilitar la vida de las personas. Podemos encontrar desde aplicaciones sencillas hasta grandes soluciones que facilitan la administración de edificios y casas. Si bien todas tienen el mismo objetivo en general, presentan ciertas ventajas y desventajas.
CAPÍTULO 2. ESTADO DEL ARTE 26
adaptable es la aplicación a las características de cada usuario. Por último, el tipo de asistencia se refiere a si la asistencia requiere la intervención o solicitud del usuario (asistencia pasiva) o si la asistencia se ofrece de manera automática (asistencia activa). En la tabla 2.3.1 se puede observar la comparación de las aplicaciones, en base a las características mencionadas.
KNX New York City 24 / 7
Smart Santander project Philips Medication Dispensing
Costo alto bajo bajo alto
Acceso difícil fácil fácil dificil Personalización alta baja baja alta
Asistencia activa activa activa activa
Tabla 2.3.1: Comparación entre aplicaciones actuales
Hoy en día existen aplicaciones que cuentan con un gran nivel de personalización y ofrecen asistencia activa pero tienen un alto costo de adquisición. Por un lado tenemos a KNX como una herramienta que permite gran perso-nalización de acuerdo a las necesidades del usuario. Además, en base a distintas configuraciones, ofrece asistencia de manera activa a través del monitoreo de los sensores instalados. Pero su principal desventaja son los costos de adquisición. Los sistemas KNX requieren un costo de instalación muy elevado, ya que se necesita de tecnologías especiales. Por otro lado tenemos a PMD que si bien permite ajustar el dispositivo de acuerdo a la rutina del usuario a la hora de tomar su medicación su acceso requiere la compra de nuevos dispositivos y hasta puede incluir el pago de una cuota mensual para recibir alertas vía teléfono.
Existen además otras aplicaciones como New York City y Smart Santander que ofrecen también asistencia activa y que sus costos de adquisición son bajos. A través de monitores ubicados en la ciudad, los usuarios pueden observar información de interés como estacionamiento libre o locales cercanos. El acceso a la aplicación por parte de los usuarios es sencillo, ya que no requiere adquirir tecnologías extras por parte del mismo. La principal desventaja de estos sistemas es que carecen de personalización. La información provista es la misma para todos los usuarios y no se basa en las preferencias o necesidades de cada uno de ellos.
CAPÍTULO 3
ENFOQUE DE APR
En el contexto actual existe mucha información desaprovechada que puede ser utilizada para asistir a las personas. En esta tesis se desarrolló una aplicación, llamada APR (Asistente Personalizado de Rutinas), que tiene como objetivo asistir a las personas durante sus actividades en su rutina. El problema principal de la tesis consiste en describir las actividades del usuario a partir de la información capturada por los dispositivos que el usuario utiliza diariamente. La información es representada a partir de los eventos reconocidos por APR que son capturados a través de dispositivos móviles.
Los diferentes tipos de eventos que reconoce APR son eventos de posición, de tiempo e información. Cada tipo de evento aporta diferente información sobre la actividad que se está realizando:
Eventos de posición: Indica la ubicación del usuario mientra desarrolla su actividad. Este evento es capturado por el dispositivo móvil a través de su sensor de GPS. Cada posición contiene la longitud, latitud y altitud de la ubicación.
Eventos de tiempo: Indica la fecha y hora en el que el usuario realiza cierta actividad. Este evento es capturado a través del sistema operativo del dispositivo móvil.
Eventos de información: Indica cualquier otro evento que caracteriza la actividad, como la temperatura del día, estado del tránsito, etc. Estos tipos de eventos son capturados por el dispositivo móvil a través de servicios web.
El enfoque de la tesis hace uso de los eventos capturados para asistir al usuario. La figura 3.0.1 muestra un esquema conceptual de la aplicación desarrollada. APR está dividido en dos fases: la fase de entrenamiento y la fase de asistencia.
CAPÍTULO 3. ENFOQUE DE APR 28
Figura 3.0.1: Enfoque de APR
El enfoque comienza con la etapa de entrenamiento. Durante dicha etapa APR registra los eventos que se capturan mientras el usuario realiza su actividad. Los eventos son capturados hasta que se detecte el fin de la actividad. El fin de una actividad es determinado por APR observando el estado de movimiento del usuario. Cuando un usuario termina de desplazarse o cuando el usuario comienza a moverse, se determina el fin de una actividad.
Las actividades finalizadas son procesadas por APR con el objetivo de disminuir la variabilidad entre las mismas. Este paso es necesario ya que permite disminuir la información redundante generada por los datos continuos (ejem-plo: posiciones de GPS, horas, etc.) y su vez facilita la comparación entre actividades en tiempo real. Para procesar las actividades se aplican técnicas de discretización y segmentación. La discretización tiene como objetivo repre-sentar los eventos que pertenecen a un dominio de datos continuo dentro de un dominio de datos discretos. La segmentación nos ayuda a dividir las actividades de distintas longitudes en segmentos de igual tamaño para que sean fácilmente comparables.
CAPÍTULO 3. ENFOQUE DE APR 29
actividades futuras. Cada una de las técnicas entrena las actividades que son enviadas por APR para formar una base de conocimiento que permita reconocer y predecir actividades. Finalmente, APR se encuentra listo para comenzar asistir al usuario en sus rutinas.
La fase de asistencia se encarga de observar el estado del usuario y asistirlo en su rutina. Para asistirlo, APR captura los eventos que surgen mientras el usuario realiza sus actividades. Cada vez que un nuevo evento es capturado APR analiza si la actividad ha finalizado. En caso de que la actividad siga en curso, APR la procesa y la envía a la técnica de string matching para que sea reconocida.
String matching se encarga de reconocer si la actividad en curso es una de las actividades entrenadas anteriormente o no. Si la actividad es reconocida, dicha información es enviada a la técnica de árboles de decisión para determinar la próxima actividad a realizar. En este punto, APR utiliza la actividad reconocida y la actividad a realizar para asistir al usuario.
Durante la fase de asistencia, APR brinda información acerca de la actividad que está realizando y la que realizará a continuación. A través de un mapa le muestra al usuario la trayectoria a seguir para terminar de llevar a cabo la actividad que está realizando. Además, el usuario es informado acerca de cuál es la próxima actividad de día indicando si se encuentra atrasado o no en su rutina. Para lograr esto, APR tiene en cuenta el horario en que el usuario ha realizado previamente dicha actividad.
APR continúa procesando los eventos capturados durante la fase de asistencia hasta que finalice la actividad. Si se detecta el fin de la actividad, se repite el proceso de la fase de entrenamiento sobre dicha actividad. De esta manera, las técnicas de machine learning van aumentando su conocimiento mientras el usuario utiliza la aplicación para poder mejorar sus futuras asistencias.
Además, APR permite al usuario realizar un feedback acerca de las actividades entrenadas. El objetivo de esto es mejorar la representación de las actividades ya que las mismas pueden contener información errónea. Dentro de la información errónea se pueden encontrar eventos incorrectos. Un evento incorrecto puede surgir cuando un usuario varió su trayectoria habitual, por lo cual los eventos de posición capturados durante el desvío no corresponden a la actividad que comúnmente realiza. A través de las opciones de edición provista por APR, el usuario puede eliminar dichos eventos para que la información sea más precisa. Dentro de las opciones de edición el usuario puede además eliminar actividades completas, cambiar el nombre de actividades, y agregar o eliminar eventos.
CAPÍTULO 3. ENFOQUE DE APR 30
Figura 3.0.2: Actividades de ejemplo CaminoInglés e Inglés
3.1.
Fase de entrenamiento
3.1.1.
Crear actividad
CAPÍTULO 3. ENFOQUE DE APR 31
Figura 3.1.1: Eventos capturados sobre las actividades CaminoInglés e Inglés
APR procesa los eventos capturados durante la realización de las actividades del usuario. Durante el procesamiento, APR representa cada uno de los eventos mediante un texto que los identifique. Los eventos de posiciones son representados a través de un prefijo “_P:”, seguido de la longitud, latitud y altitud separado por “,” (ejemplo: “_P:,-37.3305495,-59.13560629,201” ) . Los eventos de tiempo son representados con el prefijo “_D:”, seguido del día, mes, año, horas y minutos separados por “/” (ejemplo: “_D:01/12/2014/07/30”). A los eventos de información solo se les agrega el prefijo “_E:” (ejemplo: “_E:TransitoBajo“).
APR crea una actividad con los eventos procesados cuando el usuario finaliza una actividad. Para determinar cuándo una actividad finaliza APR estudia si el usuario se encuentra en movimiento o no. El estado de movimiento del usuario se basa en las últimas tres posiciones obtenidas. Si el recorrido entre las últimas tres posiciones supera una distancia de 50 metros el usuario se encuentra en movimiento. Caso contrario se considera que el usuario se encuentra estático en una posición. Luego de determinar el estado de movimiento actual del usuario, se definen las siguientes condiciones para indicar el fin de una actividad:
Condición 1: Si el usuario se encontraba en movimiento y se detiene por un periodo de tiempo.
Condición 2: Si el usuario se encontraba estático y comienza a moverse.
CAPÍTULO 3. ENFOQUE DE APR 32
Figura 3.1.2: Actividad CaminoInglés con sus eventos procesados
Posteriormente, APR procesa la actividad CaminoInglés aplicando técnicas de discretización y segmentación para que las técnicas de machine learning puedan entrenarla.
3.1.2.
Discretización y segmentación de actividades
La gran cantidad de eventos que contienen las actividades dificulta su comparación. Eventos de posición pueden ser capturados constantemente lo cual genera una gran cantidad de información. Si bien tener mucha información puede aportar más características a la actividad, el exceso de la misma se convierte en redundante. Además la cantidad de eventos que pueden ser capturados en una actividad varían considerablemente con respecto a otra. Estas características hacen difícil la tarea de establecer criterios que nos permitan realizar comparaciones entre distintas actividades.
La discretización y segmentación de actividades tiene como objetivo procesar los eventos capturados en cada activi-dad para mejorar su comparación. Durante esta etapa, APR hace uso de técnicas de discretización y segmentación que nos permiten eliminar la redundancia de eventos y establecer un criterio que facilite la comparación de las distintas actividades.
3.1.2.1. Discretización
La discretización consiste en tomar un conjunto de datos continuos y generar un conjunto de datos discretos que mantenga las mismas características del conjunto inicial. Los datos de tipo continuo tienen la particularidad de ser infinitos por lo que la cantidad de información que puede generarse es extremadamente grande, poco manipulable y redundante. Conociendo el dominio de la información se puede establecer parámetros de discretización que permitan acotar la cantidad de la misma. APR utiliza la técnica de K-means como método de discretización.
CAPÍTULO 3. ENFOQUE DE APR 33
el número de grupos deseados. Como resultado final, cada grupo contendrá un conjunto de datos que presentan las mismas características. La técnica de K-means se divide en dos etapas[12].
La primer etapa consiste en dividir el conjunto de datos en K grupos. El valor K se establece de acuerdo al dominio de los datos a discretizar. Luego de establecer el valor K, la técnica reparte equitativamente los datos de cada grupo. Como se puede observar en la figura 3.1.3, los datos son divididos teniendo en cuenta un K = 4.
Figura 3.1.3: Resultado de dividir el conjunto de datos en 4 grupos equitativamente
Una vez que se realizó la primera división, la técnica calcula el valor de la media de cada grupo. La media de cada grupo es calculada como la distancia entre los datos del grupo dividido por la cantidad total de datos que el mismo contiene. Para calcular la media es necesario conocer previamente cómo se mide la distancia entre dos datos del conjunto inicial. En la figura 3.1.4 se representa la media de cada grupo con un punto color negro. Una vez que se obtienen los K grupos con sus respectivas medias se procede a la segunda etapa.
Figura 3.1.4: Resultado del cálculo de la media para cada grupo
CAPÍTULO 3. ENFOQUE DE APR 34
distancia a la media es menor. Si el grupo al cual se encuentra más cerca es igual al grupo que actualmente pertenece, significa que el dato se encuentra bien ubicado. En caso contrario, el dato es reubicado en el grupo correspondiente. Si algún dato cambió de lugar las medias de todos los grupos deben ser calculadas nuevamente y se debe realizar una nueva iteración de la segunda etapa. Como se ve en la figura 3.1.5 los puntos de color violeta fueron reubicados lo que llevó a calcular nuevamente la media de cada grupo.
Figura 3.1.5: Resultado luego de reubicar los puntos
Finalmente cuando la técnica detecta que cada dato se encuentra en el grupo correcto termina su ejecución. La figura 3.1.6 muestra los datos agrupados correctamente. Dado que la agrupación correcta en los grupos es un problema NP-Hard no siempre la técnica termina su ejecución. Para evitar que se haga una búsqueda exhaustiva que puede demorar un tiempo excesivo se establece un número de iteraciones fijo (en nuestro caso se estipula un número máximo de 10 iteraciones).
Figura 3.1.6: Resultado final
CAPÍTULO 3. ENFOQUE DE APR 35
Eventos de tiempo
Para discretizar un evento de tiempo capturado, APR divide la hora y fecha contenida para procesarlos de manera separada. De esta forma APR discretiza cada parte y obtiene la información más relevante.
De la fecha capturada, solo es importante conocer el día en el cual se está realizando la actividad. Dado que el evento nos provee la información del número de día, mes y año solo se tiene en cuenta el día de la semana correspondiente a la fecha. Como APR asiste diariamente a los usuarios se consideró que el día de la semana es información suficiente para poder distinguir las actividades de acuerdo al día en la que fueron realizadas. Continuando con el ejemplo, la fecha que contiene el evento “_D:01/12/2014/07/30” de la actividad CaminoInglés es discretizada por APR como “Lunes”.
La hora del día se discretiza utilizando la técnica de K-means. Como la hora del día es una variable acotada (de 00 hs a 24 hs), los grupos se definen de manera estática dependiendo del K establecido. El K para la discretización de horas se establece mediante un parámetro de configuración de APR. En este punto, el conjunto de grupos final no será calculado, sino que queda establecido de acuerdo al K definido. Dado las pruebas realizadas en la sección 5.2 se observa que el valor óptimo de configuración del K es 24. De esta forma, la media de cada grupo corresponde a cada una de las distintas horas del día. Además, a cada grupo generado la técnica le asigna un identificador numérico.
Luego de definir el conjunto final de grupos se procede a discretizar las horas capturadas. Para discretizar cada hora capturada la técnica determina a qué grupo pertenece la misma. Para verificar a qué grupo pertenece se debe calcular la distancia entre la hora y la media de cada grupo. Dicha distancia es medida en segundos. Una vez que se define el grupo al que pertenece la hora a discretizar, el valor representativo de la hora se expresa mediante el identificador del grupo seleccionado. Para el evento _D:01/12/2014/07/30 de la actividad CaminoInglés la hora 07h 30m es expresada como “6” haciendo referencia al grupo al cual pertenece.
Finalmente, el evento de tiempo discretizado queda expresado como la concatenación de la hora discretizada y la fecha discretizada separado por un “#”. Por lo tanto, cuando APR captura el evento ”_D:01/12/2014/07/30” que representa la fecha de inicio de la actividad CaminoInglés, el resultado final es “6#Lunes“. Donde “Lunes” es el día de la semana de la fecha 01/12/2014 y el valor 6 identifica al número de grupo donde se sitúo la hora 07:30 Hs.
Eventos de posición
Para la discretización de eventos de posición APR utiliza la técnica de K-means. La técnica es aplicada sobre un conjunto de posiciones de una actividad. Dicho conjunto de posiciones es denominado trayectoria.
El primer paso para la aplicación de K-means es definir el número de grupo en los que se va a dividir la trayectoria, el valor K. La principal característica de las trayectorias que forman parte de una actividad es que éstas varían en longitud y cantidad de posiciones que la componen. Esta característica impacta en la elección del K. Si se establece un K fijo relativamente pequeño puede ocurrir que para longitudes grandes sean pocos los grupos generados para representar grandes trayectorias. Por el contrario, en trayectorias muy cortas pueden quedar grupos prácticamente vacíos. Es por eso que se definió que la mejor forma es tener un K dinámico.
CAPÍTULO 3. ENFOQUE DE APR 36
Algoritmo 3.1Cálculo del valor K para la discretización de las posiciones
input : trayectoria T output : int
begin
K = getDistancia (T) / (2* Radio ) if (K ==0)
return 1 return K
end
Para poder definir la longitud de la trayectoria, APR calcula la distancia entre cada posición de la misma. Dada la trayectoria de la actividad CaminoInglés representada en la figura3.1.7, la distancia total recorrida es igual a la suma de la distancia de los segmentos AB, BC, CD, DE, EF, FG, GH, HI, IJ, JK, KL, LM, MN, NO, OP Y PQ.
Figura 3.1.7: Trayectoria de la actividad CaminoInglés
Una vez establecido el valor K la técnica genera los grupos donde se agrupan las posiciones. Para poder establecer a qué grupo pertenece cada posición, la técnica mide la distancia de coordenadas desde cada posición a la media de cada grupo que es representada por una posición. Para medir la distancia entre una posición1 (lat1,long1) y una posición2 (lat2, long2) se utilizó la fórmula de Haversine1representada en la ecuación :
4lat=lat1−lat2
CAPÍTULO 3. ENFOQUE DE APR 37
a=sin2(4lat
2 ) +cos(lat1)∗cos(lat2) +sin
2(4long
2 )
b=2∗arctan(√2a∗√2 1−a)
distancia=radioTierra∗b∗1000
Continuando con el ejemplo propuesto, supongamos que se desea discretizar la trayectoria de la actividad Cami-noInglés. Debido a longitud de la trayectoria de la actividad CaminoInglés, el cálculo del valor del K da como resultado 8. En la figura 3.1.8 se puede observar los grupos generados por la primera etapa del algoritmo K-means. Cada grupo tiene su media representado por un punto marrón.
Figura 3.1.8: Trayectoria de la actividad CaminoInglés luego de aplicar la primer etapa de k means
CAPÍTULO 3. ENFOQUE DE APR 38
Figura 3.1.9: Trayectoria de la actividad CaminoInglés discretizada
Cada grupo generado es almacenado para poder ser reutilizado por APR en el entrenamiento y reconocimiento de futuras actividades. Cada grupo almacenado está representado por un identificador numérico y la media que lo representa. Cuando una trayectoria es discretizada APR debe corroborar si los nuevos grupos generados pertene-cen a grupos ya existentes. Esto le permite conocer si una trayectoria atraviesa posiciones ya conocidas y poder identificarlos de la misma manera.
CAPÍTULO 3. ENFOQUE DE APR 39
Figura 3.1.10: Intersección entre grupos
De esta forma se discretiza la trayectoria de la actividad CaminoInglés. La trayectoria queda representada como un conjunto de identificadores que representan los grupos definidos por la técnica K-means. En la figura 3.1.11 se puede observar la actividad CaminoInglés con todos sus eventos discretizados.
Figura 3.1.11: Actividad CaminoInglés discretizada
3.1.2.2. Segmentación
Otro de los problemas que nos enfrentamos fue comparar actividades de diferente cantidad de eventos. Cuando una actividad se está realizando en tiempo real no se tiene el conjunto total de eventos que conforman dicha actividad. Esto genera que la comparación con las actividades entrenadas sea injusta, dado la diferencia de eventos que contie-ne cada una. Una de las posibles soluciocontie-nes a dicho problema es segmentar cada actividad en partes más pequeñas [10].
CAPÍTULO 3. ENFOQUE DE APR 40
numérico y contiene una cantidad N de eventos. APR permite definir la cantidad de eventos que contiene un seg-mento a través de un parámetro de configuración. Cuando N eventos son capturados por APR se procede a crear un segmento.
APR cuenta una cola del tamaño de segmento elegido donde se almacenan los eventos capturados. Cuando la cola se encuentra llena, APR genera un segmento. A cada segmento generado se le asigna un identificador numérico. De esta manera las actividades quedan representadas como una lista ordenada de números que hacen referencia a los segmentos que la componen.
Cada segmento generado por APR debe ser discretizado. Esto se debe a que las técnicas de machine learning son entrenadas con la información de la actividad discretizada. Como la actividad que se está realizando en tiempo real no contiene todos los eventos, la discretización se debe realizar por segmentos. De esta manera las técnicas pueden comparar las mismas porciones de información.
Siguiendo con el ejemplo y suponiendo un tamaño de segmento igual a 10, en la figura 3.1.12 se puede observar cómo queda la actividad CaminoInglés y el primer segmento generado al procesar los primero 10 eventos. Al ser el primer segmento, APR le asigna el identificador 1. Este segmento en particular está compuesto por una trayectoria discretizada en 5 grupos (1, 2, 3, 4 y 5), la fecha (6#Lunes) y un evento de información ( “_E:TempMedia” ).
Figura 3.1.12: Actividad CaminoInglés con su primero segmento generado
Cuando un nuevo evento es capturado, APR utiliza los últimos N-1 eventos almacenados en la cola (descartan-do el primero) y añade el nuevo. Como la cola vuelve a contener N eventos se genera un nuevo segmento. De esta manera la cola nunca se vacía. Como se puede observar en la figura 3.1.13, cuando APR recibe el evento ( “_E:TransitoBajo” ) genera un nuevo segmento con los 9 últimos eventos del segmento anterior. Como el nuevo segmento generado es prácticamente igual al anterior, no se agrega como nuevo segmento, sino que añade la nueva información generada al segmento anterior.
Figura 3.1.13: Segundo segmento generado para la actividad CaminoInglés
CAPÍTULO 3. ENFOQUE DE APR 41
del usuario, APR verifica si se trata de un nuevo segmento o ya existe uno con características similares. El segmento será almacenado en el perfil con nuevo identificador solo si no se encontró, dentro de los segmentos almacenados, uno que sea similar. Para saber si dos segmentos son similares APR utiliza una heurística.
La heurística representada en el pseudocódigo3.2 nos determina si dos segmentos son similares. Para esto la heu-rística compara la fecha en la que se realizaron y la similitud de sus trayectorias (si son parecidas en un porcentaje mayor al 60 %, las trayectorias se consideran similares).
Algoritmo 3.2Comparar dos segmentos
input : Segmento A, B output : boolean begin
if ( getFechadeInicio (A) != getFechadeInicio (B)) return false
int min = min ( getLongitudTrayectoria (A), getLongitudTrayectoria (B)) trayectoria T = interseccion ( getTrayectoria (A), getTrayectoria (B )); int total = tamaño (T) / min ;
if ( total < 0.6) return false return true
end
Si la heurística retorna que los segmentos son similares se añade en el segmento almacenado aquella información nueva que aporte el nuevo segmento. Se toma como información nueva todos aquellos eventos de tiempo o de información (no posiciones) que pertenecen al nuevo segmento pero que no se encuentran en el segmento ya alma-cenado. El objetivo de agregar la información que aporten los segmentos nuevos a los ya almacenados, es poder comprender cuales son los eventos que son determinantes para cada segmento.
En base a esta heurística, el segundo segmento generado para la actividad CaminoInglés no es almacenado en el perfil ya que es similar al segmento 1. Sin embargo el evento “_E:TransitoBajo” del segundo segmento no se encuentra en el segmento 1 por lo que es agregado. Este cambio nos da la información de que el segmento 1 puede realizarse aunque haya poco tránsito. Luego de reconocer el nuevo segmento, la actividad CaminoInglés generada hasta el momento no sufre cambios, ya que el último segmento que la compone (segmento 1) es igual al nuevo segmento reconocido.
CAPÍTULO 3. ENFOQUE DE APR 42
Figura 3.1.14: Resultado final luego de segmentar la actividad CaminoInglés
De la misma manera se crea y procesa la actividad Inglés. En la figura 3.1.15 se puede observar dicha actividad representada. Como se puede ver, la actividad Inglés contiene menos cantidad de posiciones, esto se debe a que la persona no realiza una trayectoria. De esta manera cuando se aplica el algoritmo de K-means, se genera un solo grupo. Como el grupo generado intersecta con el grupo 8 de la actividad CaminoInglés se utiliza el mismo identificador.
Figura 3.1.15: Resultado final luego de segmentar la actividad Inglés
3.1.3.
Entrenamiento de técnicas de machine learning.
CAPÍTULO 3. ENFOQUE DE APR 43
3.1.3.1. String matching
Durante la fase de entrenamiento la técnica de string matching se centra en representar cada actividad como una palabra. Para realizar esta transformación la técnica de string matching concatenan el identificador de cada segmento que compone la actividad. Cada identificador es separado por el símbolo “#”. De esta manera cuando se recibe la secuencia de actividades procesadas, CaminoInglés e Inglés, la técnica genera las siguientes palabras:
CaminoInglés= 1#2
Inglés= 3#
Todas las actividades que son entrenadas por la técnica de string matching son almacenadas en una lista de pa-labras reconocidas. Cada palabra contiene la frecuencia con la que fue realizada. Es decir, si dos actividades son transformadas en la misma palabra, string matching almacena una sola con una frecuencia de dos. Esta frecuencia es utilizada por APR para el reconocimiento de actividades. Además de la frecuencia, cada palabra almacena el identificador de la actividad a la que hace referencia. Este identificador es utilizado por APR para obtener toda la información detallada de la actividad.
3.1.3.2. Árboles de decisión
Durante la fase de entrenamiento, la técnica de árboles de decisión usa la información capturada de las actividades para generar un árbol. Para evitar la implementación de la técnica, APR utiliza el framework WEKA. WEKA contiene una colección de algoritmos de machine learning. Cada uno de los algoritmos que provee WEKA utiliza un conjunto de datos de entrenamiento, también llamado dataset. El algoritmo de WEKA que se utilizó para árboles de decisión es J48 debido a que es conocido por presentar una alta tasa de aciertos en aplicaciones de minería de datos [17].
El algoritmo de J48 genera un modelo de un árbol de decisión basado en un grupo de datos de entrenamiento. Los datos de entrenamiento son un conjunto de entradas ya clasificadas. Cada entrada contiene un conjunto de atributos que representan las características de la misma y un valor que representa la clase a la que pertenece la muestra. En base a esta información el algoritmo genera el árbol de decisión. Cada nodo del árbol está representado por el atributo que divide de la mejor manera el conjunto de datos de entrenamiento. De esta manera, el atributo con la mayor ganancia de información se elige como parámetro de decisión [11].
Para utilizar la técnica de árboles de decisión se debe definir el dataset y su esquema. En la tabla 3.1.1 se visualiza un esquema definido a modo de ejemplo. El esquema está compuesto por un conjunto de atributos y un atributo de clase. El atributo de clase representa el elemento a predecir. Mientras que el resto de los atributos definen la información que ayuda a determinar el resultado de una predicción. Por otra parte, el dataset definido en la tabla 3.1.2 se compone por un conjunto de entradas, donde cada entrada contiene un valor para cada atributo definido en el esquema. Dichas entradas representan la posibilidad de hacer o no ejercicios basado en el estado del clima.
Esquema
Atributo Nombre Valores posibles
Atributo 1 Temperatura {Alta, Baja, Media} Atributo 2 Viento {Si, No} Atributo 3 Lluvia {Si, No} Atributo Clase Hacer ejercicio {Si, No}
CAPÍTULO 3. ENFOQUE DE APR 44
Entradas
Atributo 1 Atributo 2 Atributo 3 Atributo Clase
Alta No No Si
Baja Si Si No
Baja No No No
Media No No Si
Tabla 3.1.2: Dataset de entrenamiento
Una vez que el dataset es definido, APR envía las entradas a la técnica para que ejecuten los algoritmos y generen las estructuras necesarias. Como nuestra técnica elegida es un árbol de decisión, este paso genera el árbol que se usa para predecir las actividades futuras.
El primer paso es definir cuál es el esquema que utilizará APR para predecir actividades. Para poder decidir cuál será la siguiente actividad que el usuario debe realizar es necesario conocer qué actividad está realizando actual-mente y cuáles fueron los últimos eventos que se detectaron. De esta forma, el esquema está representado por la descripción de la actividad que actualmente el usuario está realizando y los eventos que conforman el último seg-mento. Finalmente, como el objetivo es predecir futuras actividades, el atributo de clase que contiene el esquema representa la próxima actividad a realizar.
Como el atributo de clase de nuestro esquema representa la actividad futura a realizar, resulta útil identificar de la misma manera al conjunto de actividades que tiene el mismo significado para el usuario. Si representamos cada actividad futura con un identificador único, tendremos poca información asociada a cada actividad. Esto se debe a que cada actividad ocurre una sola vez, por lo que el árbol generado por la técnica no representaría de manera adecuada el perfil del usuario. Por este motivo, se decide agrupar las actividades de acuerdo a su significado.
CAPÍTULO 3. ENFOQUE DE APR 45
Algoritmo 3.3Ubicar una actividad en su grupo correspondiente
input : Actividad A begin
for ( grupo in grupos ) begin
Actividad B = getPrimeraActividad ( grupo ) if pertenecenMismoGrupo (A, B)
begin
Insertar ( grupo , A) exit
end end
nuevoGrupo = crearNuevoGrupo (); Insertar ( nuevoGrupo , A)
Insertar ( grupos , nuevoGrupo ) end
CAPÍTULO 3. ENFOQUE DE APR 46
Algoritmo 3.4Verificar si dos actividades pertenecen al mismo grupo
input : Actividad A, Actividad B output : boolean pertencen begin
tamañoA = getCantidadSegmentos (A) tamañoB = getCantidadSegmentos (B) max = max ( tamañoA , tamañoB )
diff = | tamañoA - tamañoB |
if ( diff > (0.4 * max )) return false
int total = 0;
for (sA in getSegmentos (A)) begin
for (sB in getSegmentos (B)) if (( getID (SA) == getID (SB ))
total = total + 1; end
if ( total >= (0.6 * max )) return true ; return false ;
end
Como se puede observar en el pseudocódigo, el algoritmo compara la longitud de la actividad. Para esto analiza la cantidad de segmentos de cada una. Si la diferencia es mayor al 40 % de la actividad más larga, entonces se determina que no pertenecen al mismo grupo. En caso de que las longitudes sean similares, el algoritmo evalúa la cantidad de segmentos comunes entre las actividades. Si la cantidad de segmentos comunes es mayor al 60 % se determina que pertenecen al mismo grupo. De esta forma se define los grupos a los que pertenecen las actividades. Como las actividades CaminoInglés e Inglés representan actividades distintas, que tienen poca cantidad de segmen-tos en común, serán incluidas en distinsegmen-tos grupos. La actividad CaminoInglés se asigna al grupo 1, mientras que la actividad Inglés se asigna el grupo 2. De esta forma queda representado el atributo clase de nuestro esquema.
Una vez que tenemos los atributos y la clase de nuestro esquema representados es hora de entrenar las actividades. Para explicar dicho procedimiento se hace uso de las actividades CaminoInglés e Inglés que se vienen usando durante este capítulo. Las actividades procesadas se pueden observar en la figura 3.1.14. Una actividad es enviada a entrenar por APR solo si cuenta con la información de la actividad previa que se realizó. Como CaminoInglés es la primera actividad que ocurrió no tenemos información acerca de la actividad anterior que llevó a realizar la actividad. Al no tener esta información la actividad CaminoInglés no es enviada a entrenar. Sin embargo, esta actividad será reservada para ser utilizada como antecedente de la actividad futura.
CAPÍTULO 3. ENFOQUE DE APR 47
Algoritmo 3.5Entrenamiento de las técnicas de WEKA
input : Actividad actual , Actividad anterior begin
nombre = getNombre ( anterior ) grupo = getGrupo ( actual )
for ( segmento in getSegmentos ( anterior )) begin
eventos = getEventos ( segmento )
entrada = getEntradas ( nombre , eventos , grupo ) entrenar ( entrada )
end end
En la tabla 3.1.3 se detalla cuales son las dos primeras entradas generadas para la actividad Ingles. Como la técnica de árboles de decisión implementada no admite entradas con atributos vacíos, si los eventos discretizados de un segmento no alcanzan para completar una entrada, los atributos se completan repitiendo los eventos. Además, como el orden en que la técnica procesa los atributos de las entradas importa, se decide rellenar los atributos siempre en el mismo orden, primero los eventos de posición, luego los eventos de tiempo, y por último los eventos de información. El valor 2 del atributo clase de ambas entradas representa el grupo en el que se encuentra la actividad Inglés. Una vez generadas todas las entradas durante la fase de entrenamiento son procesadas por la técnica. Este procedimiento genera el árbol con lo cual la técnica es entrenada.
Entrada 1
Atributo 1 CaminoInglés Atributo 2 1 Atributo 3 2 Atributo 4 3 Atributo 5 4 Atributo 6 5 Atributo 7 6#Lunes Atributo 8 TempMedia Atributo 9 TransitoBajo Atributo 10 TempMedia Atributo 11 TransitoBajo Atributo Clase 2
Entrada 2
Atributo 1 CaminoInglés Atributo 2 4 Atributo 3 5 Atributo 4 6 Atributo 5 7 Atributo 6 8 Atributo 7 6#Lunes Atributo 8 TransitoBajo Atributo 9 TempAlta Atributo 10 TransitoBajo Atributo 11 TempAlta Atributo Clase 2
Tabla 3.1.3: Entradas 1 y 2 generadas para el entrenamiento de árboles de decisión