• No se han encontrado resultados

Análisis de ténicas para predecir patrones de uso de los dispositivos móviles

N/A
N/A
Protected

Academic year: 2020

Share "Análisis de ténicas para predecir patrones de uso de los dispositivos móviles"

Copied!
104
0
0

Texto completo

(1)

Facultad de Ciencias Exactas

An´alisis de T´ecnicas para predecir patrones de uso de los

dispositivos m´oviles.

Trabajo final de carrera presentado como requisito parcial para optar por el t´ıtulo de Ingeniero de Sistemas.

Francisco Nicol´

as Leguizam´

on

Jos´

e Mart´ın Lopez

(2)

Resumen

La utilizaci´on de dispositivos m´oviles a lo largo de los a˜nos est´a creciendo cada vez de forma m´as sostenida por la constante demanda de sus usuarios de realizar a trav´es de una pantalla cualquier actividad en cualquier momento. As´ı, el uso y las necesidades que se presentan hace que los fabricantes de ´estos generen hardware cada vez m´as potente para satisfacerlas. Es decir, c´amaras con m´as definici´on, pantallas m´as grandes, incremento de la velocidad t´actil, entre otras, asimilando cada vez m´as a peque˜nas y potentes computadoras de bolsillo.

Todo esto hace que caracter´ısticas de los dispositivos m´oviles. como la bater´ıa, no avancen de la forma que lo hacen otros aspectos. En muchos casos, las bater´ıas pasaron de durar semanas a s´olo un d´ıa. Se han planteado gran cantidad de soluciones con respecto a los consumos excesivos a nivel hardware, por ejemplo, apagando y prendiendo ciertos sensores de acuerdo a su uso cotidiano. A ra´ız de esto, nace la principal motivaci´on de este trabajo que es lograr en base a sus estados pasados de datos proporcionados por usuarios sobre el uso habitual del M´ovil, lograr predecir estados futuros y brindar alg´un tipo de ayuda sobre c´omo en el uso diario ciertos patrones de comportamiento pueden reducir los consumos de bater´ıa.

Particularmente, el foco del trabajo es, a partir de la aplicaci´on de t´ ecni-cas de aprendizaje de m´aquina construir modelos predictivos para estimar el desempe˜no futuro de un servicio en base a mediciones previas de las pro-piedades del mismo. Se proponen dos herramientas para asistir la aplicaci´on del enfoque. Una de ellas facilita el modelado de datos proporcionados por sensores propios del M´ovil, como caracter´ısticas de wifi, porcentaje de brillo

(3)

de pantalla, uso de memoria, bater´ıa, entre otros. La segunda herramien-ta permite utilizar diferentes Modelos de aprendizaje de M´aquina sobre los conjuntos de datos generados. As´ı, se logra construir modelos predictivos y obtener m´etricas sobre alguna propiedad de inter´es de alguna caracter´ıstica espec´ıfica.

(4)

Agradecimientos

Agradecemos a nuestras familias por el apoyo recibido por parte de ellos durante toda la carrera para que nosotros logremos nuestros objetivos, con la finalizaci´on de este trabajo sentimos que devolvemos una parte de ese apoyo y tenemos la oportunidad de hacerlos sentir orgullosos.

(5)

´

Indice general

1. Introducci´on 10

1.1. Motivaci´on . . . 10

1.2. Objetivos y soluci´on propuesta . . . 11

1.3. Organizaci´on . . . 12

2. Marco Te´orico 14 2.1. Dispositivos M´oviles . . . 14

2.1.1. Android . . . 15

2.2. Aprendizaje de M´aquina . . . 17

2.2.1. Clasificaci´on de t´ecnicas de aprendizaje . . . 19

2.2.2. T´ecnicas Contempladas . . . 20

2.2.2.1. Regresi´on Lineal . . . 21

2.2.2.2. Regresi´on Log´ıstica . . . 22

2.2.2.3. Clasificador Gaussian Naive Bayes . . . 24

2.2.2.4. K-Nearest Neighbors (KNN) . . . 25

2.2.2.5. M´aquina de vector de soporte (SVM) . . . 26

2.2.2.6. Series de tiempo . . . 29

2.2.2.7. Redes Neuronales Recurrentes (LSTM) . . . . 30

2.3. Evaluaci´on de Modelos . . . 34

2.3.1. La validaci´on cruzada (cross-validation) . . . 34

2.3.2. M´etricas . . . 35

2.3.3. Ajuste del modelo: Overfitting y Underfitting . . . 35

(6)

3. Trabajos Relacionados 37

3.1. Librer´ıas y Aplicaciones Utilizadas . . . 37

3.1.1. Device Analyzer . . . 37

3.1.2. Scikit-learn . . . 38

3.1.3. Keras . . . 38

3.1.4. Trabajos Relacionados . . . 39

3.1.4.1. Refactorizaciones para kernels computaciona-les cient´ıficos en dispositivos m´oviles . . . 40

3.1.4.2. Usage Pattern Mining for Smartphone Use Personalization . . . 41

3.1.4.3. Measuring mobile phone energy consumption for 802.11 wireless networking . . . 42

3.1.4.4. Analysis of Dierential Synchronisation’s Energy Consumption on Mobile Devices . . . 43

3.1.4.5. An Automatic Detector of Energy Leaks for Smartphone Applications (ADEL) . . . 44

3.1.4.6. An Investigation into Energy-Saving Program-ming Practices for Android Smartphone App Development . . . 45

3.1.4.7. eDoctor: Automatically Diagnosing Abnormal Battery Drain Issues on Smartphones . . . 46

3.1.5. Conclusiones . . . 48

4. Enfoque e Implementaci´on 49 4.1. Modulo transformador de datos . . . 50

4.1.1. Estructura de los Logs . . . 51

4.1.2. Datos Transformados . . . 52

4.1.3. Patr´on Decorator . . . 55

4.1.4. Patr´on Decotator aplicado al problema . . . 57

4.2. M´odulo de predicci´on de datos . . . 60

4.2.1. Implementaci´on Regresi´on Lineal . . . 63

(7)

4.2.3. Implementaci´on Red Neuronal Recurrente . . . 65

4.2.4. Hiperpar´ametros de los modelos . . . 70

4.2.5. Funciones de la Herramienta . . . 70

71 5. Evaluaci´on 76 5.1. Correlaci´on de los indicadores . . . 76

5.2. Archivos contemplados para la evaluaci´on . . . 78

5.3. Pruebas realizadas para los Algoritmos de Clasificaci´on . . . . 80

5.4. Resultados de los Algoritmos de Regresi´on . . . 86

5.5. Resultados sobre Algoritmos de Redes Neuronales . . . 89

5.5.1. Introduccion . . . 89

5.5.2. Configuraci´on con algoritmos de Regresi´on . . . 91

5.5.3. Configuraci´on con algoritmos de Clasificaci´on . . . 93

6. Conclusiones 96 6.1. Limitaciones . . . 98

(8)

´

Indice de figuras

2.1. Arquitectura sistema Android . . . 16

2.2. Regresi´on lineal en dos dimensiones . . . 21

2.3. Curva Regresi´on Log´ıstica . . . 23

2.4. Esquema conceptual del algoritmo KNN . . . 25

2.5. Ejemplo de las funciones kernel . . . 28

2.6. Esquema del funcionamiento de SVM . . . 28

2.7. Ejemplo b´asico de red neuronal recurrente . . . 31

2.8. Red neuronal recurrente desenrollada . . . 31

2.9. Estructura del m´odulo repetidor . . . 32

2.10. Notaci´on del m´odulo repetidor . . . 32

2.11. Efectos del modelo sobre los datos de entrenamiento. . . 36

4.1. Diagrama de clases del patr´on Decorator . . . 55

4.2. Estructura de los objetos en memoria del patr´on Decorator . . 56

4.3. Diagrama de clases. Parte 1 . . . 58

4.4. Diagrama de clases. Parte 2 . . . 58

4.5. Diagrama de clases. Parte 3 . . . 58

4.6. Ejemplo de interacci´on . . . 63

4.7. Diagrama de Clases implementaci´on de Algoritmos . . . 64

4.8. Carga y visualizaci´on de datos . . . 71

4.9. Gr´afico sobre disposici´on de los datos . . . 72

4.10. Selecci´on de Modelo . . . 72

4.11. Gr´afico resultado . . . 73

4.12. M´etricas resultantes del entrenamiento . . . 74

(9)

4.13. Predicci´on interactiva . . . 75 5.1. Gr´aficos de correlaci´on de los archivos tratados . . . 77 5.2. Correlaci´on promedio entre el porcentaje de bater´ıa y dem´as

indicadores . . . 78 5.3. Tabla y gr´afico de los resultados cross validation para el

algo-ritmo KNN . . . 84 5.4. Tabla y gr´afico de los resultados cross validation para el

algo-ritmo Na¨ıve Bayes . . . 85 5.5. Tabla y gr´afico de los resultados cross validation para el

algo-ritmo SVM . . . 85 5.6. Tabla y gr´afico de los resultados cross validation para el

algo-ritmo de regresi´on log´ıstica . . . 86 5.7. Tabla y gr´afico de los promedios de todos los archivos por

algoritmo . . . 87 5.8. Tabla y gr´afico de los errores medios del algoritmo de regresi´on

(10)

´

Indice de tablas

4.1. Tabla ejemplo de archivo CSV . . . 50

4.2. Rutas de peticiones. . . 61

4.3. Acciones sobre el modelo . . . 61

4.4. Funciones de p´erdidas . . . 68

4.5. Algoritmos de optimizaci´on . . . 69

5.1. Correlaci´on entre el porcentaje de bater´ıa y dem´as indicadores. Ordenados por correlaci´on promedio . . . 79

5.2. Archivos utilizados . . . 81

5.3. Tabla hiperpar´ametros por defecto de los algoritmos . . . 83

5.4. Tabla promedio de tiempos por algoritmos de Clasificaci´on . . 86

5.5. Correlaci´on de los 7 atributos contemplados para los algorit-mos de LSTM. . . 89

5.6. Tabla de configuraciones utilizadas en LSTM para algoritmos de regresi´on . . . 91

5.7. Resultados para los algoritmos LSTM con configuraciones de regreci´on . . . 92

5.8. Tabla de configuraciones utilizadas en LSTM para algoritmos de clasificaci´on . . . 93

5.9. Resultados para los algoritmos LSTM con configuraciones de clasificaci´on . . . 94

5.10. Configuraciones teniendo en cuenta el optimizador sgd orde-nadas por promedio de exactitud . . . 95

(11)

Cap´ıtulo 1

Introducci´

on

1.1.

Motivaci´

on

Los dispositivos m´oviles han evolucionado a partir de simples aparatos telef´onicos a computadoras peque˜nas con grandes capacidades computacio-nales. Llegando a la estimaci´on que hay m´as de 2 mil millones de dispositivos m´oviles en todo el mundo [1].

Los dispositivos m´oviles son artefactos electr´onicos peque˜nos que se ali-mentan a trav´es de una bater´ıa de litio. En este contexto, un Smartphone o tel´efono inteligente es un dispositivo port´atil que, adem´as de poseer capaci-dad de utilizar las redes telef´onicas m´oviles, posee capacidades de computo y almacenamiento que le permiten llevar a cabo otras tareas, como edici´on de emails, captura y procesamiento de im´agenes, utilizar videojuegos, etc. Esto se da gracias a que poseen sistemas operativos sobre los cuales se permite instalar aplicaciones para extender sus capacidades.

Mientras el tel´efono m´ovil es un dispositivo inal´ambrico electr´onico uti-lizado para acceder y utilizar los servicios de la red de telefon´ıa celular, el t´ermino inteligente hace referencia a la capacidad de usarlo tambi´en como una computadora de bolsillo.

El uso de Smartphones crece cada vez de forma m´as sostenida por la constante demanda de sus usuarios de realizar todo tipo de actividades en cualquier momento, como por ejemplo el chequeo de emails, notas, uso del

(12)

servicio de mensajer´ıa instant´anea, redes sociales, navegaci´on en internet, etc [2]. As´ı, las necesidades que se presentan hace que las compa˜n´ıas que producen estos dispositivos dise˜nen hardware cada vez m´as potente para satisfacerlas. Ejemplo de esto son, c´amaras con m´as definici´on, pantallas m´as grandes, incremento de la velocidad t´actil, procesadores m´as potentes, m´as capacidad de almacenamiento y mejor conectividad, haci´endolos cada vez m´as similares a peque˜nas computadoras de escritorio [3]. Todo esto hace que algunas caracter´ısticas como lo es, por ejemplo, la bater´ıa, no avancen de la forma que lo hacen otros aspectos.

En muchos casos, las bater´ıas pasaron de durar semanas a s´olo un d´ıa. Se han planteado gran cantidad de soluciones con respecto a los consumos excesivos a nivel hardware. A ra´ız de esto, nace la principal motivaci´on de este trabajo que es lograr encontrar patrones de uso que afecten significativamente el consumo de bater´ıa con el fin de poder recomendar al usuario sobre esto, por ejemplo, muchos usuarios cargan el tel´efono de acuerdo a su conveniencia y otros desactivan el Bluetooth o el WiFi para salvar la vida de la bater´ıa y otros no saben que m´as hacer para extender su duraci´on.

Desde la creaci´on del smartphone la duraci´on de la bater´ıa ha sido uno de los principales problemas para sus usuarios. En su mayor´ıa, dependiendo el uso, la bater´ıa de un smartphone dura aproximadamente un d´ıa, siendo un tiempo de autonom´ıa demasiado corto la cual presenta una oportunidad de estudio y una muy enf´atica motivaci´on para atacar esta problem´atica. A su vez estos dispositivos tienen la capacidad de capturar logs, es decir, un seguimiento de registros de todas las actividades que se est´an generando en el mismo, proporcionando una enorme cantidad de datos para poder procesar y que posteriormente ser´an de utilidad en el estudio.

1.2.

Objetivos y soluci´

on propuesta

(13)

Como primer paso se crear´a un m´odulo en donde se puedan formatear los datos brindados para realizar este proyecto, los mismos est´an creados en un formato establecido por la Universidad de Cambridge [4] los cuales deber´an ser procesador y formateados a un conjunto de logs que sirvan como entrada a los algoritmos provistos por la librer´ıa sk-learn1 de Python.

Para facilitar la tarea de evaluaci´on se crear´a un m´odulo como aplica-ci´on Web, el cual presentar´a una interface que permitir´a elegir el conjunto de datos que se quieran estudiar as´ı como tambi´en los atributos implicados al mismo estudio, esta aplicaci´on se conectar´a con un servidor que ser´a el encargado de procesar toda esta informaci´on y aplicar los algoritmos con sus diferentes variantes de ajustes para optimizar su rendimiento, as´ı como tam-bi´en, devolver todo el informe relacionado con m´etricas teniendo en cuenta diferentes t´ecnicas de c´alculos.

Todo esto nos permitir´a realizar el estudio que nos motiv´o desde un prin-cipio, poder comparar modelos de aprendizaje y ver cual de todos se adapta mejor a la problem´atica establecida, para esto se estudiar´an diferentes m´ etri-cas entre ellas el porcentaje de acierto con datos futuros.

1.3.

Organizaci´

on

El resto del trabajo se organiza en 5 cap´ıtulos. A continuaci´on se da un breve resumen de los temas que se abordan en cada uno de ellos.

En elcap´ıtulo 2se presenta el marco te´orico, donde se definen los concep-tos utilizados a lo largo de todo el informe, tales como: Android, aprendizaje de m´aquina, regresi´on, clasificaci´on, modelos, componentes, entre otros.

En elcap´ıtulo 3 se presentan algunos trabajos relacionados desde dife-rentes perspectivas: herramientas utilizadas para el estudio, y trabajos que involucran problem´aticas en la duraci´on de la bater´ıa.

En el cap´ıtulo 4 se describe el enfoque y las herramientas propuestas para satisfacerlos. Se detalla la arquitectura, dise˜no e implementaci´on de las

(14)

mismas, como las diferentes decisiones que se consideraron mas importantes. En el cap´ıtulo 5 se presenta la evaluaci´on del enfoque sobre los casos de estudio. Se presentan las propiedades consideradas en los escenarios eva-luados, los modelos que han sido generados y analizados, y los resultados alcanzados.

(15)

Cap´ıtulo 2

Marco Te´

orico

En este cap´ıtulo se presentan los conceptos fundamentales del dominio, el cual est´a centrado en torno a la predicci´on de patrones en el uso de dispo-sitivos m´oviles.

2.1.

Dispositivos M´

oviles

Los dispositivos m´oviles son artefactos electr´onicos peque˜nos que se ali-mentan a trav´es de una bater´ıa de litio. En este contexto, un smartphone o tel´efono inteligente es un tel´efono m´ovil con una mayor capacidad de c´omputo y conectividad que un tel´efono m´ovil convencional. Mientras el tel´efono m´ovil es un dispositivo inal´ambrico electr´onico utilizado para acceder y utilizar los servicios de la red de telefon´ıa celular, el t´ermino inteligente hace referencia a la capacidad de usarlo tambi´en como una computadora de bolsillo.

Una de las caracter´ısticas m´as destacadas de los smartphones reside en la posibilidad que brindan de instalar aplicaciones mediante las cuales el usuario final logra ampliar las capacidades y funcionalidades del equipo, obteniendo as´ı una personalizaci´on total del dispositivo. Otras caracter´ısticas importan-tes son la capacidad multitarea, el acceso y conectividad a Internet v´ıa WiFi o red m´ovil, el soporte de clientes de email, la eficaz administraci´on de da-tos y contacda-tos, la posibilidad de lectura de archivos en diversos formada-tos, como PDF o MS Office Docs, y la posibilidad de obtener datos del

(16)

te a trav´es de sensores especializados como el aceler´ometro y el sistema de posicionamiento global conocido como GPS por sus siglas en ingl´es, entre otros.

Para poder ejecutar aplicaciones en los dispositivos m´oviles, los mismos poseen, al igual que las computadoras, sistemas operativos. El sistema ope-rativo es el software que administra los recursos de hardware y software del dispositivo m´ovil. En este sentido su objetivo es proveer un ambiente en el cual el usuario pueda ejecutar programas en un manera conveniente y efi-ciente.

2.1.1.

Android

Android es un sistema operativo basado en el n´ucleo Linux. Fue dise˜nado principalmente para dispositivos m´oviles con pantalla t´actil, como smartp-hones, tabletas, aunque tambi´en se usa en otros dispositivos, como relojes inteligentes, televisores y sistemas de entretenimiento de autom´oviles. Ini-cialmente fue desarrollado por Android Inc., empresa que Google respald´o econ´omicamente y m´as tarde, en 2005, compr´o [5]. Android fue presenta-do en 2007 junto la fundaci´on del Open Handset Alliance (un consorcio de compa˜n´ıas de hardware, software y telecomunicaciones) para avanzar en los est´andares abiertos de los dispositivos m´oviles. El primer m´ovil con el sistema operativo Android fue el HTC Dream y se vendi´o en octubre de 2008. An-droid es el sistema operativo m´ovil m´as utilizado del mundo, con una cuota de mercado superior al 80 % al a˜no 2017, muy por encima de IOS [6].

Los componentes principales del sistema operativo de Android (cada sec-ci´on se describe en detalle):

(17)

de componentes; cualquier aplicaci´on puede publicar sus capacidades y cualquier otra aplicaci´on puede luego hacer uso de esas capacidades (sujeto a reglas de seguridad del framework). Este mismo mecanismo permite que los componentes sean reemplazados por el usuario.

Figura 2.1: Arquitectura del sistema Android.1

Bibliotecas: Android incluye un conjunto de bibliotecas de C/C++ usa-das por varios componentes del sistema. Estas caracter´ısticas se expo-nen a los desarrolladores a trav´es del marco de trabajo de aplicaciones de Android. Algunas son: System C library (implementaci´on biblioteca C est´andar), bibliotecas de medios, bibliotecas de gr´aficos, 3D y SQLite, entre otras.

Runtime de Android: Android incluye un conjunto de bibliotecas base que proporcionan la mayor parte de las funciones disponibles en las bibliotecas base del lenguaje Java. Cada aplicaci´on Android corre su

(18)

propio proceso, con su propia instancia de la m´aquina virtual Dalvik. Dalvik ha sido escrito de forma que un dispositivo puede correr m´ ulti-ples m´aquinas virtuales de forma eficiente. Dalvik ejecutaba hasta la versi´on 5.0 archivos en el formato de ejecutable Dalvik (.dex), el cual est´a optimizado para memoria m´ınima. La M´aquina Virtual est´a ba-sada en registros y corre clases compiladas por el compilador de Java que han sido transformadas al formato.dex por la herramienta inclui-da dx. Desde la versi´on 5.0 utiliza el ART, que compila totalmente al momento de instalaci´on de la aplicaci´on.

N´ucleo Linux: Android depende de Linux para los servicios base del sistema como seguridad, gesti´on de memoria, gesti´on de procesos, pila de red y modelo de controladores. El n´ucleo tambi´en act´ua como una capa de abstracci´on entre el hardware y el resto de la pila de software.

2.2.

Aprendizaje de M´

aquina

El aprendizaje de m´aquina o aprendizaje autom´atico es una rama de la inteligencia artificial cuyo objetivo es desarrollar t´ecnicas que permitan a las computadoras descubrir patrones a partir de datos suministrados [7]. En el aprendizaje de m´aquina los programas no se codifican espec´ıficamente para resolver un problema, sino que los mismos extraen conocimiento de datos con la esperanza de poder generalizarse cuando arriben nuevos datos. Los datos son la ´unica herramienta de la que se dispone y conoce a ciencia cierta sobre las caracter´ısticas de un dominio arbitrario sobre el cual se quiere generalizar conocimiento. Puede entenderse haciendo una analog´ıa con el aprendizaje humano basado en la experiencia, en donde el hombre basa su conocimiento en tres partes:

1. Recuerdo, el hombre reconoce cuando ha sido la ´ultima vez que estuvo en una determinada situaci´on (conjunto de datos de entrenamiento). 2. Adaptaci´on, reconoce la ´ultima vez que se prob´o una acci´on (salida

(19)

3. Generalizaci´on, reconoce si ha funcionado o no esta acci´on (si fue co-rrecta o no). generalizaci´on hace referencia a que algunos modelos puede ajustarse muy bien a los datos de entrada, pero cuando vienen nuevos datos fallan. Esto se debe a que se aprende particularidades del conjun-to de daconjun-tos de entrenamienconjun-to. Cuando se generaliza, el modelo puede no ajustarse tan bien a los datos de entrada, pero fallar´a mucho menos con datos nuevos [8].

El aprendizaje de m´aquina, entonces, es un proceso para que las compu-tadoras modifiquen o adapten sus acciones (predictivas o de control) para que sus resultados sean m´as precisos. Re´une ideas de neurociencia, biolog´ıa, estad´ıstica, matem´atica y f´ısica, para generar t´ecnicas y hacer que la compu-tadora aprenda. Un ´area importante relacionada con el aprendizaje de m´ aqui-na es la miner´ıa de datos, el proceso de extraer informaci´on ´util de grandes conjuntos de datos por medio de algoritmos eficientes.

Si se define el aprendizaje de m´aquina como la mejora de tareas a trav´es de la experiencia, surge la duda de c´omo la computadora puede saber si est´a aprendiendo mejor o de qu´e forma podr´ıa mejorar ese aprendizaje. De esto, surgen diferentes tipos de t´ecnicas o algoritmos de aprendizaje. Por ejemplo, se le puede indicar a un algoritmo la respuesta correcta para un problema, as´ı, la pr´oxima vez que se aplique su desempe˜no ser´a mejor. Tambi´en se deben aplicar diferentes t´ecnicas para la validaci´on de datos, esto permite sacar conclusiones acerca del acierto que tienen estos algoritmos y poder determinar qu´e algoritmos se adapta mejor a la problem´atica a atacar.

(20)

2.2.1.

Clasificaci´

on de t´

ecnicas de aprendizaje

El modo de aprendizaje que una t´ecnica particular puede realizar queda determinado por la naturaleza de los datos de entrada, es decir, los datos de entrenamiento (dataset). B´asicamente las t´ecnicas de aprendizaje se clasifican en dos grandes grupos: aprendizaje supervisado y no supervisado

Aprendizaje Supervisado

El aprendizaje supervisado utiliza un conjunto de datos basado en dos pares de objetos: los datos de entrada o conjunto de ejemplos del dominio y las res-puestas correctas (targets) para una propiedad determinada . A trav´es de las respuestas correctas provistas y basado en el conjunto de datos la t´ecnica de aprendizaje generaliza el comportamiento para responder a todas las posibles entradas. Este modo de aprendizaje, entonces, es un proceso que se realiza mediante un entrenamiento controlado por un agente externo que determina la respuesta que deber´ıa generar la t´ecnica a partir de una entrada determi-nada. Dentro del aprendizaje supervisado, las t´ecnicas pueden separarse en dos grupos de acuerdo a la naturaleza de la propiedad o respuesta.

Clasificaci´on: Consiste en asignar a cada ejemplo una etiqueta o clase

a la que pertenece basado en el entrenamiento de ejemplares de cada clase. Los datos de entrenamiento son instancias que pertenecen a una ´unica clase y el conjunto de clases cubre todas las salidas posibles, por eso se considera al proceso de clasificaci´on como un proceso discreto. El algoritmo de clasi-ficaci´on tiene como objetivo encontrar umbrales de decisi´on que sirvan para identificar las diferentes clases.

(21)

que mejor represente al conjunto de puntos, ya que funciones con distintos grados de polinomios producen diferentes efectos.

Aprendizaje No Supervisado

En el aprendizaje no supervisado, la m´aquina simplemente recibe los datos de entrada sin etiquetas o respuestas correctas como en el m´etodo supervisado, ni valores de recompensa desde el ambiente. Aun as´ı, es posible desarrollar un framework formal para llevar a cabo aprendizaje no supervisado basado en la noci´on de que el objetivo es construir una representaci´on de la entrada que puede ser usada para tomar decisiones, predecir futuras entradas, comunicar eficientemente entradas para otras m´aquinas, entre otras posibilidades.

El aprendizaje no supervisado puede entenderse como la b´usqueda de pa-trones en los datos independientemente del ruido presente en los mismos. Por ejemplo, las t´ecnicas de agrupamiento (clustering) son t´ecnicas de aprendi-zaje no supervisado que agrupan un conjunto de objetos de modo tal que los objetos pertenecientes a un mismo grupo (cluster) comparten alg´un tipo de similitud entre ellos, de igual sentido que se diferencian con los objetos de otro grupo. A diferencia del proceso de clasificaci´on, los grupos o clases no son conocidos fehacientemente antes del entrenamiento, un claro m´etodo de aprendizaje no supervisado.

2.2.2.

ecnicas Contempladas

(22)

2.2.2.1. Regresi´on Lineal

La regresi´on es la predicci´on de un valor desconocido a trav´es del c´alculo de una funci´on matem´atica a partir de los valores conocidos. Si se considera esta funci´on como una funci´on lineal, la salida ser´a la suma de cada valor conocido multiplicado

Figura 2.2: Regresi´on lineal en dos dimensiones.2

por una constante, lo cual define una l´ınea recta (plano en 3D o hiper-plano en dimensiones mayores) que circundan los puntos, como se puede ver en la Figura 2.2. Para encontrar la recta (funci´on lineal) que mejor se ajusta a los datos, se busca minimizar la distancia entre cada punto y dicha rec-ta. Luego, se intentar´a minimizar la funci´on de error que se calcula como la suma de las distancias. Si se minimiza la suma de los cuadrados de las distancias, se obtiene la minimizaci´on m´as com´un llamada optimizaci´on de m´ınimos cuadrados. Para minimizar este error en la funci´on lineal, puede utilizarse distintas t´ecnicas de regresi´on lineal, como ridge-regression y gra-diente estoc´astico descendiente. La primera aplica una penalizaci´on (ridge) a cada constante. La segunda, aplica un diferencial sobre la funci´on obtenien-do el gradiente el cual por definici´on, es la direcci´on en la que incrementa o disminuye en mayor medida. Dado que el objetivo es minimizar el error de

(23)

predicci´on, se debe seguir la funci´on en direcci´on del gradiente negativo en la cual la funci´on disminuye.

2.2.2.2. Regresi´on Log´ıstica

La regresi´on log´ıstica tiene ciertas similitudes en su planteamiento con la regresi´on lineal, pero est´a orientada a resolver problemas de clasificaci´on y no de predicci´on. La Regresi´on Log´ıstica no se utiliza para variables num´ericas, sino que se emplea para predecir las clases categ´orica a las que pertenecen las variables independientes. Debido a su sencillez y r´apida aplicaci´on, es-te algoritmo suele utilizarse con frecuencia para problemas de Clasificaci´on Binaria y Clasificaci´on Multiclase con fronteras lineales.

Para ello se apoya en una funci´on log´ıstica como la funci´on “sigmoide” fi-gura 2.3, que toma como entrada cualquier n´umero real y devuelve un n´umero real comprendido entre 0 y 1 y que podemos interpretar como una probabi-lidad.

f(t) = e

t

1 +et

Debido a que los modelos de clasificaci´on presentan cierta dificultad para identificar a qu´e categor´ıa pertenece una observaci´on dada, ya que como se mencion´o, el valor devuelto por la regresi´on log´ıstica puede ser visto como un valor probabil´ıstico entre 0 y 1, es donde se introducen las funciones de p´erdidas. Por ejemplo Cross entropy loss (p´erdida de entrop´ıa cruzada). La entrop´ıa cruzada se usa com´unmente para cuantificar la diferencia entre dos distribuciones de probabilidad. Por lo general, la distribuci´on “verdadera” (la que el algoritmo de aprendizaje autom´atico intenta igualar) es la que indica con un 100 % de probabilidad que una muestra pertenece a una clase. Por ejemplo, si se supone que para una instancia de entrenamiento espec´ıfica, la clase es B (de las posibles A o B), la distribuci´on ´unica para esta ser´a:

Pr ( C l a s e A) Pr ( C l a s e B)

0 . 0 1 . 0

(24)

Figura 2.3: Curva Regresi´on Log´ıstica.3

Como los algoritmos de aprendizaje autom´atico pueden predecir valores entre 0-1 puede tomarse como ejemplo el los valores siguiente de predicci´on:

Pr ( C l a s e A) Pr ( C l a s e B) 0 . 3 4 5 0 . 6 5 5

Lo que determina que tan cerca est´a la distribuci´on predicha de la verdadera es la p´erdida de entrop´ıa cruzada, la cual hace uso de la f´ormula:

H(p, q) = −X x

p(x)∗logq(x)

Donde p(x) es la probabilidad deseada, q(x) la probabilidad real. En este caso, la p´erdida es 0.423 :

H =−(0,0∗ln(0,345) + 1,0∗ln(0,655)) = 0,423

As´ı de “equivocada” o “muy lejos” est´a la predicci´on de la verdadera distribuci´on.

(25)

apagar sensor o no apagar sensor). Para ello, es necesario conocer el compor-tamiento de dicho m´ovil (sensores encendidos, si se encuentran escaneando, estado de la bater´ıa, etc.). La detecci´on de este tipo de cuestiones permite ofrecerle al usuario una atenci´on personalizada a fin de recomendarle ajus-tes determinados para disminuir el gasto innecesario de energ´ıa y ahorrar bater´ıa.

2.2.2.3. Clasificador Gaussian Naive Bayes

El clasificador Naive Bayes es un t´ermino de estad´ıstica, que consiste en un simple clasificador probabil´ıstico basado en el teorema de Bayes con supuestos de independencia entre datos.

La siguiente ecuaci´on corresponde al teorema de Bayes. Definimos “Class” como la clase que estamos analizando y “Data” como datos de entrada u observaci´on.

P(Class|Data) = P(Class)∗P(Data|Class) P(Data)

En t´erminos simples, Naive Bayes asume que no existe relaci´on entre las caracteristicas utilizadas para el aprendizaje. Por ejemplo, se puede clasificar como una manzana una fruta que sea roja, redonda y con diametro aproxima-do de 10 cm4. Mas all´a de que estas caracter´ısticas dependan o no de otras, Naive Bayes asume que todas influyen independientemente a la probabilidad de que realmente es una manzana.

Para otros modelos de probabilidad, los clasificadores de Bayes se pueden entrenar de manera muy eficiente en un entorno de aprendizaje supervisa-do. En muchas aplicaciones pr´acticas, la estimaci´on de par´ametros para los modelos Bayes utiliza el m´etodo de m´axima verosimilitud, es decir, se pue-de trabajar con el mopue-delo pue-de Bayes sin aceptar probabilidad bayesiana o cualquiera de los m´etodos bayesianos.

Una ventaja del clasificador de Bayes es que solo se requiere una peque˜na cantidad de datos de entrenamiento para estimar los par´ametros (las medias

(26)

y las varianzas de las variables) necesarias para la clasificaci´on. Como se asume que las variables son independientes, solamente es necesario calcular las varianzas de las variables de cada clase y no toda la matriz de covarianza. El clasificador de Bayes es r´apido e incremental y puede trabajar con atri-butos discretos y continuos. Tiene una performance excelente en problemas de la vida real y puede explicar sus decisiones como la suma de las ganancias de informaci´on. Por otra parte puede presentar un bajo rendimiento cuando se presenten fuertes dependencias entre las caracter´ısticas.

2.2.2.4. K-Nearest Neighbors (KNN)

El m´etodo KNN (K vecinos m´as cercanos) es usado para tareas de ta-reas de clasificaci´on de datos. M´as espec´ıficamente, KNN es un m´etodo de vecindad basado en casos o instancias. Se asume que el conjunto completo de entrenamiento incluye no s´olo los datos sino tambi´en la clasificaci´on deseada. Los datos de entrenamiento son entonces el modelo [11].

Funcionamiento del Algoritmo Primero se definen los modelos presen-tes en el espacio soluci´on del algoritmo y un valor resultado.

Figura 2.4: Esquema conceptual del algoritmo KNN5

En la figura 2.4 se puede observar un ejemplo de c´omo quedar´ıa un espacio de relaci´on dentro del algoritmo. Cada figura representa a un modelo y su forma y color representa el tema principal. Para realizar una deducci´on se debe definir un K. Este K representa a la cantidad de vecinos que se tendr´an en cuenta para realizar la clasificaci´on.

(27)

Tomando el ejemplo anterior, si se toma un K=2, la clasificaci´on dar´a que es un tri´angulo ya que los dos vecinos mas cercanos son de ´este tipo. Con un K=5 al distinguirse que los vecinos son 2 tri´angulos rojos y 3 cuadrados azules toma la clase del mayor, osea el punto clasifica en cuadrado azul6.

Para la clasificaci´on con KNN, el punto desconocido es asignado a la clase mas com´un de los K vecinos mas cercanos. KNN pierde precisi´on si se utilizan datos ruidosos o con atributos que no aportan informaci´on. Si k es demasiado peque˜no, entonces el resultado es muy sensible a puntos ruidosos. Por otro lado si k es demasiado grande, la vecindad del punto desconocido incluir´a muchos puntos de otras clases lejanas. Es interesante valorar los vecinos con la distancia que lo separa del punto desconocido. La formula que determina el peso seg´un su distancia es la siguiente:

y=

k X

i=1

wi∗yi, con wi =

1 d(xtest, xi)2

La elecci´on de la m´etrica de la distancia es cr´ıtica para el rendimiento del algoritmo. La siguiente formula determina la distancia entre dos veci-nos(distancia euclidiana):

D(X1, X2) = v u u t n X i=1

(X1i−X2i)2

2.2.2.5. M´aquina de vector de soporte (SVM)

Las m´aquinas de vectores soporte (SVM, del ingl´es Support Vector Ma-chines) aunque originariamente fueron pensadas para resolver problemas de clasificaci´on binaria, actualmente se utilizan para resolver otros tipos de pro-blemas (regresi´on, agrupamiento, multiclasificaci´on).

Son diversos los campos en los que han sido utilizadas con ´exito, tales como visi´on artificial, reconocimiento de caracteres, categorizaci´on de texto e hipertexto, clasificaci´on de prote´ınas, procesamiento de lenguaje natural, an´alisis de series temporales, etc. De hecho, desde su introducci´on, han ido

(28)

ganando un merecido reconocimiento gracias a sus s´olidos fundamentos te´ ori-cos [12].

Los SVM forman parte de los clasificadores lineales ya que utilizan se-paradores lineales o hiperplanos en espacios de caracter´ısticas de muy alta dimensionalidad (introducidos por funciones n´ucleo o kernel) con un sesgo inductivo muy particular. Derivan de la Teor´ıa del aprendizaje estad´ıstico, seg´un la cual un sistema con aprendizaje debe, a partir de un conjunto de informaci´on acerca de un proceso computacional, construir un modelo que permita predecir nuevos fen´omenos asociados a ´el [13]. De manera general para clasificaci´on, las M´aquinas de Vectores de Soporte buscan un hiperplano que separe de forma ´optima los puntos de una clase de la otra, osea buscan el hiperplano en que la distancia con los puntos pr´oximos sea m´axima.

Anal´ıticamente, se toma la distancia que existe entre la l´ınea y el primer punto interceptado (en direcci´on perpendicular), si se ubica una “zona de-sierta” alrededor de la l´ınea, ning´un punto ubicado en dicha zona puede ser clasificado ya que se encuentra demasiado cerca de la l´ınea. El radio m´ axi-mo que puede tener esta regi´on es llamado margen, se˜nalado como M y los puntos de cada clase m´as cercanos a la l´ınea de clasificaci´on se denominan vectores de soporte.

Desde un punto de vista pr´actico, el hiperplano separador con este margen ha demostrado tener una buena capacidad de generalizaci´on, evitando en gran medida el problema del sobreajuste a los ejemplos de entrenamiento.

Las funciones kernel, tambi´en conocidas como n´ucleo, realizan la sepa-raci´on y traslado de las muestras a un espacio de caracter´ısticas de mayor dimensi´on, el cual aumenta la capacidad computacional de la m´aquinas de aprendizaje lineal, como se muestra en la figura 2.5.

En la figura 2.6 se puede ver un ejemplo del funcionamiento de SVM, en el que se obtiene un buen comportamiento predictor de las diferentes clases clasificadas.

(29)

Figura 2.5: Ejemplo de las funciones kernel

Figura 2.6: Esquema del funcionamiento de SVM7

1. Oneagainstone (1A1). Se crean k(k1)/2 modelos donde k es el n´umero de categor´ıas. En esta categor´ıa el clasificador es entrenado entre cada par de clases.

2. Oneagainstall (1AA). Consiste en dividir cada categor´ıa en otras y com-binarlas todas. En esta aproximaci´on se entrena un clasificador entre una clase y las k1 otras clases (donde k es el n´umero total de clases). Cada discriminante k representa la decisi´on de que k pertenezca o no a esa clase.

Funciones de p´erdida

(30)

En las clasificaciones mediante SVM el margen que separa las clases de puntos, mientras mas grande sea mayor es la seguridad que el hiperplano de separaci´on es bueno.

En la regresi´on se utiliza ε -insensible lineal: El similar de lo que ser´ıa para clasificaci´on, el margen es la formaci´on de una banda o tubo alrededor de la verdadera funci´on de regresi´on.

La funci´on de p´erdida ignora los errores asociados con los puntos que caen dentro de una banda que est´a a una cierta distancia de la funci´on de regresi´on lineal. Es decir, si el punto verifica|y−f(x)| ≤εla funci´on p´erdida deber´a anularse.

La principal raz´on para elegir este tipo de funciones es la de permitir cierta dispersi´on en la funci´on soluci´on, de tal forma que todos los ejemplos que caen en la regi´on tubo definida por ±ε no ser´an considerados vectores soporte.

2.2.2.6. Series de tiempo

Una serie temporal o cronol´ogica es una secuencia observaciones o valores, medidos en periodos regulares de tiempo. Los datos pueden estar espaciados en periodos iguales (como la temperatura en de una ciudad cada hora) o desiguales (como el peso de una persona en mediciones peri´odicas en consul-torio o la farmacia). Los diferentes m´etodos que se utilizan para analizar las series temporales ayudan a extraer las relaciones entre los datos, y as´ı poder calcular uno o varios valores futuros y desconocidos, utilizando informaci´on contenida en dicha se˜nal y/o contenida en otras variables externas.

Componentes Uno de los usos m´as habituales de las series de datos tem-porales es su an´alisis para predicci´on y pron´ostico (as´ı se hace por ejemplo con los datos clim´aticos, las acciones de bolsa, o las series de datos demogr´aficos). Las series temporales se estudian en ingenier´ıa, econom´ıa, finanzas y ciencias sociales [14].

(31)

1. Tendencia. Indica el incremento o decremento a largo plazo de los datos Por ejemplo, la tendencia creciente del ´ındice ventas de inmobiliario. 2. Estacionalidad. Indica los patrones repetitivos con un per´ıodo definido.

Ejemplo: en un a˜no(las estaciones), una semana(los fines de semana), o en un d´ıa(horas picos o horario nocturno). Obteniendo las variaciones que se producen en esos per´ıodos de repetici´on.

3. Ciclicidad. Indica los cambios c´ıclicos sin un periodo definido, puede ser superior a un a˜no. No se puede identificar un periodo claro para esta variabilidad, usualmente es de plazo m´as largo que las de estacio-nalidad.

4. Residuo. Fluctuaciones irregulares e impredecibles. Debidos por ejem-plo a crisis financieras, fen´omenos como tormentas, terremotos, inun-daciones, huelgas, guerras, avances tecnol´ogicos, etc.

2.2.2.7. Redes Neuronales Recurrentes (LSTM)

Las Redes Neuronales son un campo muy importante dentro de la Inte-ligencia Artificial. Inspir´andose en el comportamiento conocido del cerebro humano, principalmente el referido a las neuronas y sus conexiones, trata de crear modelos artificiales que solucionen problemas dif´ıciles de resolver mediante t´ecnicas algor´ıtmicas convencionales.

Los seres humanos no empezamos a pensar desde cero a cada segundo. Por ejemplo, mientras leemos, entendemos cada palabra bas´andonos en el contexto que forman las palabras previas. No desperdiciamos las ideas ante-riores, sino que estas tienen persistencia en la memoria.

(32)

principal caracterıstica es que son redes con bucles, que permiten que la informaci´on persista.

Figura 2.7: Ejemplo b´asico de red neuronal recurrente8

En el diagrama 2.7, se observa c´omo una parte de la red neuronal, “A”, recibe una entrada “x” y devuelve una salida “h”. El bucle permite que la informaci´on pase de un ciclo de la red al siguiente. Pese a que el concepto de bucle parezca algo extra˜no, las redes neuronales que cuentan con ellos no son tan distantes de la redes neuronales tradicionales.

Una red neuronal recurrente puede ser creada utilizando m´ultiples copias de la misma red, pasando el mensaje o salida al nodo sucesor. Si desenrolla-mos el bucle, tendr´ıadesenrolla-mos algo parecido a la figura 2.8.

Figura 2.8: Red neuronal recurrente desenrollada9

Esta forma de cadena hace prever que las redes neuronales recurrentes est´an ´ıntimamente relacionadas con secuencias y listas. En este proyecto, dado sus propiedades, se aplic´o para la predicci´on en series de tiempo, ya que al poder mantener una memoria de estados anteriores es ideal para este tipo de predicciones.

(33)

Long Short Term Memory (LSTM)

Son un tipo especial de redes neuronales recurrentes, capaces de aprender una larga lista de dependencias en largos per´ıodos de tiempo.

Todas las redes neuronales recurrentes tienen forma de cadena al repetir sus m´odulos. En las RNN est´andar, el m´odulo repetidor tiene una estructura muy simple, con una sola capa, c´omo podr´ıa ser la de tipo “tanh”. Las redes LSTM tambi´en tienen forma de cadena, pero el m´odulo repetidor en vez de tener una sola capa, tiene cuatro (figura 2.9).

Figura 2.9: Estructura del m´odulo repetidor10

Figura 2.10: Notaci´on del m´odulo repetidor11

La clave de las redes LSTMs se encuentra en el estado de la celda, es decir, en la linea horizontal que recorre la parte superior del diagrama 2.8, ya que permite a la informaci´on fluir por toda la red con s´olo algunas peque˜nas interacciones, sin ser a penas alterada. La red tambi´en tiene la habilidad de borrar o a˜nadir informaci´on al estado de la celda mediante estructuras llamadas puertas. Estas puertas son una manera de permitir opcionalmente a la informaci´on circular o no, y se componen de una capa “sigmoide” y una

(34)

operaci´on de multiplicaci´on. Las salidas de la capa “sigmoide” alternan entre 0 y 1, describiendo si la informaci´on fluye o no. Una red LSTM tiene 3 de estas puertas, para proteger y controlar el estado de la celda.

Las redes neuronales LSTM siguen una serie de pasos para decidir qu´e informaci´on se va a ir almacenando o borrando. Podemos destacar los si-guientes:

1. Decidir qu´e informaci´on despreciar. Esta decisi´on la toma la capa “sig-moide”, que devuelve una salida igual a 1 si se busca mantener la informaci´on, o 0 si queremos deshacernos de ella. Por ejemplo se tiene un Lenguaje, donde se quiere predecir una palabra bas´andose en las anteriores, el estado de la celda puede almacenar el g´enero del sujeto para usar los pronombres adecuados. Cuando nos encontremos un nue-vo sujeto, olvidaremos el genero del anterior ya que no ser´a de utilidad. 2. Decidir qu´e informaci´on se va a almacenar. Consta de dos partes: prime-ro, una capa “sigmoide” decide qu´e valores son actualizados. Despu´es, una capa “tanh” crea un vector con los nuevos valores candidatos que pueden ser a˜nadidos al estado. En el ejemplo anterior, se decidir´ıa que queremos a˜nadir el g´enero del nuevo sujeto al estado de la celda, para reemplazar el viejo que queremos olvidar.

3. Actualizar el estado de la celda. En el paso anterior se decide qu´e hacer, y ahora toca hacerlo. Se multiplica el viejo estado por la salida de la capa “sigmoide” del primer paso, olvidando as´ı las cosas que se decidieron olvidar. A esto, se le suma el producto de la salida de la capa “sigmoide” y de la capa “tanh” del segundo paso. Con ello, se consiguen saber los nuevos valores candidatos, escalados seg´un la decisi´on de actualizar el estado de la celda. En el caso de modelado de lenguaje, ahora es cuando se desecha la informaci´on sobre el g´enero del viejo sujeto y se a˜nade la nueva informaci´on, como se decidi´o en los pasos anteriores.

(35)

filtrada. Primero, mediante una capa “sigmoide”, se decide qu´e partes del nuevo estado de la celda se van a sacar como salida. Despu´es, se pasa el estado de la celda por una capa “tanh” para tener valores entre -1 y 1, y se multiplica por la salida de la capa “sigmoide” para sacar solo las partes que se decidan. En el ejemplo de modelado de lenguaje, una vez que se encuentre el nuevo sujeto, se sacar´a informaci´on acerca de ´el, como puede ser si ´este es singular o plural, para despu´es poder conjugar correctamente el verbo que le sigue.

2.3.

Evaluaci´

on de Modelos

Una vez entrenado un modelo de predicci´on, la evaluaci´on del mismo es importante para medir el nivel de acierto de las predicciones. Esta evaluaci´on consiste en probar el modelo con un conjunto de datos de prueba y medir el error u otras m´etricas sobre los resultados. Estas m´etrica de evaluaci´on per-mite comparar el desempe˜no de modelos entrenados con diferentes t´ecnicas, y conjunto de datos.

Existen distintas formas para llevar a cabo esta evaluaci´on. La mas simple consiste en usar como datos de prueba el mismo conjunto de datos utilizado para el entrenamiento de los modelos. Otro m´etodo consiste en separar los datos del problema entre datos de entrenamiento y datos de prueba. Por ultimo, tambi´en se puede validar el modelo de forma cruzada.

2.3.1.

La validaci´

on cruzada (cross-validation)

(36)

proce-so se repite diez veces y se calcula el promedio de las m´etricas de evaluaci´on. Esto ayuda a determinar el nivel al que un modelo se podr´ıa generalizar para nuevos conjuntos de datos.

2.3.2.

etricas

El presente trabajo contempla las siguientes m´etricas de evaluaci´on para los diferentes modelos:

CC (Coeficiente de correlaci´on de Pearson): el coeficiente de correlaci´on de Pearson es un ´ındice que puede utilizarse para medir el grado de relaci´on de dos variables siempre y cuando ambas sean cuantitativas. En el presente trabajo se considera la correlaci´on entre las variables del dataset con respecto a la propiedad a predecir.

RMSE (Root MeanAbsolute Error): el Root MeanAbsolute Error (RM-SE) representa la ra´ız cuadr´atica del promedio de la distancia eucl´ıdea entre el valor de la propiedad obtenida por la t´ecnica y el valor real.

2.3.3.

Ajuste del modelo: Overfitting y Underfitting

Cuando se genera (o entrena) un modelo de predicci´on, su desempe˜no es incierto hasta su evaluaci´on o aplicaci´on. En algunos casos, la calidad del modelo es pobre generando respuestas imprecisas, de modo tal que se le deben aplicar acciones correctivas analizando c´omo se comporta y ajusta el modelo.

Los modelos pueden presentar dos problemas indeseables: overfitting y underfitting. El overfitting describe una funci´on que se ajusta estrechamen-te a los datos de entrenamiento. Es decir el modelo aprendi´o los detalles y el ruido en los datos impactando negativamente en el desempe˜no del mode-lo. Este efecto es causado porque el ruido o las variaciones en los datos de entrada fueron usados para el aprendizaje.

(37)

gene-ralizaci´on de nuevos datos ser´a imprecisa. Este efecto es causado porque la funci´on o t´ecnica elegida no es el indicado para representar el comportamien-to de los dacomportamien-tos. El efeccomportamien-to underfitting se caracteriza por sobre-generalizar los datos. Incorporar nuevos datos al conjunto de entrenamiento podr´ıa solucio-nar o mitigar este efecto.

En conclusi´on el modelo que se busca ser´ıa aquel que se encuentre en un punto de equilibrio entre un problema y otro, aunque este equilibrio es muy dif´ıcil de alcanzar en la pr´actica. La Figura 2.11 presenta tres modelos de re-gresi´on para un mismo grupo de datos que permiten interpretar gr´aficamente los problemas de underfitting y overfitting.

Figura 2.11: Efectos del modelo sobre los datos de entrenamiento. 12

(38)

Cap´ıtulo 3

Trabajos Relacionados

3.1.

Librer´ıas y Aplicaciones Utilizadas

El desarrollo de este trabajo se realiz´o sobre archivos Logs provistos por la Universidad de Cambridge, generados a partir de un trabajo llamado Device Analyzer1, realizado con el fin de recolectar datos acerca de lo que est´a suce-diendo en el tel´efono mediante su uso con el fin de obtener estad´ısticas sobre los mismos. Estos Logs fueron generados por personas que se ofrecieron como voluntario para este estudio. As´ı mismo se utiliz´o las librer´ıas scikit-learn2 y Keras3.

3.1.1.

Device Analyzer

Device Analyzer recopila estad´ısticas de uso en segundo plano mientras se usa el tel´efono.

Estos datos se eliminan de la informaci´on de identificaci´on personal de la mejor manera posible al tiempo que se preserva la informaci´on ´util. Pe-ri´odicamente, los datos grabados se cargan en el servidor de la Universidad de Cambridge, donde se agregan a los datos de otras personas y se deducen

1http://deviceanalyzer.cl.cam.ac.uk/ 2http://scikit-learn.org

3https://keras.io/

(39)

inferencias de los patrones que surgen. Actualmente el proyecto cuenta con 31294 contribuidores, los cuales pueden recibir la informaci´on sobre los es-tudios realizados sobre sus tel´efonos. Estos resultados pueden ayudar a los usuarios a ver ciertas estad´ısticas de las cuales no se dan cuenta, como por ejemplo, las llamadas perdidas que suelen tener, los mensajes que mandan por d´ıa. Adem´as captura datos como por ejemplo, cuando enciende el WiFi, cuando utiliza los datos m´oviles, cuando enciende o apaga el bluetooth. Toda esta informaci´on es totalmente necesaria para este estudio y es la principal base para la realizaci´on del mismo. En pr´oximos cap´ıtulos se ver´a como se transforman estos datos a un formato que sirva como entrada a las librer´ıas utilizadas para procesar los mismos y analizar los resultados.

3.1.2.

Scikit-learn

Scikit-learn es una biblioteca de aprendizaje de m´aquina de software libre para el lenguaje de programaci´on de Python [9]. Cuenta con varios algoritmos de clasificaci´on, regresi´on y agrupaci´on, incluyendo m´aquinas de vectores de soporte, bosques aleatorios, aumento de gradiente, k-means y DBSCAN, y est´a dise˜nado para interoperar con las bibliotecas num´ericas y cient´ıficas de Python, NumPy y SciPy.

El proyecto scikit-learn comenz´o como scikits.learn, un proyecto Google Summer of Code de David Cournapeau. Su nombre proviene de la idea de que es un ”SciKit”(SciPy Toolkit), una extensi´on de terceros desarrollada por separado y distribuida para SciPy. La base de c´odigo original fue pos-teriormente reescrita por otros desarrolladores. En 2010, Fabian Pedregosa, Gael Varoquaux, Alexandre Gramfort y Vincent Michel, todos de INRIA to-maron el liderazgo del proyecto e hicieron su primer lanzamiento p´ublico el 1 de febrero de 2010.

3.1.3.

Keras

(40)

Theano o MXNet. Dise˜nado para permitir una r´apida experimentaci´on con redes neuronales profundas, se enfoca en ser f´acil de usar, modular y exten-sible. Fue desarrollado como parte del esfuerzo de investigaci´on del proyec-to ONEIROS (Sistema Operativo de Robot Inteligente Neuroelectr´onico de c´odigo abierto), y su principal autor y mantenedor es Fran¸cois Chollet.

En 2017, el equipo TensorFlow de Google decidi´o apoyar a Keras en la biblioteca principal de TensorFlow. Chollet explic´o que Keras fue concebido como una interfaz en lugar de un marco de aprendizaje autom´atico indepen-diente [10]. Ofrece un conjunto de abstracciones de nivel m´as alto e intuitivo que facilita el desarrollo de modelos de aprendizaje profundo independiente-mente del backend computacional utilizado.

Keras contiene numerosas implementaciones de capas de construcci´on de redes neuronales de uso com´un, como funciones de activaci´on, optimizadores y un conjunto de herramientas para facilitar el trabajo con datos de im´agenes y de texto. Permite a los usuarios producir modelos profundos en tel´efonos inteligentes (iOS y Android), en la web o en la m´aquina virtual Java.

Tambi´en permite el uso de capacitaci´on distribuida de modelos de apren-dizaje profundo en grupos de unidades de procesamiento de gr´aficos (GPU).

3.1.4.

Trabajos Relacionados

(41)

3.1.4.1. Refactorizaciones para kernels computacionales

cient´ıfi-cos en dispositivos m´oviles

Ana Rodriguez [15] obtiene un conjunto de buenas pr´acticas que mini-mizan el consumo de bater´ıa. A su vez, se realiz´o una investigaci´on sobre el problema en el contexto de kernels computacionales en aplicaciones cient´ıfi-cas. A partir de una serie de micro-benchmarks se realizan evaluaciones so-bre la bater´ıa para distintas propuestas de refactorizaci´on o mejoras en el c´odigo Android y luego realizar el an´alisis en aplicaciones reales. Los micro-benchmarks se centraron en creaci´on de objetos, obtenci´on de datos, copia de arreglos, recorrido de matrices, manejo de Strings, operaciones aritm´eticas, manejo de excepciones, acceso a atributos y uso de tipo de datos primitivos. Los resultados que se obtuvieron indican, que se produjo una mejora de un 20 % para la copia de arreglos utilizando bibliotecas, un 116 % en el recorrido de matrices por fila y no por columna, 78023 % aproximadamente para el uso de la clase StringBuilder por sobre el uso de la clase String en la concatenaci´on convencional, esto se debe a que la clase String es inmutable y por lo tanto crea objetos cuando opera la concatenaci´on. Para los tipos de datos primitivos, int favorece el consumo de energ´ıa entre un 186 % y un 50 % por sobre otros tipos de datos con mayor precisi´on.

Por otro lado, el uso de excepciones degrada el consumo un 9471 % so-bre el no uso de las mismas. En cuanto al acceso de atributos, obtener una variable de forma directa es 696 % m´as eficiente que realizando un m´etodo para obtener esta variable, esto propone romper la encapsulaci´on de los ob-jetos. Finalmente para la creaci´on de objetos se obtuvo una mejora de 812 % reutilizando los mismos, aunque esto tambi´en depender´a del tipo de objeto reutilizado.

(42)

3.1.4.2. Usage Pattern Mining for Smartphone Use

Personaliza-tion

Este trabajo fue destinado principalmente a predecir futuras operaciones en el uso de los m´oviles con el fin de optimizar mejor los recursos con el fin de salvar la energ´ıa de la bater´ıa, para esto se captur´o informaci´on de personas que se ofrecieron como voluntarias para el estudio durante cuatro meses [16]. El estudio conllev´o a que se tengan que aplicar diferentes datos tales como aplicar algoritmos sobre el aceler´ometro del dispositivo y determinar si esta persona se movilizaba a pie, en auto o en realidad no se estaba desplazando, como as´ı tambi´en aplicar algoritmos sobre datos GPS y determinar diferentes puntos frecuentes del usuario, como puede ser su hogar o el trabajo.

La soluci´on propuesta fue crear una aplicaci´on que capture los eventos del dispositivo y aplicar reglas de miner´ıa para determinar los patrones de uso. Esta aplicaci´on esta constituida principalmente por un servicio que almace-na la informaci´on mediante la escuchando toda la actividad del dispositivo mediante Intents, unIntent es un objeto java que tiene informaci´on sobre la operaci´on que se va a ejecutar. Por otro lado ofrece una interfaz sencilla para poder realizar una m´ınima configuraci´on a la aplicaci´on.

Para poder determinar el resultado de las t´ecnicas aplicadas se separo el conjunto de datos en un 70 % de datos destinados como entrada de los algoritmos y el 30 % restante para testing, utilizado para intentar predecir estos datos reales.

(43)

3.1.4.3. Measuring mobile phone energy consumption for 802.11

wireless networking

Este estudio [17] hace hincapi´e en el costo de energ´ıa de distintos smartp-hones cuando estos se conectan a una red 802.11 y env´ıan mensajes a trav´es de la misma.

Se provee la obtenci´on del consumo de energ´ıa de las aplicaciones utilizan-do una plataforma de medici´on que permite ilustrar aspectos particulares del desarrollo m´ovil con una granularidad fina. Por ejemplo, el consumo energ´ eti-co del dispositivo m´ovil mientras intenta conectarse a una red inal´ambrica para obtener su direcci´on IP o el env´ıo de datos a trav´es de la red o el uso de buffers para el env´ıo de dichos datos.

Un resultado importante obtenido en esta investigaci´on se resume en que enviar un solo paquete con una gran cantidad de datos no favorece al consu-mo de energ´ıa para determinados smartphones seleccionados de las pruebas, como as´ı tambi´en una consideraci´on secundaria como la elecci´on del tama˜no de los buffers de env´ıo puede tener un gran impacto en el consumo energ´ eti-co. Se obtuvo en los resultados de los tests que los criterios para minimizar el consumo energ´etico var´ıan de acuerdo al dispositivo, sistema operativo y escenario particular.

No todos los smartphones seleccionados obtuvieron la misma conclusi´on. Por ejemplo, en el caso del tama˜no de los paquetes enviados, el smartphone Nexus se ve favorecido a medida que el tama˜no del paquete se incrementa, mientras que para el HTC G1 y otros, el resultado encontrado es exactamente el inverso. En el caso de la obtenci´on de conexi´on de red, la mayor´ıa de los dispositivos obtuvo una mejora estableciendo la direcci´on IP est´atica del dispositivo, aunque en el caso del Nexus esta fue m´ınima.

(44)

3.1.4.4. Analysis of Dierential Synchronisation’s Energy

Consum-ption on Mobile Devices

En este trabajo se eval´ua el consumo de bater´ıa del algoritmo de sin-cronizaci´on diferencial (disffync) en dispositivos m´oviles [18]. Las lecturas y escrituras sobre elementos compartidos es la principal esencia de la funcio-nalidad en software colaborativo como SVN o Google Docs. En consecuencia a las nuevas velocidades de Internet, cada vez m´as dispositivos m´oviles son capaces acceder a este tipo de software. En consecuencia, las aplicaciones en estos dispositivos deben tener en cuenta una caracter´ıstica esencial: el consumo de energ´ıa.

Este trabajo surge del uso real sobre la edici´on de documentos PDF de manera colaborativa, en donde el elemento compartido puede ser subraya-do, permite agregar notas o comentarios, etc, entre un grupo de usuarios y utiliza el algoritmo disffync funcionando en tiempo real. Bajo este esque-ma se detectaron tres ´areas en donde se pudo incrementar la eficiencia de energ´ıa: ciclos vac´ıos en los cuales ning´un cambio necesita ser procesado, la energ´ıa de la cola de env´ıo de datos (intervalos entre ciclos) y la complejidad computacional.

En el caso de los ciclos vac´ıos, ocurren cuando el algoritmo disffync se ejecuta en intervalos regulares en los cuales no se obtiene ning´un dato ac-tualizado, generando un desperdicio de energ´ıa. La energ´ıa de la cola hace referencia al tiempo en que las distintas conexiones permanecen activas una vez analizada una conexi´on a datos. Esto puede consumir cerca de un 60 % de la energ´ıa de una conexi´on a red haciendo que sea mas eficiente realizar una transferencia inmediatamente cuando termina la anterior o que el tama˜no del intervalo sea lo suficientemente mayor para no generar desperdicio de energ´ıa constantemente.

(45)

procesamiento de ´ıtem peque˜nos reduce la complejidad computacional, por lo tanto reduce el consumo de energ´ıa.

En las pruebas realizadas para mejorar los inconvenientes analizados se obtuvo una mejora general. Para los ciclos vac´ıos, se encontr´o que en un 96 % se produc´ıa este inconveniente, por lo que se opto por realizar una soluci´on Push la cual utiliza un promedio de 0.398 % de la bater´ıa contra 8.151 % en 7 minutos de la propuesta convencional y elimina los ciclos vac´ıos.

El impacto de la complejidad computacional se puede reducir con la co-rrecta elecci´on de la estructura de datos y para los problemas de energ´ıa desperdiciada luego del env´ıo de datos, se logr´o comprobar que para un ciclo jo, un intervalo de 6 segundos es el mas ´optimo para todos los tipos de redes (3G, GSM). De esta forma se logr´o detectar 3 tipos de inconvenientes en los algoritmos de sincronizaci´on diferencial en tiempo real, como as´ı tambi´en una soluci´on para cada uno de ellos y lograr una mejora en el consumo de energ´ıa en una futura implementaci´on del mismo.

3.1.4.5. An Automatic Detector of Energy Leaks for Smartphone

Applications (ADEL)

(46)

un seguimiento de cada tag y de su propagaci´on. De esta manera, la salida del sistema arroja una asociaci´on de los datos descargados que influyeron en el funcionamiento.

La herramienta proporciona a los desarrolladores el conocimiento de los tiempos de llegada y el contenido de paquetes, lo que permite observar los defectos de dise˜no que producen una perdida de energ´ıa. ADEL es una herra-mienta que detecta y a´ısla las fugas de energ´ıa resultantes de comunicaciones de red mediante el trazado directo o indirecto del uso efectivo de los datos recibidos.

Para las pruebas se utilizaron 15 apps de las cuales se detectaron 4 causas principales que generan las fugas de energ´ıa: mala interpretaci´on de callbacks en APIs, mal dise˜no en el esquema de descarga, descargas repetidas y fetching agresivo. Con el uso de la herramienta se logr´o identificar fugas de energ´ıa en 6 de las 15 aplicaciones y, la eliminaci´on de ´estas resultaron en una reducci´on media del 56,5 % en el consumo de energ´ıa debido a la red. Este estudio revela cuatro inconvenientes de fuga de energ´ıa que normalmente se pueden encontrar, ayudando a los desarrolladores a tener una mayor conciencia sobre ´

estos y a mejorar el dise˜no de las aplicaciones m´oviles para evitarlos.

3.1.4.6. An Investigation into Energy-Saving Programming

Prac-tices for Android Smartphone App Development

(47)

uso de memoria insuficiente puede causar un efecto no deseado y aumentar el consumo de energ´ıa, por lo que es necesario saber cual es la cantidad de memoria ideal. La tercer categor´ıa considera si los tips propuestos por el si-tio oficial de desarrolladores de Android mejoran los tiempos de ejecuci´on tambi´en favorecen el consumo de energ´ıa. Luego de realizar los test se logro llegar a las siguientes conclusiones:

En cuanto el uso de los Request, el uso de peticiones peque˜nas puede ayudar a mejorar el consumo de energ´ıa. Un tama˜no de paquete que ronda los 100 bytes consume 0.6 mAh, mientras que paquetes de mas de 2000 bytes tienden a 1 mAh. Si es necesario hacer varias solicitudes HTTP peque˜nas, los desarrolladores deben tratar de dise˜nar sus aplicaciones o protocolos para que estas puedan ser agrupadas en una solicitud m´as grande para ahorrar bater´ıa.

Los resultados del experimento de memoria determinan que a pesar de que es un componente importante que se debe manejar con cuidado y que los desarrolladores deben evitar la asignaci´on innecesaria memoria, no tiene un gasto de energ´ıa tan importante como se pensaba. Mayor uso de memoria aumenta s´olo ligeramente la energ´ıa media del consumo de cada acceso. Para analizar la tercer categor´ıa, se analiz´o el acceso a campos, la invocaci´on de m´etodos y acceso a el tama˜no de arreglos en ciclos. Para estas tres propuestas se obtuvo una mejora entre un 30 % y 35 % para acceso a datos, un 15 % para invocaci´on , y finalmente 10 % respectivamente. Demostrando de esta forma que los desarrolladores pueden mejorar el consumo de sus aplicaciones teniendo presente estas caracter´ısticas al desarrollar.

3.1.4.7. eDoctor: Automatically Diagnosing Abnormal Battery Drain

Issues on Smartphones

(48)

se traduce en el uso normal del dispositivo pero, en un determinado punto e inesperadamente, el dispositivo comienza a consumir mayor energ´ıa de lo usual y como resultado en un par de horas la bater´ıa puede verse agotada por completo.

La herramienta utiliza el concepto de ejecuci´on por fases para capturar el comportamiento de una aplicaci´on variable en el tiempo, que luego se pue-de utilizar para ipue-dentificar una aplicaci´on anormal. eDoctor tambi´en registra eventos tales como la instalaci´on, las actualizaciones de aplicaciones, cambios de configuraci´on, etc. Aqu´ı es critico diferenciar el uso normal del anormal, por lo que la ejecuci´on de una aplicaci´on se divide en intervalos de ejecuci´on que luego se agrupan en fases. Cuando una aplicaci´on empieza a consumir energ´ıa de una manera anormal , su comportamiento por lo general se mani-fiesta como una nueva o mayor cantidad de fases que no aparecen durante la ejecuci´on normal. La combinaci´on de dicha informaci´on de fase junto con los eventos relevante, tales como un cambio de configuraci´on, pueden identificar la aplicaci´on culpable. Esta informaci´on es utilizada para determinar si la aplicaci´on ha tenido o no un comportamiento inesperado y para sugerir la mejor soluci´on posible. A su vez, en este trabajo, tambi´en se hizo una medi-ci´on de cuanto es el costo de tener una herramienta como esta ejecutando en el smartphone.

(49)

en la mayor´ıa de los casos.

3.1.5.

Conclusiones

Todos y cada uno de los trabajos citados anteriormente intentan obtener una mejora en el consumo de energ´ıa desde el lado del programador. Ma-yormente estas mejoras se aplican a nivel de c´odigo de la aplicaci´on y de tener conciencia a la hora de dise˜nar la misma. Mas all´a de las diferencias, el prop´osito del presente trabajo tambi´en es la de estudiar el consumo de bater´ıa y los patrones involucrados en el uso de los dispositivos.

(50)

Cap´ıtulo 4

Enfoque e Implementaci´

on

En este cap´ıtulo se describe el enfoque propuesto para predecir patrones de uso sobre dispositivos m´oviles. El enfoque plantea llevar a cabo la pre-dicci´on mediante un proceso de aprendizaje de m´aquina que involucra dos pasos: transformaci´on de datos y aprendizaje.

El primero implica la transformaci´on de informaci´on, esto significa, pro-cesar todos los datos de entradas provistos por la Universidad de Cambridge y transformarlos en archivos que sirvan como entrada a los algoritmos utili-zados en este trabajo, para ellos se realiz´o un estudio sobre estas librer´ıas, y se evalu´o la forma mas eficiente y extensible de realizar este m´odulo.

El segundo m´odulo implica la construcci´on de modelos de predicci´on con t´ecnicas de regresi´on, clasificaci´on y redes neuronales. La construcci´on o en-trenamiento de estos modelos se hace en un proceso interactivo con el usuario, que involucra una configuraci´on inicial de los datos, la elecci´on y ejecuci´on de los diferentes algoritmos, los resultados arrojados por ´estos (m´etricas y configuraciones iniciales) y la opci´on de realizar pruebas particulares sobre el modelo entrenado.

Para facilitar la interacci´on con el usuario se implement´o una herramienta web, si bien ´esta excede el alcance del estudio de este trabajo ya que solo provee una interfaz para que el usuario pueda configurar tanto los datos de entrada como el algoritmo escogido para una prueba determinada, aporta de forma visual las diferentes m´etricas arrojadas con gr´aficos e informaci´on

(51)

relevante con el objetivo de analizar los resultados y elaborar las conclusiones.

4.1.

Modulo transformador de datos

Como se menciono anteriormente este modulo sera el encargado de tra-ducir los logs ofrecidos por el trabajo de Device Analyzer a un formato de entrada que pueda ser reconocido por los algoritmos de las librer´ıas utiliza-da en el presente trabajo. El proyecto Device Analyzer genera un enorme archivo en formato CSV (comma-separated values). Los archivos CSV son un tipo de documento en formato abierto sencillo para representar datos en forma de tabla, en las que las columnas se separan por comas o punto y coma donde el separador decimal es una coma. El formato CSV es muy sencillo y no indica un juego de caracteres concreto, ni c´omo van situados los bytes, ni el formato para el salto de l´ınea. Estos puntos deben indicarse muchas veces al abrir el archivo, por ejemplo, con una hoja de c´alculo. Con el siguiente ejemplo podemos ver como se representa la siguiente tabla con el archivo en texto plano, separando sus valores por comas. En la tabla 4.1 podemos ver un listado de tel´efonos celulares, en donde tenemos informaci´on sobre la marca, el modelo, el tama˜no de la pantalla y el precio.

Marca Modelo Pantalla Precio Motorola G4 5.5’ 3000.00 Motorola G4 Plus 5.5’ 4900.00 Motorola G5 5.0’ 5000.00 Samsung S6 5.5’ 4799.00 Tabla 4.1: Tabla ejemplo de archivo CSV

A continuacion podemos observar el equivalente de la tabla 4.1 en formato

CSV.

Marca , Modelo , P a n t a l l a , P r e c i o

(52)

Motorola , G4 Plus , 5 . 5 ’ , 4 9 0 0 . 0 0

Motorola , G5 , 5 . 5 ’ , 5 0 0 0 . 0 0

Samsung , S6 , 5 . 5 ’ , 4 7 9 9 . 0 0

Una vez ilustrado este ejemplo y entendido como es el formato de archi-vos CSV vamos a describir brevemente como est´an compuestos los archivos entregados para la realizaci´on de este trabajo, con esto describiremos las columnas y la informaci´on que va a tener cada una.

4.1.1.

Estructura de los Logs

Los logs provistos para el trabajo son archivos de entre aproximadamente 12 a 27 gigabytes de texto plano en formatoCSV, es decir como se menciono anteriormente se puede leer como una tabla.

Las primeras dos columnas contienen datos sobre los IDs se los datos cap-turados, de los cuales podemos prescindir ya que no aportan ning´un dato ´util para este trabajo, el segundo valor de la tabla es untimestamp del momento que se capturo ese dato, un timestamp es una secuencia de caracteres que denotan la hora y fecha (o alguna de ellas) en la que ocurri´o determinado evento. Esta informaci´on suele presentarse en un formato consistente, lo que permite la f´acil comparaci´on entre dos diferentes registros y el seguimiento de avances en el tiempo. Por ejemplo:

2015−04−08T02 : 4 3 : 4 1 . 7 9 6 + 0 1 0 0

El anterior timestamp denota que ese dato se captur´o un 8 de abril de 2015 a las 2 horas 43 minutos y 41 segundos con 796 mil´esimos en una franja horaria a mas una hora del meridiano de Greenwich, esta informaci´on si es muy importante y posteriormente se describir´a como sera su transformaci´on en los archivos que servir´an como entrada para el modulo de predicci´on de datos.

Referencias

Documento similar

La campaña ha consistido en la revisión del etiquetado e instrucciones de uso de todos los ter- mómetros digitales comunicados, así como de la documentación técnica adicional de

"No porque las dos, que vinieron de Valencia, no merecieran ese favor, pues eran entrambas de tan grande espíritu […] La razón porque no vió Coronas para ellas, sería

No había pasado un día desde mi solemne entrada cuando, para que el recuerdo me sirviera de advertencia, alguien se encargó de decirme que sobre aquellas losas habían rodado

Abstract: This paper reviews the dialogue and controversies between the paratexts of a corpus of collections of short novels –and romances– publi- shed from 1624 to 1637:

por unidad de tiempo (throughput) en estado estacionario de las transiciones.. de una red de Petri

Por lo tanto, en base a su perfil de eficacia y seguridad, ofatumumab debe considerarse una alternativa de tratamiento para pacientes con EMRR o EMSP con enfermedad activa

The part I assessment is coordinated involving all MSCs and led by the RMS who prepares a draft assessment report, sends the request for information (RFI) with considerations,

La Ley 20/2021 señala con carácter imperativo los procesos de selección. Para los procesos de estabilización del art. 2 opta directamente por el concurso-oposición y por determinar