Universidad Nacional del Centro la Provincia de Buenos ...
Transcript of Universidad Nacional del Centro la Provincia de Buenos ...
Universidad Nacional del Centro la Provincia de Buenos Aires.
Facultad de Ciencias Exactas
Analisis de Tecnicas para predecir patrones de uso de los
dispositivos moviles.
Trabajo final de carrera presentado como requisito parcial para optar por el
tıtulo de Ingeniero de Sistemas.
Francisco Nicolas Leguizamon
Jose Martın Lopez
Director: Dr. Juan Manuel Rodriguez.
Director: Prof. Dr. Alejandro Zunino
Resumen
La utilizacion de dispositivos moviles a lo largo de los anos esta creciendo
cada vez de forma mas sostenida por la constante demanda de sus usuarios de
realizar a traves 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 mas potente para satisfacerlas. Es decir, camaras
con mas definicion, pantallas mas grandes, incremento de la velocidad tactil,
entre otras, asimilando cada vez mas a pequenas y potentes computadoras
de bolsillo.
Todo esto hace que caracterısticas de los dispositivos moviles. 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 solo 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 motivacion de este trabajo
que es lograr en base a sus estados pasados de datos proporcionados por
usuarios sobre el uso habitual del Movil, lograr predecir estados futuros y
brindar algun tipo de ayuda sobre como 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 aplicacion de tecni-
cas de aprendizaje de maquina construir modelos predictivos para estimar
el desempeno futuro de un servicio en base a mediciones previas de las pro-
piedades del mismo. Se proponen dos herramientas para asistir la aplicacion
del enfoque. Una de ellas facilita el modelado de datos proporcionados por
sensores propios del Movil, como caracterısticas de wifi, porcentaje de brillo
1
2
de pantalla, uso de memoria, baterıa, entre otros. La segunda herramien-
ta permite utilizar diferentes Modelos de aprendizaje de Maquina sobre los
conjuntos de datos generados. Ası, se logra construir modelos predictivos y
obtener metricas sobre alguna propiedad de interes de alguna caracterıstica
especıfica.
Posterior al desarrollo de la misma se realizaron diversas pruebas bajo
diferentes conjuntos de datos como de diferentes configuraciones de los mo-
delos de aprendizaje propuestos para el analisis de la mejor opcion para los
datos. El objetivo de esto fue analizar los resultados obtenidos luego del en-
trenamiento de cada uno de los Modelos en cuestion, para luego tomar las
metricas generadas y exponer las comparaciones sobre otras configuraciones,
otro conjunto de datos, entre otros aspectos, para ayudar al usuario a tomar
decisiones en la eleccion. Tambien se mencionan las posibles futuras aplicacio-
nes y/o extensiones de este proyecto que generan un importante aporte a la
recomendacion de futuros posibles usos aprendidos de la tecnica presentada.
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
finalizacion de este trabajo sentimos que devolvemos una parte de ese apoyo
y tenemos la oportunidad de hacerlos sentir orgullosos.
3
Indice general
1. Introduccion 10
1.1. Motivacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.2. Objetivos y solucion propuesta . . . . . . . . . . . . . . . . . . 11
1.3. Organizacion . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2. Marco Teorico 14
2.1. Dispositivos Moviles . . . . . . . . . . . . . . . . . . . . . . . 14
2.1.1. Android . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.2. Aprendizaje de Maquina . . . . . . . . . . . . . . . . . . . . . 17
2.2.1. Clasificacion de tecnicas de aprendizaje . . . . . . . . . 19
2.2.2. Tecnicas Contempladas . . . . . . . . . . . . . . . . . . 20
2.2.2.1. Regresion Lineal . . . . . . . . . . . . . . . . 21
2.2.2.2. Regresion 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. Maquina 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. Evaluacion de Modelos . . . . . . . . . . . . . . . . . . . . . . 34
2.3.1. La validacion cruzada (cross-validation) . . . . . . . . . 34
2.3.2. Metricas . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.3.3. Ajuste del modelo: Overfitting y Underfitting . . . . . 35
4
INDICE GENERAL 5
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 moviles . . . . . 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 Implementacion 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. Patron Decorator . . . . . . . . . . . . . . . . . . . . . 55
4.1.4. Patron Decotator aplicado al problema . . . . . . . . . 57
4.2. Modulo de prediccion de datos . . . . . . . . . . . . . . . . . . 60
4.2.1. Implementacion Regresion Lineal . . . . . . . . . . . . 63
4.2.2. Implementacion Clasificacion . . . . . . . . . . . . . . 65
INDICE GENERAL 6
4.2.3. Implementacion Red Neuronal Recurrente . . . . . . . 65
4.2.4. Hiperparametros de los modelos . . . . . . . . . . . . . 70
4.2.5. Funciones de la Herramienta . . . . . . . . . . . . . . . 70
71
5. Evaluacion 76
5.1. Correlacion de los indicadores . . . . . . . . . . . . . . . . . . 76
5.2. Archivos contemplados para la evaluacion . . . . . . . . . . . 78
5.3. Pruebas realizadas para los Algoritmos de Clasificacion . . . . 80
5.4. Resultados de los Algoritmos de Regresion . . . . . . . . . . . 86
5.5. Resultados sobre Algoritmos de Redes Neuronales . . . . . . . 89
5.5.1. Introduccion . . . . . . . . . . . . . . . . . . . . . . . . 89
5.5.2. Configuracion con algoritmos de Regresion . . . . . . . 91
5.5.3. Configuracion con algoritmos de Clasificacion . . . . . 93
6. Conclusiones 96
6.1. Limitaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
6.2. Futuros trabajos . . . . . . . . . . . . . . . . . . . . . . . . . 99
Indice de figuras
2.1. Arquitectura sistema Android . . . . . . . . . . . . . . . . . . 16
2.2. Regresion lineal en dos dimensiones . . . . . . . . . . . . . . . 21
2.3. Curva Regresion 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 basico de red neuronal recurrente . . . . . . . . . . . 31
2.8. Red neuronal recurrente desenrollada . . . . . . . . . . . . . . 31
2.9. Estructura del modulo repetidor . . . . . . . . . . . . . . . . . 32
2.10. Notacion del modulo repetidor . . . . . . . . . . . . . . . . . . 32
2.11. Efectos del modelo sobre los datos de entrenamiento. . . . . . 36
4.1. Diagrama de clases del patron Decorator . . . . . . . . . . . . 55
4.2. Estructura de los objetos en memoria del patron 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 interaccion . . . . . . . . . . . . . . . . . . . . . . 63
4.7. Diagrama de Clases implementacion de Algoritmos . . . . . . 64
4.8. Carga y visualizacion de datos . . . . . . . . . . . . . . . . . . 71
4.9. Grafico sobre disposicion de los datos . . . . . . . . . . . . . . 72
4.10. Seleccion de Modelo . . . . . . . . . . . . . . . . . . . . . . . 72
4.11. Grafico resultado . . . . . . . . . . . . . . . . . . . . . . . . . 73
4.12. Metricas resultantes del entrenamiento . . . . . . . . . . . . . 74
7
INDICE DE FIGURAS 8
4.13. Prediccion interactiva . . . . . . . . . . . . . . . . . . . . . . . 75
5.1. Graficos de correlacion de los archivos tratados . . . . . . . . . 77
5.2. Correlacion promedio entre el porcentaje de baterıa y demas
indicadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
5.3. Tabla y grafico de los resultados cross validation para el algo-
ritmo KNN . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
5.4. Tabla y grafico de los resultados cross validation para el algo-
ritmo Naıve Bayes . . . . . . . . . . . . . . . . . . . . . . . . 85
5.5. Tabla y grafico de los resultados cross validation para el algo-
ritmo SVM . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
5.6. Tabla y grafico de los resultados cross validation para el algo-
ritmo de regresion logıstica . . . . . . . . . . . . . . . . . . . . 86
5.7. Tabla y grafico de los promedios de todos los archivos por
algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
5.8. Tabla y grafico de los errores medios del algoritmo de regresion
logıstica para cada archivo . . . . . . . . . . . . . . . . . . . . 88
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 perdidas . . . . . . . . . . . . . . . . . . . . . . 68
4.5. Algoritmos de optimizacion . . . . . . . . . . . . . . . . . . . 69
5.1. Correlacion entre el porcentaje de baterıa y demas indicadores.
Ordenados por correlacion promedio . . . . . . . . . . . . . . 79
5.2. Archivos utilizados . . . . . . . . . . . . . . . . . . . . . . . . 81
5.3. Tabla hiperparametros por defecto de los algoritmos . . . . . . 83
5.4. Tabla promedio de tiempos por algoritmos de Clasificacion . . 86
5.5. Correlacion de los 7 atributos contemplados para los algorit-
mos de LSTM. . . . . . . . . . . . . . . . . . . . . . . . . . . 89
5.6. Tabla de configuraciones utilizadas en LSTM para algoritmos
de regresion . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
5.7. Resultados para los algoritmos LSTM con configuraciones de
regrecion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
5.8. Tabla de configuraciones utilizadas en LSTM para algoritmos
de clasificacion . . . . . . . . . . . . . . . . . . . . . . . . . . 93
5.9. Resultados para los algoritmos LSTM con configuraciones de
clasificacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
5.10. Configuraciones teniendo en cuenta el optimizador sgd orde-
nadas por promedio de exactitud . . . . . . . . . . . . . . . . 95
9
Capıtulo 1
Introduccion
1.1. Motivacion
Los dispositivos moviles han evolucionado a partir de simples aparatos
telefonicos a computadoras pequenas con grandes capacidades computacio-
nales. Llegando a la estimacion que hay mas de 2 mil millones de dispositivos
moviles en todo el mundo [1].
Los dispositivos moviles son artefactos electronicos pequenos que se ali-
mentan a traves de una baterıa de litio. En este contexto, un Smartphone o
telefono inteligente es un dispositivo portatil que, ademas de poseer capaci-
dad de utilizar las redes telefonicas moviles, posee capacidades de computo y
almacenamiento que le permiten llevar a cabo otras tareas, como edicion de
emails, captura y procesamiento de imagenes, 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 telefono movil es un dispositivo inalambrico electronico uti-
lizado para acceder y utilizar los servicios de la red de telefonıa celular, el
termino inteligente hace referencia a la capacidad de usarlo tambien como
una computadora de bolsillo.
El uso de Smartphones crece cada vez de forma mas 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
10
CAPITULO 1. INTRODUCCION 11
servicio de mensajerıa instantanea, redes sociales, navegacion en internet,
etc [2]. Ası, las necesidades que se presentan hace que las companıas que
producen estos dispositivos disenen hardware cada vez mas potente para
satisfacerlas. Ejemplo de esto son, camaras con mas definicion, pantallas
mas grandes, incremento de la velocidad tactil, procesadores mas potentes,
mas capacidad de almacenamiento y mejor conectividad, haciendolos cada
vez mas similares a pequenas 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 solo 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 motivacion 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 telefono 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 mas hacer para extender su duracion.
Desde la creacion del smartphone la duracion 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 enfatica motivacion para atacar esta problematica. A
su vez estos dispositivos tienen la capacidad de capturar logs, es decir, un
seguimiento de registros de todas las actividades que se estan generando en el
mismo, proporcionando una enorme cantidad de datos para poder procesar
y que posteriormente seran de utilidad en el estudio.
1.2. Objetivos y solucion propuesta
El objetivo de este trabajo es analizar como se pueden utilizar distintas
tecnicas de Machine Learning para predecir el consumo de baterıa a partir
de un conjunto de dataset que se le brindaran como datos historicos.
CAPITULO 1. INTRODUCCION 12
Como primer paso se creara un modulo en donde se puedan formatear los
datos brindados para realizar este proyecto, los mismos estan creados en un
formato establecido por la Universidad de Cambridge [4] los cuales deberan
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 evaluacion se creara un modulo como aplica-
cion Web, el cual presentara una interface que permitira elegir el conjunto
de datos que se quieran estudiar ası como tambien los atributos implicados
al mismo estudio, esta aplicacion se conectara con un servidor que sera el
encargado de procesar toda esta informacion y aplicar los algoritmos con sus
diferentes variantes de ajustes para optimizar su rendimiento, ası como tam-
bien, devolver todo el informe relacionado con metricas teniendo en cuenta
diferentes tecnicas de calculos.
Todo esto nos permitira realizar el estudio que nos motivo desde un prin-
cipio, poder comparar modelos de aprendizaje y ver cual de todos se adapta
mejor a la problematica establecida, para esto se estudiaran diferentes metri-
cas entre ellas el porcentaje de acierto con datos futuros.
1.3. Organizacion
El resto del trabajo se organiza en 5 capıtulos. A continuacion se da un
breve resumen de los temas que se abordan en cada uno de ellos.
En el capıtulo 2 se presenta el marco teorico, donde se definen los concep-
tos utilizados a lo largo de todo el informe, tales como: Android, aprendizaje
de maquina, regresion, clasificacion, modelos, componentes, entre otros.
En el capıtulo 3 se presentan algunos trabajos relacionados desde dife-
rentes perspectivas: herramientas utilizadas para el estudio, y trabajos que
involucran problematicas en la duracion de la baterıa.
En el capıtulo 4 se describe el enfoque y las herramientas propuestas
para satisfacerlos. Se detalla la arquitectura, diseno e implementacion de las
1http://scikit-learn.org
CAPITULO 1. INTRODUCCION 13
mismas, como las diferentes decisiones que se consideraron mas importantes.
En el capıtulo 5 se presenta la evaluacion 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.
Finalmente, en el capıtulo 6 se exponen las conclusiones del trabajo rea-
lizado, las limitaciones encontradas del enfoque y las herramientas, y posibles
lıneas de trabajo futuro.
Capıtulo 2
Marco Teorico
En este capıtulo se presentan los conceptos fundamentales del dominio,
el cual esta centrado en torno a la prediccion de patrones en el uso de dispo-
sitivos moviles.
2.1. Dispositivos Moviles
Los dispositivos moviles son artefactos electronicos pequenos que se ali-
mentan a traves de una baterıa de litio. En este contexto, un smartphone o
telefono inteligente es un telefono movil con una mayor capacidad de computo
y conectividad que un telefono movil convencional. Mientras el telefono movil
es un dispositivo inalambrico electronico utilizado para acceder y utilizar los
servicios de la red de telefonıa celular, el termino inteligente hace referencia
a la capacidad de usarlo tambien como una computadora de bolsillo.
Una de las caracterısticas mas 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 personalizacion total del dispositivo. Otras caracterısticas importan-
tes son la capacidad multitarea, el acceso y conectividad a Internet vıa WiFi
o red movil, el soporte de clientes de email, la eficaz administracion de da-
tos y contactos, la posibilidad de lectura de archivos en diversos formatos,
como PDF o MS Office Docs, y la posibilidad de obtener datos del ambien-
14
CAPITULO 2. MARCO TEORICO 15
te a traves de sensores especializados como el acelerometro y el sistema de
posicionamiento global conocido como GPS por sus siglas en ingles, entre
otros.
Para poder ejecutar aplicaciones en los dispositivos moviles, 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 movil. 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 nucleo Linux. Fue disenado
principalmente para dispositivos moviles con pantalla tactil, como smartp-
hones, tabletas, aunque tambien se usa en otros dispositivos, como relojes
inteligentes, televisores y sistemas de entretenimiento de automoviles. Ini-
cialmente fue desarrollado por Android Inc., empresa que Google respaldo
economicamente y mas tarde, en 2005, compro [5]. Android fue presenta-
do en 2007 junto la fundacion del Open Handset Alliance (un consorcio de
companıas de hardware, software y telecomunicaciones) para avanzar en los
estandares abiertos de los dispositivos moviles. El primer movil con el sistema
operativo Android fue el HTC Dream y se vendio en octubre de 2008. An-
droid es el sistema operativo movil mas utilizado del mundo, con una cuota
de mercado superior al 80 % al ano 2017, muy por encima de IOS [6].
Los componentes principales del sistema operativo de Android (cada sec-
cion se describe en detalle):
Aplicaciones: las aplicaciones base incluyen un cliente de correo electroni-
co, programa de SMS, calendario, mapas, navegador, contactos y otros.
Todas las aplicaciones estan escritas en lenguaje de programacion Java.
Marco de trabajo de aplicaciones: los desarrolladores tienen acceso com-
pleto a los mismas API del entorno de trabajo usados por las aplicacio-
nes base. La arquitectura esta disenada para simplificar la reutilizacion
CAPITULO 2. MARCO TEORICO 16
de componentes; cualquier aplicacion puede publicar sus capacidades
y cualquier otra aplicacion 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 traves del marco de trabajo de aplicaciones
de Android. Algunas son: System C library (implementacion biblioteca
C estandar), bibliotecas de medios, bibliotecas de graficos, 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 aplicacion Android corre su
1https://es.wikipedia.org/wiki/Android
CAPITULO 2. MARCO TEORICO 17
propio proceso, con su propia instancia de la maquina virtual Dalvik.
Dalvik ha sido escrito de forma que un dispositivo puede correr multi-
ples maquinas virtuales de forma eficiente. Dalvik ejecutaba hasta la
version 5.0 archivos en el formato de ejecutable Dalvik (.dex), el cual
esta optimizado para memoria mınima. La Maquina Virtual esta 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 version 5.0 utiliza el ART, que compila totalmente al
momento de instalacion de la aplicacion.
Nucleo Linux: Android depende de Linux para los servicios base del
sistema como seguridad, gestion de memoria, gestion de procesos, pila
de red y modelo de controladores. El nucleo tambien actua como una
capa de abstraccion entre el hardware y el resto de la pila de software.
2.2. Aprendizaje de Maquina
El aprendizaje de maquina o aprendizaje automatico es una rama de la
inteligencia artificial cuyo objetivo es desarrollar tecnicas que permitan a las
computadoras descubrir patrones a partir de datos suministrados [7]. En el
aprendizaje de maquina 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 situacion (conjunto de datos de entrenamiento).
2. Adaptacion, reconoce la ultima vez que se probo una accion (salida
producida)
CAPITULO 2. MARCO TEORICO 18
3. Generalizacion, reconoce si ha funcionado o no esta accion (si fue co-
rrecta o no). generalizacion 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 datos de entrenamiento. Cuando se generaliza, el modelo puede
no ajustarse tan bien a los datos de entrada, pero fallara mucho menos
con datos nuevos [8].
El aprendizaje de maquina, entonces, es un proceso para que las compu-
tadoras modifiquen o adapten sus acciones (predictivas o de control) para
que sus resultados sean mas precisos. Reune ideas de neurociencia, biologıa,
estadıstica, matematica y fısica, para generar tecnicas y hacer que la compu-
tadora aprenda. Un area importante relacionada con el aprendizaje de maqui-
na es la minerıa de datos, el proceso de extraer informacion util de grandes
conjuntos de datos por medio de algoritmos eficientes.
Si se define el aprendizaje de maquina como la mejora de tareas a traves
de la experiencia, surge la duda de como la computadora puede saber si esta
aprendiendo mejor o de que forma podrıa mejorar ese aprendizaje. De esto,
surgen diferentes tipos de tecnicas o algoritmos de aprendizaje. Por ejemplo,
se le puede indicar a un algoritmo la respuesta correcta para un problema,
ası, la proxima vez que se aplique su desempeno sera mejor. Tambien se
deben aplicar diferentes tecnicas para la validacion de datos, esto permite
sacar conclusiones acerca del acierto que tienen estos algoritmos y poder
determinar que algoritmos se adapta mejor a la problematica a atacar.
Estas diferentes alternativas proveen una forma de clasificar las diferentes
metodos de aprendizaje que sera detallada en la siguiente seccion. Cabe des-
tacar que por mas que existan distintos tipos de aprendizaje, todos los meto-
dos comparten el mismo objetivo de generalizacion: la tecnica debe producir
salidas sensibles para datos de entrada que no fueron encontrados durante
el aprendizaje, teniendo en cuenta tambien que el algoritmo debe lidiar con
ruido en los datos, es decir, imprecision en los valores que pueden afectar al
flujo natural de estos algoritmos.
CAPITULO 2. MARCO TEORICO 19
2.2.1. Clasificacion de tecnicas de aprendizaje
El modo de aprendizaje que una tecnica particular puede realizar queda
determinado por la naturaleza de los datos de entrada, es decir, los datos de
entrenamiento (dataset). Basicamente las tecnicas 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 traves de las
respuestas correctas provistas y basado en el conjunto de datos la tecnica 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 tecnica a partir de una entrada determi-
nada. Dentro del aprendizaje supervisado, las tecnicas pueden separarse en
dos grupos de acuerdo a la naturaleza de la propiedad o respuesta.
Clasificacion: 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 clasificacion como un proceso discreto. El algoritmo de clasi-
ficacion tiene como objetivo encontrar umbrales de decision que sirvan para
identificar las diferentes clases.
Regresion: El proceso de regresion predice valores numericos de atribu-
tos a partir de funciones matematicas polinomiales que describan o se ajusten
lo mas posible a todos los puntos del dominio, es decir, todos los valores del
conjunto de entrenamiento correspondientes a la propiedad que se quiere pre-
decir. Generalmente, se considera un problema de aproximacion de funcion o
interpolacion al encontrar un valor numerico entre los valores conocidos. Por
lo tanto, el eje primordial del proceso de regresion es encontrar la funcion
CAPITULO 2. MARCO TEORICO 20
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 maquina simplemente recibe los datos de
entrada sin etiquetas o respuestas correctas como en el metodo 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 nocion de que el objetivo es construir una representacion de la entrada que
puede ser usada para tomar decisiones, predecir futuras entradas, comunicar
eficientemente entradas para otras maquinas, entre otras posibilidades.
El aprendizaje no supervisado puede entenderse como la busqueda de pa-
trones en los datos independientemente del ruido presente en los mismos. Por
ejemplo, las tecnicas de agrupamiento (clustering) son tecnicas de aprendi-
zaje no supervisado que agrupan un conjunto de objetos de modo tal que los
objetos pertenecientes a un mismo grupo (cluster) comparten algun tipo de
similitud entre ellos, de igual sentido que se diferencian con los objetos de
otro grupo. A diferencia del proceso de clasificacion, los grupos o clases no
son conocidos fehacientemente antes del entrenamiento, un claro metodo de
aprendizaje no supervisado.
2.2.2. Tecnicas Contempladas
A continuacion se presentaran los aspectos teoricos de los modelos pre-
sentados e implementados en este proyecto: Regresion lineal y logıstica [9],
Gaussian Naive Bayes, K Nearest Neighbours (K vecinos mas cercanos), Sup-
port Vector Machine(maquinas de vectores soporte) SVM y Red Neuronal
Recurrente de memoria de corto plazo (LSTM - Long short-term memory)
[10].
CAPITULO 2. MARCO TEORICO 21
2.2.2.1. Regresion Lineal
La regresion es la prediccion de un valor desconocido a traves del calculo
de una funcion matematica a partir de los valores conocidos. Si se considera
esta funcion como una funcion lineal, la salida sera la suma de cada valor
conocido multiplicado
Figura 2.2: Regresion 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 (funcion lineal) que mejor se ajusta
a los datos, se busca minimizar la distancia entre cada punto y dicha rec-
ta. Luego, se intentara minimizar la funcion 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 minimizacion mas comun llamada optimizacion de
mınimos cuadrados. Para minimizar este error en la funcion lineal, puede
utilizarse distintas tecnicas de regresion lineal, como ridge-regression y gra-
diente estocastico descendiente. La primera aplica una penalizacion (ridge) a
cada constante. La segunda, aplica un diferencial sobre la funcion obtenien-
do el gradiente el cual por definicion, es la direccion en la que incrementa o
disminuye en mayor medida. Dado que el objetivo es minimizar el error de
2https://es.wikipedia.org/wiki/Regresion lineal
CAPITULO 2. MARCO TEORICO 22
prediccion, se debe seguir la funcion en direccion del gradiente negativo en
la cual la funcion disminuye.
2.2.2.2. Regresion Logıstica
La regresion logıstica tiene ciertas similitudes en su planteamiento con la
regresion lineal, pero esta orientada a resolver problemas de clasificacion y no
de prediccion. La Regresion Logıstica no se utiliza para variables numericas,
sino que se emplea para predecir las clases categorica a las que pertenecen
las variables independientes. Debido a su sencillez y rapida aplicacion, es-
te algoritmo suele utilizarse con frecuencia para problemas de Clasificacion
Binaria y Clasificacion Multiclase con fronteras lineales.
Para ello se apoya en una funcion logıstica como la funcion “sigmoide” fi-
gura 2.3, que toma como entrada cualquier numero real y devuelve un numero
real comprendido entre 0 y 1 y que podemos interpretar como una probabi-
lidad.
f(t) =et
1 + et
Debido a que los modelos de clasificacion presentan cierta dificultad para
identificar a que categorıa pertenece una observacion dada, ya que como se
menciono, el valor devuelto por la regresion logıstica puede ser visto como
un valor probabilıstico entre 0 y 1, es donde se introducen las funciones de
perdidas. Por ejemplo Cross entropy loss (perdida de entropıa cruzada). La
entropıa cruzada se usa comunmente para cuantificar la diferencia entre dos
distribuciones de probabilidad. Por lo general, la distribucion “verdadera” (la
que el algoritmo de aprendizaje automatico 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 distribucion unica para esta sera:
Pr ( Clase A) Pr ( Clase B)
0 .0 1 .0
3https://es.wikipedia.org/wiki/Regresion logistica
CAPITULO 2. MARCO TEORICO 23
Figura 2.3: Curva Regresion Logıstica.3
Como los algoritmos de aprendizaje automatico pueden predecir valores entre
0-1 puede tomarse como ejemplo el los valores siguiente de prediccion:
Pr ( Clase A) Pr ( Clase B)
0 .345 0 .655
Lo que determina que tan cerca esta la distribucion predicha de la verdadera
es la perdida de entropıa cruzada, la cual hace uso de la formula:
H(p, q) = −∑x
p(x) ∗ logq(x)
Donde p(x) es la probabilidad deseada, q(x) la probabilidad real. En este
caso, la perdida es 0.423 :
H = −(0,0 ∗ ln(0,345) + 1,0 ∗ ln(0,655)) = 0,423
Ası de “equivocada” o “muy lejos” esta la prediccion de la verdadera
distribucion.
En este proyecto la aplicacion de la Regresion Logıstica se dio, por ejem-
plo, para predecir si un movil necesita carga de baterıa, o si en determina-
do momento se debe apagar un determinado sensor (division en dos clases:
CAPITULO 2. MARCO TEORICO 24
apagar sensor o no apagar sensor). Para ello, es necesario conocer el compor-
tamiento de dicho movil (sensores encendidos, si se encuentran escaneando,
estado de la baterıa, etc.). La deteccion de este tipo de cuestiones permite
ofrecerle al usuario una atencion 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 termino 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 ecuacion corresponde al teorema de Bayes. Definimos “Class”
como la clase que estamos analizando y “Data” como datos de entrada u
observacion.
P (Class|Data) =P (Class) ∗ P (Data|Class)
P (Data)
En terminos simples, Naive Bayes asume que no existe relacion 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 alla 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 practicas, la estimacion de parametros para los
modelos Bayes utiliza el metodo de maxima verosimilitud, es decir, se pue-
de trabajar con el modelo de Bayes sin aceptar probabilidad bayesiana o
cualquiera de los metodos bayesianos.
Una ventaja del clasificador de Bayes es que solo se requiere una pequena
cantidad de datos de entrenamiento para estimar los parametros (las medias
4https://en.wikipedia.org/wiki/Naive Bayes classifier
CAPITULO 2. MARCO TEORICO 25
y las varianzas de las variables) necesarias para la clasificacion. 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 rapido 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 informacion. 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 metodo KNN (K vecinos mas cercanos) es usado para tareas de ta-
reas de clasificacion de datos. Mas especıficamente, KNN es un metodo de
vecindad basado en casos o instancias. Se asume que el conjunto completo de
entrenamiento incluye no solo los datos sino tambien la clasificacion deseada.
Los datos de entrenamiento son entonces el modelo [11].
Funcionamiento del Algoritmo Primero se definen los modelos presen-
tes en el espacio solucion 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 como quedarıa un espacio
de relacion dentro del algoritmo. Cada figura representa a un modelo y su
forma y color representa el tema principal. Para realizar una deduccion se
debe definir un K. Este K representa a la cantidad de vecinos que se tendran
en cuenta para realizar la clasificacion.
5https://en.wikipedia.org/wiki/K-nearest neighbors algorithm
CAPITULO 2. MARCO TEORICO 26
Tomando el ejemplo anterior, si se toma un K=2, la clasificacion dara que
es un triangulo ya que los dos vecinos mas cercanos son de este tipo. Con
un K=5 al distinguirse que los vecinos son 2 triangulos rojos y 3 cuadrados
azules toma la clase del mayor, osea el punto clasifica en cuadrado azul6.
Para la clasificacion con KNN, el punto desconocido es asignado a la clase
mas comun de los K vecinos mas cercanos. KNN pierde precision si se utilizan
datos ruidosos o con atributos que no aportan informacion. Si k es demasiado
pequeno, entonces el resultado es muy sensible a puntos ruidosos. Por otro
lado si k es demasiado grande, la vecindad del punto desconocido incluira
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 segun su distancia es la siguiente:
y =k∑
i=1
wi ∗ yi, con wi =1
d(xtest, xi)2
La eleccion de la metrica 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) =
√√√√ n∑i=1
(X1i −X2i)2
2.2.2.5. Maquina de vector de soporte (SVM)
Las maquinas de vectores soporte (SVM, del ingles Support Vector Ma-
chines) aunque originariamente fueron pensadas para resolver problemas de
clasificacion binaria, actualmente se utilizan para resolver otros tipos de pro-
blemas (regresion, agrupamiento, multiclasificacion).
Son diversos los campos en los que han sido utilizadas con exito, tales
como vision artificial, reconocimiento de caracteres, categorizacion de texto
e hipertexto, clasificacion de proteınas, procesamiento de lenguaje natural,
analisis de series temporales, etc. De hecho, desde su introduccion, han ido
6https://es.wikipedia.org/wiki/K vecinos mas proximos
CAPITULO 2. MARCO TEORICO 27
ganando un merecido reconocimiento gracias a sus solidos fundamentos teori-
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 nucleo o kernel) con un sesgo
inductivo muy particular. Derivan de la Teorıa del aprendizaje estadıstico,
segun la cual un sistema con aprendizaje debe, a partir de un conjunto de
informacion acerca de un proceso computacional, construir un modelo que
permita predecir nuevos fenomenos asociados a el [13]. De manera general
para clasificacion, las Maquinas 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 proximos sea maxima.
Analıticamente, se toma la distancia que existe entre la lınea y el primer
punto interceptado (en direccion perpendicular), si se ubica una “zona de-
sierta” alrededor de la lınea, ningun punto ubicado en dicha zona puede ser
clasificado ya que se encuentra demasiado cerca de la lınea. El radio maxi-
mo que puede tener esta region es llamado margen, senalado como M y los
puntos de cada clase mas cercanos a la lınea de clasificacion se denominan
vectores de soporte.
Desde un punto de vista practico, el hiperplano separador con este margen
ha demostrado tener una buena capacidad de generalizacion, evitando en
gran medida el problema del sobreajuste a los ejemplos de entrenamiento.
Las funciones kernel, tambien conocidas como nucleo, realizan la sepa-
racion y traslado de las muestras a un espacio de caracterısticas de mayor
dimension, el cual aumenta la capacidad computacional de la maquinas 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.
Dentro de la clasificacion SVM multiclase, hay dos filosofıas para intentar
clasificar los datos en mas de dos categorıas:
CAPITULO 2. MARCO TEORICO 28
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 numero
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 aproximacion se entrena un clasificador entre
una clase y las k1 otras clases (donde k es el numero total de clases).
Cada discriminante k representa la decision de que k pertenezca o no
a esa clase.
Funciones de perdida
7https://dimensionless.in/introduction-to-svm/
CAPITULO 2. MARCO TEORICO 29
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
separacion es bueno.
En la regresion se utiliza ε -insensible lineal: El similar de lo que serıa
para clasificacion, el margen es la formacion de una banda o tubo alrededor
de la verdadera funcion de regresion.
La funcion de perdida ignora los errores asociados con los puntos que
caen dentro de una banda que esta a una cierta distancia de la funcion de
regresion lineal. Es decir, si el punto verifica |y−f(x)| ≤ ε la funcion perdida
debera anularse.
La principal razon para elegir este tipo de funciones es la de permitir
cierta dispersion en la funcion solucion, de tal forma que todos los ejemplos
que caen en la region tubo definida por ±ε no seran considerados vectores
soporte.
2.2.2.6. Series de tiempo
Una serie temporal o cronologica 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 periodicas en consul-
torio o la farmacia). Los diferentes metodos 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 informacion
contenida en dicha senal y/o contenida en otras variables externas.
Componentes Uno de los usos mas habituales de las series de datos tem-
porales es su analisis para prediccion y pronostico (ası se hace por ejemplo con
los datos climaticos, las acciones de bolsa, o las series de datos demograficos).
Las series temporales se estudian en ingenierıa, economıa, finanzas y ciencias
sociales [14].
Los componentes de una serie de tiempo que determinan el resultado de
los valores medidos se distinguen en los cuatro siguientes:
CAPITULO 2. MARCO TEORICO 30
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 ano(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 repeticion.
3. Ciclicidad. Indica los cambios cıclicos sin un periodo definido, puede
ser superior a un ano. No se puede identificar un periodo claro para
esta variabilidad, usualmente es de plazo mas largo que las de estacio-
nalidad.
4. Residuo. Fluctuaciones irregulares e impredecibles. Debidos por ejem-
plo a crisis financieras, fenomenos como tormentas, terremotos, inun-
daciones, huelgas, guerras, avances tecnologicos, etc.
2.2.2.7. Redes Neuronales Recurrentes (LSTM)
Las Redes Neuronales son un campo muy importante dentro de la Inte-
ligencia Artificial. Inspirandose 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 tecnicas algorıtmicas convencionales.
Los seres humanos no empezamos a pensar desde cero a cada segundo.
Por ejemplo, mientras leemos, entendemos cada palabra basandonos en el
contexto que forman las palabras previas. No desperdiciamos las ideas ante-
riores, sino que estas tienen persistencia en la memoria.
Las redes neuronales tradicionales no cuentan con esta capacidad, y es su
mayor defecto. Por ejemplo, suponga el caso en el que queremos clasificar que
clase de evento esta pasando en un punto de una pelıcula. No esta muy claro
como una red neuronal tradicional podrıa usar razonablemente las escenas
anteriores para predecir las siguientes. Y aquı es donde entran en juego las
redes neuronales recurrentes, ya que estas sı resuelven este problema. Su
CAPITULO 2. MARCO TEORICO 31
principal caracterıstica es que son redes con bucles, que permiten que la
informacion persista.
Figura 2.7: Ejemplo basico de red neuronal recurrente8
En el diagrama 2.7, se observa como una parte de la red neuronal, “A”,
recibe una entrada “x” y devuelve una salida “h”. El bucle permite que la
informacion pase de un ciclo de la red al siguiente. Pese a que el concepto
de bucle parezca algo extrano, las redes neuronales que cuentan con ellos no
son tan distantes de la redes neuronales tradicionales.
Una red neuronal recurrente puede ser creada utilizando multiples copias
de la misma red, pasando el mensaje o salida al nodo sucesor. Si desenrolla-
mos el bucle, tendrıamos 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
estan ıntimamente relacionadas con secuencias y listas. En este proyecto,
dado sus propiedades, se aplico para la prediccion en series de tiempo, ya
que al poder mantener una memoria de estados anteriores es ideal para este
tipo de predicciones.
8http://colah.github.io/posts/2015-08-Understanding-LSTMs/9http://colah.github.io/posts/2015-08-Understanding-LSTMs/
CAPITULO 2. MARCO TEORICO 32
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 modulos. En las RNN estandar, el modulo repetidor tiene una estructura
muy simple, con una sola capa, como podrıa ser la de tipo “tanh”. Las redes
LSTM tambien tienen forma de cadena, pero el modulo repetidor en vez de
tener una sola capa, tiene cuatro (figura 2.9).
Figura 2.9: Estructura del modulo repetidor10
Figura 2.10: Notacion del modulo 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 informacion fluir por toda la red con solo algunas pequenas
interacciones, sin ser a penas alterada. La red tambien tiene la habilidad
de borrar o anadir informacion al estado de la celda mediante estructuras
llamadas puertas. Estas puertas son una manera de permitir opcionalmente
a la informacion circular o no, y se componen de una capa “sigmoide” y una
10http://colah.github.io/posts/2015-08-Understanding-LSTMs/11http://colah.github.io/posts/2015-08-Understanding-LSTMs/
CAPITULO 2. MARCO TEORICO 33
operacion de multiplicacion. Las salidas de la capa “sigmoide” alternan entre
0 y 1, describiendo si la informacion 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 que
informacion se va a ir almacenando o borrando. Podemos destacar los si-
guientes:
1. Decidir que informacion despreciar. Esta decision la toma la capa “sig-
moide”, que devuelve una salida igual a 1 si se busca mantener la
informacion, o 0 si queremos deshacernos de ella. Por ejemplo se tiene
un Lenguaje, donde se quiere predecir una palabra basandose en las
anteriores, el estado de la celda puede almacenar el genero del sujeto
para usar los pronombres adecuados. Cuando nos encontremos un nue-
vo sujeto, olvidaremos el genero del anterior ya que no sera de utilidad.
2. Decidir que informacion se va a almacenar. Consta de dos partes: prime-
ro, una capa “sigmoide” decide que valores son actualizados. Despues,
una capa “tanh” crea un vector con los nuevos valores candidatos que
pueden ser anadidos al estado. En el ejemplo anterior, se decidirıa que
queremos anadir el genero 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 que
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 segun la
decision de actualizar el estado de la celda. En el caso de modelado de
lenguaje, ahora es cuando se desecha la informacion sobre el genero del
viejo sujeto y se anade la nueva informacion, como se decidio en los
pasos anteriores.
4. Decidir la salida basandose en el estado de la celda, pero de manera
CAPITULO 2. MARCO TEORICO 34
filtrada. Primero, mediante una capa “sigmoide”, se decide que partes
del nuevo estado de la celda se van a sacar como salida. Despues, 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 sacara informacion acerca
de el, como puede ser si este es singular o plural, para despues poder
conjugar correctamente el verbo que le sigue.
2.3. Evaluacion de Modelos
Una vez entrenado un modelo de prediccion, la evaluacion del mismo es
importante para medir el nivel de acierto de las predicciones. Esta evaluacion
consiste en probar el modelo con un conjunto de datos de prueba y medir el
error u otras metricas sobre los resultados. Estas metrica de evaluacion per-
mite comparar el desempeno de modelos entrenados con diferentes tecnicas,
y conjunto de datos.
Existen distintas formas para llevar a cabo esta evaluacion. La mas simple
consiste en usar como datos de prueba el mismo conjunto de datos utilizado
para el entrenamiento de los modelos. Otro metodo consiste en separar los
datos del problema entre datos de entrenamiento y datos de prueba. Por
ultimo, tambien se puede validar el modelo de forma cruzada.
2.3.1. La validacion cruzada (cross-validation)
La validacion cruzada (cross-validation) es una tecnica utilizada para eva-
luar los resultados de un analisis estadıstico y garantizar que son indepen-
dientes de la particion entre datos de entrenamiento y prueba. Consiste en
repetir y calcular la media aritmetica obtenida de las medidas de evaluacion
sobre diferentes particiones. Por ejemplo, si consideramos diez subconjuntos
para validacion, los datos de entrada se dividen en diez partes, donde una se
reserva para las pruebas y las otras nueve para el entrenamiento. Este proce-
CAPITULO 2. MARCO TEORICO 35
so se repite diez veces y se calcula el promedio de las metricas de evaluacion.
Esto ayuda a determinar el nivel al que un modelo se podrıa generalizar para
nuevos conjuntos de datos.
2.3.2. Metricas
El presente trabajo contempla las siguientes metricas de evaluacion para
los diferentes modelos:
CC (Coeficiente de correlacion de Pearson): el coeficiente de correlacion
de Pearson es un ındice que puede utilizarse para medir el grado de
relacion de dos variables siempre y cuando ambas sean cuantitativas.
En el presente trabajo se considera la correlacion 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 cuadratica del promedio de la distancia euclıdea
entre el valor de la propiedad obtenida por la tecnica y el valor real.
2.3.3. Ajuste del modelo: Overfitting y Underfitting
Cuando se genera (o entrena) un modelo de prediccion, su desempeno
es incierto hasta su evaluacion o aplicacion. En algunos casos, la calidad
del modelo es pobre generando respuestas imprecisas, de modo tal que se le
deben aplicar acciones correctivas analizando como se comporta y ajusta el
modelo.
Los modelos pueden presentar dos problemas indeseables: overfitting y
underfitting. El overfitting describe una funcion que se ajusta estrechamen-
te a los datos de entrenamiento. Es decir el modelo aprendio los detalles y
el ruido en los datos impactando negativamente en el desempeno del mode-
lo. Este efecto es causado porque el ruido o las variaciones en los datos de
entrada fueron usados para el aprendizaje.
Por otro lado, los modelos pueden presentar problemas de underfitting,
cuando no interpretan bien los datos de entrenamiento, por lo que la gene-
CAPITULO 2. MARCO TEORICO 36
ralizacion de nuevos datos sera imprecisa. Este efecto es causado porque la
funcion o tecnica elegida no es el indicado para representar el comportamien-
to de los datos. El efecto underfitting se caracteriza por sobre-generalizar los
datos. Incorporar nuevos datos al conjunto de entrenamiento podrıa solucio-
nar o mitigar este efecto.
En conclusion 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 practica. La Figura 2.11 presenta tres modelos de re-
gresion para un mismo grupo de datos que permiten interpretar graficamente
los problemas de underfitting y overfitting.
Figura 2.11: Efectos del modelo sobre los datos de entrenamiento. 12
12https://www.slideshare.net/TalhaObaid1/machine-learning-101
Capıtulo 3
Trabajos Relacionados
3.1. Librerıas y Aplicaciones Utilizadas
El desarrollo de este trabajo se realizo 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 esta suce-
diendo en el telefono 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 utilizo 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 telefono.
Estos datos se eliminan de la informacion de identificacion personal de
la mejor manera posible al tiempo que se preserva la informacion util. Pe-
riodicamente, 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.org3https://keras.io/
37
CAPITULO 3. TRABAJOS RELACIONADOS 38
inferencias de los patrones que surgen. Actualmente el proyecto cuenta con
31294 contribuidores, los cuales pueden recibir la informacion sobre los es-
tudios realizados sobre sus telefonos. 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. Ademas captura datos como por ejemplo, cuando enciende el WiFi,
cuando utiliza los datos moviles, cuando enciende o apaga el bluetooth. Toda
esta informacion es totalmente necesaria para este estudio y es la principal
base para la realizacion del mismo. En proximos capıtulos se vera 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 maquina de software libre
para el lenguaje de programacion de Python [9]. Cuenta con varios algoritmos
de clasificacion, regresion y agrupacion, incluyendo maquinas de vectores de
soporte, bosques aleatorios, aumento de gradiente, k-means y DBSCAN, y
esta disenado para interoperar con las bibliotecas numericas y cientıficas de
Python, NumPy y SciPy.
El proyecto scikit-learn comenzo 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 extension de terceros desarrollada
por separado y distribuida para SciPy. La base de codigo 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 publico el
1 de febrero de 2010.
3.1.3. Keras
Keras es una biblioteca de red neuronal de codigo abierto escrita en Pyt-
hon. Es capaz de ejecutarse sobre TensorFlow, Microsoft Cognitive Toolkit,
CAPITULO 3. TRABAJOS RELACIONADOS 39
Theano o MXNet. Disenado para permitir una rapida experimentacion con
redes neuronales profundas, se enfoca en ser facil de usar, modular y exten-
sible. Fue desarrollado como parte del esfuerzo de investigacion del proyec-
to ONEIROS (Sistema Operativo de Robot Inteligente Neuroelectronico de
codigo abierto), y su principal autor y mantenedor es Francois Chollet.
En 2017, el equipo TensorFlow de Google decidio apoyar a Keras en la
biblioteca principal de TensorFlow. Chollet explico que Keras fue concebido
como una interfaz en lugar de un marco de aprendizaje automatico indepen-
diente [10]. Ofrece un conjunto de abstracciones de nivel mas 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 construccion de
redes neuronales de uso comun, como funciones de activacion, optimizadores
y un conjunto de herramientas para facilitar el trabajo con datos de imagenes
y de texto. Permite a los usuarios producir modelos profundos en telefonos
inteligentes (iOS y Android), en la web o en la maquina virtual Java.
Tambien permite el uso de capacitacion distribuida de modelos de apren-
dizaje profundo en grupos de unidades de procesamiento de graficos (GPU).
3.1.4. Trabajos Relacionados
En los ultimos anos se ha tratado de optimizar el consumo de baterıa
de las aplicaciones Android. Muchas investigaciones han surgido con el fin
de estudiar este tema desde diferentes puntos de vista, realizando numerosos
tipos de pruebas y obteniendo resultados importantes. El proposito de esta
seccion es hacer una breve descripcion de algunas de estas investigaciones y
trabajos realizados que sirvieron de guıa para el presente trabajo y que en
menor o mayor medida se relacionan con el mismo.
CAPITULO 3. TRABAJOS RELACIONADOS 40
3.1.4.1. Refactorizaciones para kernels computacionales cientıfi-
cos en dispositivos moviles
Ana Rodriguez [15] obtiene un conjunto de buenas practicas que mini-
mizan el consumo de baterıa. A su vez, se realizo una investigacion 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 refactorizacion o mejoras en el
codigo Android y luego realizar el analisis en aplicaciones reales. Los micro-
benchmarks se centraron en creacion de objetos, obtencion de datos, copia de
arreglos, recorrido de matrices, manejo de Strings, operaciones aritmeticas,
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
concatenacion convencional, esto se debe a que la clase String es inmutable
y por lo tanto crea objetos cuando opera la concatenacion. 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 precision.
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 % mas eficiente que realizando un metodo
para obtener esta variable, esto propone romper la encapsulacion de los ob-
jetos. Finalmente para la creacion de objetos se obtuvo una mejora de 812 %
reutilizando los mismos, aunque esto tambien dependera del tipo de objeto
reutilizado.
De esta manera se pudo comprobar que los micro-benchmarks con peor
performance son los que consumen un mayor porcentaje de baterıa. Por lo
tanto prever un codigo con menor tiempo de ejecucion a la hora de desarrollar
una aplicacion es energicamente eficiente ya sea aplicando una o varias de
estas mejoras.
CAPITULO 3. TRABAJOS RELACIONADOS 41
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 moviles con el fin de optimizar mejor los recursos con el fin de
salvar la energıa de la baterıa, para esto se capturo informacion de personas
que se ofrecieron como voluntarias para el estudio durante cuatro meses [16].
El estudio conllevo a que se tengan que aplicar diferentes datos tales como
aplicar algoritmos sobre el acelerometro del dispositivo y determinar si esta
persona se movilizaba a pie, en auto o en realidad no se estaba desplazando,
como ası tambien aplicar algoritmos sobre datos GPS y determinar diferentes
puntos frecuentes del usuario, como puede ser su hogar o el trabajo.
La solucion propuesta fue crear una aplicacion que capture los eventos del
dispositivo y aplicar reglas de minerıa para determinar los patrones de uso.
Esta aplicacion esta constituida principalmente por un servicio que almace-
na la informacion mediante la escuchando toda la actividad del dispositivo
mediante Intents, un Intent es un objeto java que tiene informacion sobre la
operacion que se va a ejecutar. Por otro lado ofrece una interfaz sencilla para
poder realizar una mınima configuracion a la aplicacion.
Para poder determinar el resultado de las tecnicas 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.
La variable que se tomo como estudio fue el sensor Wifi, en este caso si
estaba activado o no. De cinco usuarios estudiados en tres se encontraron
algunos patrones de los cuales se pudieron establecer algunas reglas, con los
dos restantes no hubo un patron coherente del cual poder realizar un analisis,
lo cual no quiere decir los algoritmos no sea capaces de predecir algun patron
sino que para estos usuarios la activacion del sensor Wifi no fue un buen
indicador.
CAPITULO 3. TRABAJOS RELACIONADOS 42
3.1.4.3. Measuring mobile phone energy consumption for 802.11
wireless networking
Este estudio [17] hace hincapie en el costo de energıa de distintos smartp-
hones cuando estos se conectan a una red 802.11 y envıan mensajes a traves
de la misma.
Se provee la obtencion del consumo de energıa de las aplicaciones utilizan-
do una plataforma de medicion que permite ilustrar aspectos particulares del
desarrollo movil con una granularidad fina. Por ejemplo, el consumo energeti-
co del dispositivo movil mientras intenta conectarse a una red inalambrica
para obtener su direccion IP o el envıo de datos a traves de la red o el uso
de buffers para el envıo de dichos datos.
Un resultado importante obtenido en esta investigacion 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ı tambien una consideracion secundaria como la eleccion del tamano
de los buffers de envıo puede tener un gran impacto en el consumo energeti-
co. Se obtuvo en los resultados de los tests que los criterios para minimizar
el consumo energetico varıan de acuerdo al dispositivo, sistema operativo y
escenario particular.
No todos los smartphones seleccionados obtuvieron la misma conclusion.
Por ejemplo, en el caso del tamano de los paquetes enviados, el smartphone
Nexus se ve favorecido a medida que el tamano del paquete se incrementa,
mientras que para el HTC G1 y otros, el resultado encontrado es exactamente
el inverso. En el caso de la obtencion de conexion de red, la mayorıa de los
dispositivos obtuvo una mejora estableciendo la direccion IP estatica del
dispositivo, aunque en el caso del Nexus esta fue mınima.
La conclusion general muestra que aparentemente pequenas decisiones
pueden tener un impacto muy significativo en el consumo energetico. A si
mismo, se puso en evidencia la gran heterogeneidad de los dispositivos y
como una optimizacion tiende a variar de acuerdo a los componentes que
integran el smartphone.
CAPITULO 3. TRABAJOS RELACIONADOS 43
3.1.4.4. Analysis of Dierential Synchronisation’s Energy Consum-
ption on Mobile Devices
En este trabajo se evalua el consumo de baterıa del algoritmo de sin-
cronizacion diferencial (disffync) en dispositivos moviles [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 mas dispositivos moviles 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 edicion 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 ningun 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 ningun 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 conexion a datos. Esto puede consumir cerca de un 60 % de
la energıa de una conexion a red haciendo que sea mas eficiente realizar una
transferencia inmediatamente cuando termina la anterior o que el tamano del
intervalo sea lo suficientemente mayor para no generar desperdicio de energıa
constantemente.
Por ultimo la complejidad computacional se relaciona directamente con el
consumo de energıa del CPU y el uso de la misma. Con estas consideraciones,
se llego a la conclusion de que hay que evitar los ciclos vacıos, los intervalos
de ciclos deben ser ajustados dependiendo de la conexion y, normalmente, el
CAPITULO 3. TRABAJOS RELACIONADOS 44
procesamiento de ıtem pequenos 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 encontro que en un 96 %
se producıa este inconveniente, por lo que se opto por realizar una solucion
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 eleccion de la estructura de datos y para los problemas de energıa
desperdiciada luego del envıo de datos, se logro 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 logro detectar 3 tipos de inconvenientes en
los algoritmos de sincronizacion diferencial en tiempo real, como ası tambien
una solucion para cada uno de ellos y lograr una mejora en el consumo de
energıa en una futura implementacion del mismo.
3.1.4.5. An Automatic Detector of Energy Leaks for Smartphone
Applications (ADEL)
Este trabajo presenta una evaluacion sobre las fugas de energıa (Energy
Leaks). Las fugas de energıa se producen cuando bloques de codigo de una
aplicacion no realizan tareas productivas [19], en otras palabras, cualquier
consumo de energıa que no cambia el estado del dispositivo o no produce
un resultado directo o indirecto (es un resultado que no es percibido por el
usuario), es desperdicio de baterıa, entonces teoricamente se puede eliminar
estas secciones de codigo y no se alterara el funcionamiento de la aplicacion.
Esta investigacion propone una herramienta para detectar este inconve-
niente en las aplicaciones que se ejecutan en smartphones. ADEL es una
extension de la plataforma Android que rastrea el flujo de informacion de
la red a traves de aplicaciones, es decir, detecta los problemas de memory
leaks en las comunicaciones de red para aplicaciones. Lo que hace es agregar
automaticamente una etiqueta (tag) a cada objeto descargado y se realiza
CAPITULO 3. TRABAJOS RELACIONADOS 45
un seguimiento de cada tag y de su propagacion. De esta manera, la salida
del sistema arroja una asociacion 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 diseno 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 interpretacion de callbacks
en APIs, mal diseno en el esquema de descarga, descargas repetidas y fetching
agresivo. Con el uso de la herramienta se logro identificar fugas de energıa en 6
de las 15 aplicaciones y, la eliminacion de estas resultaron en una reduccion
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 diseno de las aplicaciones moviles para evitarlos.
3.1.4.6. An Investigation into Energy-Saving Programming Prac-
tices for Android Smartphone App Development
En este estudio [20] se considera el ahorro de baterıa del uso de las co-
dificaciones sugeridas en el sitio oficial de desarrolladores de Android. Estas
se presentan en tres categorıas: uso de la red, consumo de memoria y practi-
cas de programacion a bajo nivel. La primer categorıa hace referencia al uso
de HTTP request desdes los dispositivos moviles para la navegacion por In-
ternet. Estos request consumen un gran porcentaje de energıa, por eso el
objetivo de este papear es mostrar una guıa para el uso y diseno de estos.
La segunda categorıa se estudia especıficamente si el consumo de memoria
esta ligado fuertemente con el gasto de baterıa, es decir, cuento mas memoria
consume una aplicacion mayor sera su consumo de energıa. Sin embargo, el
CAPITULO 3. TRABAJOS RELACIONADOS 46
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 ejecucion
tambien 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 pequenas puede
ayudar a mejorar el consumo de energıa. Un tamano 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 pequenas,
los desarrolladores deben tratar de disenar sus aplicaciones o protocolos para
que estas puedan ser agrupadas en una solicitud mas 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 asignacion innecesaria memoria, no tiene
un gasto de energıa tan importante como se pensaba. Mayor uso de memoria
aumenta solo ligeramente la energıa media del consumo de cada acceso. Para
analizar la tercer categorıa, se analizo el acceso a campos, la invocacion de
metodos y acceso a el tamano de arreglos en ciclos. Para estas tres propuestas
se obtuvo una mejora entre un 30 % y 35 % para acceso a datos, un 15 %
para invocacion , 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
En este trabajo [21] se presenta la herramienta eDoctor que detecta la
descarga de la baterıa en forma anormal. Esta herramienta define el concepto
de Abnormal Battery Drain como consumo de energıa que no es causado por
el uso normal de una aplicacion. Desde el punto de vista de los usuarios esto
CAPITULO 3. TRABAJOS RELACIONADOS 47
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 ejecucion por fases para capturar el
comportamiento de una aplicacion variable en el tiempo, que luego se pue-
de utilizar para identificar una aplicacion anormal. eDoctor tambien registra
eventos tales como la instalacion, las actualizaciones de aplicaciones, cambios
de configuracion, etc. Aquı es critico diferenciar el uso normal del anormal,
por lo que la ejecucion de una aplicacion se divide en intervalos de ejecucion
que luego se agrupan en fases. Cuando una aplicacion 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
ejecucion normal. La combinacion de dicha informacion de fase junto con los
eventos relevante, tales como un cambio de configuracion, pueden identificar
la aplicacion culpable. Esta informacion es utilizada para determinar si la
aplicacion ha tenido o no un comportamiento inesperado y para sugerir la
mejor solucion posible. A su vez, en este trabajo, tambien se hizo una medi-
cion de cuanto es el costo de tener una herramienta como esta ejecutando en
el smartphone.
Para realizar las pruebas se utilizaron 26 smartphones diferentes con 11
versiones diferentes de Android, en los cuales la herramienta detecto 47 de 50
problemas que fueron inyectados en los dispositivos con menos de 1.5 % de
overhead. Tambien se realizaron pruebas en el mundo real con aplicaciones
verdaderas en donde se encontraron problemas como mal uso de un recurso
(Acelerometro, GPS, sensor de orientacion, Wakelock) como ası tambien pro-
blemas de configuracion (precision del GPS, frecuencia de actualizacion). En
estos casos se encontro una falencia para la herramienta. Si una aplicacion
posee ABD desde el principio no sera descartada por eDoctor debido a que
esta lo tomara como uso normal y no se descartara hasta que ocurra una
actualizacion de la aplicacion o un cambio de configuracion. Sin embargo,
esta herramienta posee un buen porcentaje para la deteccion de problemas
CAPITULO 3. TRABAJOS RELACIONADOS 48
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 codigo de la aplicacion y de
tener conciencia a la hora de disenar la misma. Mas alla de las diferencias,
el proposito del presente trabajo tambien es la de estudiar el consumo de
baterıa y los patrones involucrados en el uso de los dispositivos.
En sus comienzos, sistemas operativos como Android posibilitaron la lle-
gada de un gran numero de aplicaciones para los Smartphones. En el mundo
de los dispositivo moviles, Android se convirtio en uno de los sistemas opera-
tivos mas populares por las prestaciones que posee y por la gran portabilidad
que le permite funcionar adecuadamente en distintos dispositivos telefonicos
ası como tambien en tablets y televisores. A su vez, ofrece mucha facilidad
a desarrolladores a la hora de disenar e implementar sus aplicaciones, y sin
duda se a convertido en uno de los sistemas mas utilizados por estos motivos.
Sin embargo, no siempre se logra una calidad adecuada en sus aplicaciones
y muchas veces es porque no tienen en cuenta el consumo de energıa como
una caracterıstica principal de este tipo de desarrollo. En este contexto, los
usuarios se ven inmensamente afectados en el uso de sus dispositivos donde
muchas veces el tiempo de vida del dispositivo no coincida con la jornada
diaria. Este panorama ha llevado a un gran numero de investigaciones por
parte de la comunidad cientıfica para mejorar y corregir el modelo de eficien-
cia de las aplicaciones moviles. La mayorıa de estos trabajos hacen referencia
a la concientizacion por parte de los desarrolladores sobre el diseno de apli-
caciones moviles, como ası tambien muestran las distintas alternativas que
se poseen en este campo.
Capıtulo 4
Enfoque e Implementacion
En este capıtulo se describe el enfoque propuesto para predecir patrones
de uso sobre dispositivos moviles. El enfoque plantea llevar a cabo la pre-
diccion mediante un proceso de aprendizaje de maquina que involucra dos
pasos: transformacion de datos y aprendizaje.
El primero implica la transformacion de informacion, 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 realizo un estudio sobre estas librerıas, y
se evaluo la forma mas eficiente y extensible de realizar este modulo.
El segundo modulo implica la construccion de modelos de prediccion con
tecnicas de regresion, clasificacion y redes neuronales. La construccion o en-
trenamiento de estos modelos se hace en un proceso interactivo con el usuario,
que involucra una configuracion inicial de los datos, la eleccion y ejecucion
de los diferentes algoritmos, los resultados arrojados por estos (metricas y
configuraciones iniciales) y la opcion de realizar pruebas particulares sobre
el modelo entrenado.
Para facilitar la interaccion con el usuario se implemento 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 metricas arrojadas con graficos e informacion
49
CAPITULO 4. ENFOQUE E IMPLEMENTACION 50
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 como 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 calculo. 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 telefonos celulares, en donde tenemos informacion sobre la
marca, el modelo, el tamano 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 , Pantal la , Prec io
Motorola , G4, 5 . 5 ’ , 3 0 0 0 . 0 0
CAPITULO 4. ENFOQUE E IMPLEMENTACION 51
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 estan compuestos los archivos
entregados para la realizacion de este trabajo, con esto describiremos las
columnas y la informacion 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 formato CSV, 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 ningun dato util
para este trabajo, el segundo valor de la tabla es un timestamp 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 ocurrio determinado
evento. Esta informacion suele presentarse en un formato consistente, lo que
permite la facil comparacion entre dos diferentes registros y el seguimiento
de avances en el tiempo. Por ejemplo:
2015−04−08T02 :43 :41 .796+0100
El anterior timestamp denota que ese dato se capturo un 8 de abril de
2015 a las 2 horas 43 minutos y 41 segundos con 796 milesimos en una franja
horaria a mas una hora del meridiano de Greenwich, esta informacion si es
muy importante y posteriormente se describira como sera su transformacion
en los archivos que serviran como entrada para el modulo de prediccion de
datos.
Los primeras tres columnas mencionadas tienen los mismos datos en todo
momento, mientras que la cuarta y quinta columna cambia dependiendo del
registro, y estas dos columnas son las que mas interesan ya que brindan
informacion importante sobre el telefono, como por ejemplo, la configuracion
CAPITULO 4. ENFOQUE E IMPLEMENTACION 52
del volumen, el porcentaje de la baterıa, el voltaje en el cual esta trabajando
el dispositivo, en el caso del Wifi brinda informacion sobre si esta activado,
si esta escaneando o si esta conectado a alguna red, tambien informa sobre
la potencia de senal de esa red. A continuacion se ilustran algunas lineas a
modo de ejemplo.
5;37917868;2013−04−24T21 :21 :37 .113 −0700 ;
system | manufacturer ; samsung
Por ejemplo, en el codigo mas arriba podemos ver que en la columna
cuatro el indicador del dato es system|manufacture esto dignifica que el valor
en la columna cinco brinda la informacion de fabricante del dispositivo, en
este caso, Samsung. Por supuesto esta informacion es totalmente irrelevante
para el proposito de este trabajo, es decir, saber que el telefono es fabricado
por Samsung no nos aporta ningun dato concreto acerca del comportamiento
del mismo.
106942;72412909;2013−04−25T06 :56 :32 .154 −0700 ;
w i f i | scan | c7e300f16e2032ed8493c1a6e2249e7cc31acc25 | l e v e l ;−82
En el ultimo ejemplo, se puede observar otra estructura en la cuarta
columna ya que se observan mas indicadores que en la linea anterior. En este
caso, tenemos primero el indicador wifi, el segundo indicador es scan, eso
significa que en este caso nos brinda la informacion de que esta escaneando
redes para conectarse, el tercer valor de este indicador es un valor encriptado
que corresponde al SSID (Service set identifier) de la red, siendo esto ultimo
el nombre de la red por el cual se la identifica, la razon por la que este dato
esta encriptado es para preservar la informacion sensibles de las personas que
se ofrecieron para el analisis, otro ejemplo de datos encriptados es el nombre
de las aplicaciones. El cuarto indicador de esta columna es level por lo que
el calor de la quinta columna representa el nivel de intensidad de esa red wifi.
4.1.2. Datos Transformados
El principal objetivo de este modulo es traducir los datos a partir del for-
mato que se ilustro anteriormente en datos que sean aceptados como entrada
CAPITULO 4. ENFOQUE E IMPLEMENTACION 53
para los algoritmos que se explicaran en el modulo de prediccion de datos.
Para esto debemos generar un nuevo archivo con la misma informacion pero
de una forma mas completa, la forma actual son lineas en orden cronologi-
co con indicadores completamente diferentes entre si, es decir, mientras una
linea ofrece cierta informacion acerca del Wifi, por ejemplo si esta activado,
otra linea ofrece el voltaje con el cual esta trabajando el dispositivo en ese
momento, el nuevo archivo tendra toda la informacion acerca del dispositivo
que nos interese analizar posteriormente, para cada una de las lineas existen-
tes en el archivo original. Toda la informacion que nos interese se refiere a
que hay muchas lineas que no van a tener el interes de ser analizadas como
se aclaro en los anteriores ejemplos, hay lineas que no ofrecen datos relevante
para este estudio y por lo tanto no seran contempladas en el proceso.
Ejemplo A continuacion se ilustra un breve ejemplo de unas lineas en el
formato original y en el formato del archivo generado.
2013−04−24T21 :54 :14 .925 −0700 ; w i f i | s t a t e ; enabled
2013−04−24T21 :54 :34 .541 −0700 ; power | batte ry | l e v e l ; 84
2013−04−24T21 :54 :37 .117 −0700 ; system |memory | f r e e ;98828kB
2013−04−24T21 :55 :01 .623 −0700 ; w i f i | s t a t e ; d i s ab l ed
2013−04−24T21 :55 :23 .213 −0700 ; power | batte ry | l e v e l ; 83
Las lineas ilustradas anteriormente es una muy breve extraccion de los
archivos ofrecidos por la catedra, para fines practicos se han suprimido las
dos primeras columnas ya que son irrelevantes para el ejemplo.
La primer linea nos da informacion sobre el wifi, especıficamente indica
que la conexion esta activada dispuesta a escanear redes. La segunda linea
indica que el nivel de baterıa actual es de ochenta y cuatro por ciento. La
tercer linea nos indica cuanta memoria RAM se encuentra disponible. La
cuarta linea indica que el wifi se desactivo y finalmente, la ultima linea in-
dica que la baterıa ahora se encuentra en el ochenta y tres por ciento de su
capacidad. Como se menciono anteriormente las lineas no son uniformes, en
este caso tenemos tres tipos de indicadores diferentes, dos nos brindan infor-
macion acerca del porcentaje restante de baterıa, dos nos indican el estado
CAPITULO 4. ENFOQUE E IMPLEMENTACION 54
del sensor wifi y el restante informacion sobre la memoria y ası pasa con el
resto de la informacion. El objetivo es generar un archivo uniforme como el
ejemplo a continuacion.
date ; w i f i o n o f f ; bat te ry ; memory free ;
2013−04−24T21 : 54 : 14 . 925 −0700 ; 1 ; 0 ; 0
2013−04−24T21 : 54 : 34 . 541 −0700 ; 1 ; 84 ; 0
2013−04−24T21 :54 :37 .117 −0700 ;1 ; 84 ; 98828
2013−04−24T21 :55 :01 .623 −0700 ;0 ; 84 ; 98828
2013−04−24T21 :55 :23 .213 −0700 ;0 ; 83 ; 98828
En el anterior codigo se observa el nuevo archivo, notese que el archivo
tiene una cabecera, esto es importante para el modulo de prediccion ya que
permite la seleccion de indicadores con la cual queremos que estoy algoritmos
procesen la informacion, tambien se observa que cada linea tiene toda la
infraccion sobre todos los indicadores en todo momento, en varias lineas se
observa que el porcentaje de baterıa es 84, esto se debe a que en todas esas
lineas ese valor no ha variado, lo mismo con la antena wifi, en las primeras
tres lineas se observa que esta activado y en las ultimas dos no.
En la primer linea, sin contar la cabecera del archivo, se nota que battery
y memory_free tienen como valor cero, eso sucede por que no llego a encon-
trar un valor valido para estos dos indicadores entonces como defecto propone
este valor, en la segunda linea se observa que el valor cambio a 84 eso para
porque en esa linea ya encontro el indicador battery con el valor 84 pa-
ra ingresar en esa columna, el valor de la baterıa permanecera en 84 hasta
encontrar otro indicador battery con un valor diferente, esto pasa en la li-
nea cinco y por eso el nuevo valor ahora es 83. Esto sucede para todos los
indicadores que se desean formatear.
La nueva estructura contiene toda la informacion en todo momento, tam-
bien se observa que tiene la misma cantidad de lineas que el archivo original,
esto no siempre va a ser ası ya que cada algoritmo necesita diferentes can-
tidad de datos, por ejemplo el algoritmo de sobre redes neuronales y series
de tiempo necesita una cantidad de datos por un cierto intervalo de tiempo,
por ejemplo, tres registros cada una hora. Para lograr esto se realizo otro
CAPITULO 4. ENFOQUE E IMPLEMENTACION 55
Figura 4.1: Diagrama de clases del patron Decorator1
tratamiento en la formacion de estos archivos.
4.1.3. Patron Decorator
El patron Decorator permite anadir responsabilidades a objetos concretos
de forma dinamica. Los decoradores ofrecen una alternativa mas flexible que
la herencia para extender las funcionalidades.
A veces se desea adicionar responsabilidades a un objeto pero no a toda la
clase. Las responsabilidades se pueden adicionar por medio de los mecanismos
de Herencia, pero este mecanismo no es flexible porque la responsabilidad es
adicionada estaticamente. La solucion flexible es la de rodear el objeto con
otro objeto que es el que adiciona la nueva responsabilidad. Este nuevo objeto
es el Decorator.
Como podemos observar en la figura 4.1, la clase Decorator hereda de la
misma clase que el componente que se quiere decorar. Ası, cada decorador
es capaz de encapsular una instancia de cualquier otro objeto que herede del
CAPITULO 4. ENFOQUE E IMPLEMENTACION 56
Figura 4.2: Estructura de los objetos en memoria del patron Decorator
componente comun, bien un componente concreto u otro decorador.
La encapsulacion puede ser iterativa, de modo que un componente con-
creto puede ser encapsulado por un decorador, que a su vez puede ser en-
capsulado por otro decorador y ası sucesivamente, un ejemplo ilustrado es la
figura 4.2 anadiendo nueva funcionalidad en cada uno de los pasos. El patron
Decorator sustituye la herencia por un proceso iterativo de composicion.
El objeto con el que el objeto cliente interactuara sera aquel que se en-
cuentre en la capa mas externa (en este caso, DecoratorC ), que se encargara
de acceder a los objetos contenidos e invocar su funcionalidad, que sera de-
vuelta a las capas exteriores.
Para comenzar, por tanto, debemos tener claros los siguientes conceptos
1https://danielggarcia.wordpress.com/2014/03/10/patrones-estructurales-iii-patron-
decorator/
CAPITULO 4. ENFOQUE E IMPLEMENTACION 57
sobre este patron:
Un decorador hereda de la misma clase que los objetos que tendra que
decorar.
Es posible utilizar mas de un decorador para encapsular un mismo
objeto.
El objeto decorador anade su propia funcionalidad, bien antes, bien
despues, de delegar el resto del trabajo en el objeto que esta decorando.
Los objetos pueden decorarse en cualquier momento, por lo que es
posible decorar objetos de forma dinamica en tiempo de ejecucion.
La razon por la que la clase Decorator hereda de la misma clase que el
objeto que tendra que decorar no es la de anadir funcionalidad, sino la de
asegurarse de que ambos comparten el mismo tipo y puedan intercambiarse:
un decorador podra sustituir a un objeto decorado.
4.1.4. Patron Decotator aplicado al problema
A continuacion se explicara la implementacion de este modulo, el cual
como se comento en secciones previas predomina el patron decorator, se de-
talla el diagrama de clases y se explicara brevemente como se comporta este
diseno, finalmente se explicara alguno de los decorators implementados para
demostrar el comportamiento que tiene cada uno, comparando sus similitu-
des y diferencias.
En las figuras 4.3 4.4 4.5 esta detallado todo el diagrama de clases que
componen este modulo. Se realizo la separacion en tres imagenes debido a lo
amplio que es el mismo.
Como se observa el diseno es muy similar al detallado en el ejemplo donde
se explico el patron decorator, la clase ReaderConcret es la clase que se va a
decorar mientras que los decorators son todas las clases que estan en la parte
inferior del diagrama. La clase anteriormente nombrada es la clase encargada
de parsear en el archivo resultante los datos mınimos que contendran (como
CAPITULO 4. ENFOQUE E IMPLEMENTACION 58
Figura 4.3: Diagrama de clases. Parte 1
Figura 4.4: Diagrama de clases. Parte 2
Figura 4.5: Diagrama de clases. Parte 3
CAPITULO 4. ENFOQUE E IMPLEMENTACION 59
la hora y el dia), mientras que los decorator parsean datos adicionales que
uno desea agregar. El metodo a decorar es read(self,row).
Otras de las principales ventajas que ofrece el patron Decorator es que
la generacion de este segundo archivo debe ser totalmente configurable, por
ejemplo, tener la posibilidad de generar un archivo con datos como el wifi,
la baterıa y la memoria, y otro archivo en donde queremos tener los mismos
datos pero ademas agregar datos sobre el volumen del dispositivo, datos del
bluetooth, y de esta manera generar los archivos con innumerables configu-
raciones por lo cual se debe escoger un patron de diseno que contemple todas
estas caracterısticas. Y para esto se decidio escoger el patron Decorator.
A continuacion se detalla el codigo del decorator AirplaneDecorator. Este
decorator agrega al archivo un 1 si el dispositivo esta en modo avion, o un 0
si no lo esta.
class AirplaneDecorator ( ReaderDecoratorAbs ) :
def i n i t ( s e l f , r eader ) :
r eader . g e t f i r s tRow ( ) . append ( ” a i r p l a n e o n o f f ” )
s e l f . a irplaneOn = 0
ReaderDecoratorAbs . i n i t ( s e l f , r eader )
def read ( s e l f , row ) :
l i s t = s e l f . r eader . read ( row )
i f ” a i r p l a n e ” in row [ 3 ] :
i f ”on” in row [ 3 ] :
s e l f . a irplaneOn = 1
e l i f ” o f f ” in row [ 3 ] :
s e l f . a irplaneOn = 0
l i s t . append ( s e l f . a irplaneOn )
return l i s t
En el constructor se puede observar como se agrega el encabezado de este
decorator, para este caso se utiliza el String airplane_on_off de esta manera
esta columna sera reconocida en el modulo de prediccion de datos. Luego
vemos que reimplementa el metodo read(self,row) y precisamente en la
CAPITULO 4. ENFOQUE E IMPLEMENTACION 60
linea 8(list = self.reader.read(row)) vemos como la variable list se
genera con la clase principal ReaderConcret ası como tambien con los demas
decorators que esten antes de este. A continuacion vemos como le agrega a la
lista el valor descrito anteriormente, para esto reconoce en el archivo original
csv la palabra airplane en la columna tres, y luego en la columna cuatro
compara que el valor sea on o off para agregar un 1 o 0 respectivamente. Por
ultimo retorna la lista.
Para culminar este modulo podemos decir que el comportamiento de los
demas decorator es muy similar al explicado anteriormente, la diferencia radi-
ca en las diferentes palabras a reconocer y los diferentes valores a almacenar,
en algunos casos se almacena un 1 o un 0 determinando si un sensor esta
encendido o no, como puede ser el bluetooth, wifi, modo avion, datos movi-
les, o en otros casos se puede almacenar un valor numerico, por ejemplo en
el caso de los decorators respecto al volumen o nivel de brillo de la pantalla,
estos almacenaran el valor de volumen o brillo que tenıa el dispositivo en ese
momento.
4.2. Modulo de prediccion de datos
Este modulo implica la construccion de modelos de prediccion con tecnicas
de regresion, clasificacion y redes neuronales (prediccion en series de tiempo).
La seleccion, entrenamiento y prediccion de estos modelos se hace en un
proceso interactivo al usuario, que involucra desde la configuracion inicial de
los datos, teniendo la posibilidad de importarlo y seleccionar del conjunto
aquellas caracterısticas de su interes; la eleccion del modelo a entrenar hasta
la posibilidad de predecir un resultado dado.
El desarrollo comenzo por establecer una arquitectura Cliente-servidor
en donde se hizo uso del microframework Flask 2 de Python para dicha co-
municacion, el cual mediante el esquema de rutas permite realizar peticiones
RESTful3 con URLs sencillas. El mismo permite establecer una sesion de co-
2http://flask.pocoo.org/3Servicio web que implementa la arquitectura REST (Representational State Transfer)
CAPITULO 4. ENFOQUE E IMPLEMENTACION 61
municacion interactiva entre la aplicacion de un usuario. Estas URLs tienen
asociados una funcion en Python que segun los parametros que se envıen,
trata y responde a las mismas.
El cliente puede realizar peticiones asignando las siguientes rutas:
Ruta Funcion
/ Inicia la pagina Html
/csvdata Alta y consultas de archivos CSV
/data/<dataname> Lectura de archivo CSV especifico
/ml/cls/<action> Acciones sobre algoritmos de Clasificacion
/ml/regression/<action> Acciones sobre algoritmos de Regresion
/ml/neuralnetwork/<action> Acciones sobre algoritmos de Redes Neuronales
/mlmodel/list/<type> Lista de modelos implementados
Tabla 4.2: Rutas de peticiones.
Por ejemplo en la Tabla 4.3 se muestra las acciones que se definieron sobre
modelos:
ejemplo: @app.route(’/ml/regression/<action>’)
<action> Descripcion
create Inicializa el modelo con los hiperparametros predefinidos
train Realiza el entrenamiento del modelo con los datos seleccionados
predict Predice con datos reales sobre el modelo entrenado
predictViz Consultas de datos pare renderizar graficos y tablas
Tabla 4.3: Acciones sobre el modelo
Los mensajes enviados dentro de la aplicacion utilizan el formato JavaS-
cript Object Notation (JSON) con la informacion del mensaje y la relevante
para la conexion e identificacion del remitente.
Una vez establecida la conexion al servidor, se provee de una interfaz al
usuario para modelar y administrar los algoritmos de Machine Learning que
CAPITULO 4. ENFOQUE E IMPLEMENTACION 62
se desea entrenar y evaluar. Esta se ha implementado a traves de una apli-
cacion Web utilizando HTML, CSS y bibliotecas JavaScript. Las bibliotecas
basicas que se utilizaron fueron las siguientes:
1. Bootstrap4: Provee herramientas para el diseno de la interfaz grafica y
la visualizacion de componentes visuales de los sitios.
2. ReactJS5: Es una librerıa basada en componentes, disenado para crear
pantallas simples en cada estado de la herramienta, encargandose de
actualizar y renderizar de forma eficiente los componentes en cuestion
cuando cambian los datos. Un algoritmo detecta que parte se cambio
y la actualiza.
3. RequireJS6: Ofrece una manera de modularizar codigo JavaScript y
tambien de cargar asıncronamente esos modulos, de manera que solo
se tenga que cargar los modulos necesarios para la pagina en la que se
encuentre el usuario.
La figura 4.6 muestra un ejemplo de la interaccion de los diferentes com-
ponentes de la aplicacion en peticion del usuario. En donde se puede observar
a modo ilustrativo como es la interaccion cliente-servidor.
El modelado de las clases que tratan los diferentes algoritmos se realizo
siguiendo una implementacion orientada a objetos y basado en patrones de
diseno (Figura 4.7). Cada parte seran desglosadas en las subsecciones si-
guientes correspondientes a cada modelo. Como se observa, a nivel general
se definio la clase abstracta BaseModel la cual define los metodos comunes
a todos las clases, y que cada modelo la implementa de forma diferente y
acorde a los parametros y configuracion de cada una.
4https://github.com/twbs/bootstrap5https://reactjs.org/6http://requirejs.org/
CAPITULO 4. ENFOQUE E IMPLEMENTACION 63
Figura 4.6: Ejemplo de interaccion
4.2.1. Implementacion Regresion Lineal
Las clases Regression y LinearRegression son las involucradas en la
implementacion de los metodos del modelo. La primera obtiene la definicion
de la clase LinearRegression7 del modulo sklearn.linear_model y la se-
gunda se encarga de implementar los metodos abstractos definidos en la clase
abstracta para entrenamiento y prediccion de los datos.
Metodo train: Primero toma el conjunto de datos y lo particiona en
datos de Test y Entrenamiento, el porcentaje de particion se puede ajustar
como configuracion del algoritmo, pero en la implementacion se opto por 70 %
para entrenamiento y 30 % para test. Paso siguiente, con los datos tomados
para el entrenamiento se entrena el modelo llamando a la funcion fit. Luego
se procede a tomar las metricas correspondientes del entrenamiento como
7http://scikit-learn.org/stable/modules/generated/sklearn.linear_model
CAPITULO 4. ENFOQUE E IMPLEMENTACION 64
Figura 4.7: Diagrama de Clases implementacion de Algoritmos
medicion del mismo, devolviendo toda esta informacion al navegador, como
ası tambien a un archivo de texto.
Metodo Predict: Una vez entrenado el modelo, el usuario solicita me-
diante una peticion desde el navegador un resultado indicando datos carac-
terısticos que influyen en lo que desea predecir. Esto se da llamando al la
CAPITULO 4. ENFOQUE E IMPLEMENTACION 65
funcion predict que toma las caracterısticas indicadas y retorna el valor pre-
dicho con el modelo entrenado previamente.
4.2.2. Implementacion Clasificacion
Muy similar al anterior, se desarrollo una clase por cada algoritmo de
clasificacion. Estas clases solo hacen la conexion con el modelo especıfico
que las representa: KNNClassifier8, LogisticRegression9, NBayesClassifier10,
SVMClassifier11
La clase Classifier es la encargada de implementar los metodos de en-
trenamiento y prediccion, haciendo uso de las funciones fit y predict aplicados
al conjunto de datos de cada uno de los modelos.
4.2.3. Implementacion Red Neuronal Recurrente
Para la implementacion del modelo Neural Network, se considero la va-
riante de LSTM [22], la cual es un tipo de red neuronal recurrente aplicado
en este caso a series de tiempo.
A continuacion se detalla para cada etapa del modelado, como se imple-
mento segun el punto de vista de los pasos a seguir desde la carga de datos
hasta el analisis de resultados.
Fases del modelado
Carga y formato de datos: Se toma el conjunto de datos que se
selecciono en la pantalla, si bien se diferencian entre el dato a predecir
y las caracterısticas a tomar en cuenta que afectarıan al consumo de la
baterıa, luego se unen en un solo dataset concatenando la caracterıstica
a predecir en la primera columna del mismo (para un mejor manejo de
los datos).
8http://scikit-learn.org/stable/modules/generated/sklearn.neighbors.KNeighborsClassifier.html9http://scikit-learn.org/stable/modules/generated/sklearn.linear model.LogisticRegression.html
10http://scikit-learn.org/stable/modules/generated/sklearn.naive bayes.GaussianNB.html11http://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html
CAPITULO 4. ENFOQUE E IMPLEMENTACION 66
Adicionalmente y previo al entrenamiento se generan graficos de ca-
da una de las caracterısticas para analizar visualmente la sucesion de
valores para cada uno y a priori poder identificar si existe o no una
correlacion entre cada una de las caracterısticas con respecto a la Ba-
terıa. Dichos graficos muestran la curva que van tomando los valores a
traves de un intervalo fijo de tiempo (tomando el conjunto total de los
datos).
Para una mayor eficiencia en el procesamiento, se convirtio todos los
valores al tipo float32, seguido se normalizo el conjunto de datos uti-
lizando la funcion MinMaxScaler, para que cada valor se encuentre
formateado entre los valores 0 y 1, tomando como mınimo 0 y maximo
1, y valores intermedios como una funcion de estos.
Una vez normalizado se procede a transformar el conjunto de datos ha-
ciendo uso de la funcion series_to_supervised(), que toma una serie
temporal univariada o multivariada y la enmarca como un conjunto de
datos de aprendizaje supervisado12. Esta es una herramienta util ya
que permite explorar diferentes encuadres de un problema de series de
tiempo con algoritmos de aprendizaje automatico para ver cual podrıa
resultar en modelos de mejor rendimiento.
La funcion toma cuatro argumentos:
data: Secuencia de observaciones como una lista o matriz 2D NumPy.
n_in: Numero de observaciones como entrada (X). Los valores pueden
estar entre [1..len (data)] Opcional. El valor predeterminado es 1.
n_out: Numero de observaciones como salida (y). Los valores pueden
estar entre [0..len (data) -1]. Opcional. El valor predeterminado
es 1.
12https://machinelearningmastery.com/convert-time-series-supervised-learning-
problem-python/
CAPITULO 4. ENFOQUE E IMPLEMENTACION 67
dropnan: Boolean si se deben eliminar o no las filas con valores NaN.
Opcional. El valor predeterminado es True.
La funcion devuelve un valor unico: El nuevo conjunto de da-
tos se construye como un DataFrame13 (Pandas), con cada columna
adecuadamente nombrada tanto por numero de variable como por pa-
so de tiempo. Esto le permite disenar una variedad de problemas de
pronostico de tipo de secuencia de paso de tiempo diferentes a partir
de una serie temporal univariada o multivariante determinada.
Una vez devuelto el nuevo conjunto de datos se puede decidir como
dividirlo en componentes X e Y para el aprendizaje supervisado. De
este, las variables transformadas que no se quieren predecir, se elimi-
nan, dejando solo la columna correspondiente al valor de la Baterıa,
definiendose como la variable Y al momento de separar y cortar los
datos, tanto para el train como para el test (la baterıa en secuencia
de tiempo tomando la ultima columna en funcion de la anterior, para
una cantidad de pasos de tiempo indicada).
Definicion el modelo: Paso siguiente es disenar la red. En este punto
se puede aplicar diferentes variantes en cuanto al ancho el largo de
la red, cantidad de neuronas de cada capa, funciones de activacion
como tambien las metricas que se utilizan para comparar entre cada
repeticion (epoch) la eficiencia del entrenamiento con el conjunto de
datos.
Ejemplo: Se define una capa LSTM con 50 neuronas en la primera capa
oculta y 1 neurona en la capa de salida, haciendo uso de la funcion de
activacion dependiendo el tipo de modelado sigmoid.
# des ign network
model = Sequent i a l ( )
model . add (LSTM(50 ) )
13https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.html
CAPITULO 4. ENFOQUE E IMPLEMENTACION 68
model . add ( Dense ( 1 ) )
model . add ( Act ivat ion ( ’ sigmoid ’ ) )
Compilacion el modelo: La compilacion requiere una serie de parame-
tros que se deben definir, especıficamente, el algoritmo de optimizacion
que se utiliza para capacitar a la red y la funcion de perdida utilizada
para evaluar la red que se minimiza mediante el algoritmo de optimi-
zacion. Por ejemplo, a continuacion se presenta un caso en el que se
compila un modelo definido y se especifica el algoritmo de optimiza-
cion del descenso de gradiente estocastico (sgd) y la funcion de perdida
cuadratica media mean squared error, destinado a un problema de re-
gresion.
model . compi le ( opt imize r =’sgd ’ ,
l o s s =’ mean squared error ’ ,
met r i c s =[ ’ accuracy ’ ] )
El tipo de problema de modelado predictivo impone restricciones en el
tipo de funcion de perdida que se puede usar. Por ejemplo, a continua-
cion se muestran algunas funciones de perdida estandar para diferentes
tipos de modelos predictivos14:
Regression mean_squared_error
Clasificacion binaria binary_crossentropy
Clasificacion Multiclase categorical_crossentropy
Tabla 4.4: Funciones de perdidas
Los algoritmos de optimizacion mas comunmente utilizados debido a
su rendimiento generalmente mejor son los que muestra la Tabla 4.5
Finalmente, tambien puede especificar metricas para recopilar al ajus-
tar el modelo ademas de la funcion de perdida. En general, la metrica
14https://machinelearningmastery.com/5-step-life-cycle-long-short-term-memory-
models-keras/
CAPITULO 4. ENFOQUE E IMPLEMENTACION 69
Descenso de gradiente estocastico
ADAM
RMSprop
Tabla 4.5: Algoritmos de optimizacion
adicional mas util para recopilar es la precision (accuracy) para los
problemas de clasificacion.
Ajuste del modelo: Paso siguiente hacer el llamado fit()15 del modelo
secuencial de keras, el entrenamiento de la red dado los datos de train
X e Y, ademas de definir el conjunto de datos de test X e Y.
Ahora por ejemplo podemos definir y ajustar nuestro modelo LSTM.
# f i t network
h i s t o r y = model . f i t ( tra in X , t ra in y ,
epochs =50, b a t c h s i z e =72,
s h u f f l e=False )
La red se entrenara usando el algoritmo de backpropagation y se opti-
mizara con el algoritmo de optimizacion y la funcion de perdida espe-
cificadas al compilar el modelo.
Se requiere que la red este entrenada para un numero especıfico de
epocas (epochs) o exposiciones al conjunto de datos de capacitacion.
Cada epoca se puede dividir en grupos de pares de patrones de entrada-
salida llamados lotes (batch).
Al terminar el entrenamiento se devuelve un objeto de historial que
proporciona un resumen del rendimiento del modelo durante el entrena-
miento. Esto incluye tanto la perdida como cualquier metrica adicional
especificada al compilar el modelo, registrada para cada epoca.
Evaluacion del modelo: Por ultimo se procede a evaluar el modelo,
15https://keras.io/models/sequential/
CAPITULO 4. ENFOQUE E IMPLEMENTACION 70
si es representativo con respecto al conjunto de datos de test y si la
correlacion indica que fue ası. Una vez que el modelo este en forma,
podemos pronosticar todo el conjunto de datos de prueba.
Se combina el pronostico con el conjunto de datos de prueba y se in-
vierte la escala. Tambien se invierten escalas en el conjunto de datos
de prueba con los numeros de prediccion esperados.
Con las previsiones y los valores reales en su escala original, se puede
calcular una puntuacion de error para el modelo. En este caso, se calcula
el error cuadratico medio de raız (RMSE ) que da error en las mismas
unidades que la variable misma.
4.2.4. Hiperparametros de los modelos
A traves del uso de metricas se adquiere una idea estimativa del desem-
peno del clasificador frente al conjunto de datos de entrenamiento, sin em-
bargo, podrıa resultar util conocer el comportamiento general del algoritmo,
contrastando cada uno de los valores reales del atributo clase con los valores
predichos por el clasificador, y obtener ası una vista exacta de la manera en
que el clasificador se ajusta a los datos.
Son muchas las formas de definir los hiperparametros de los modelos,
desde, por ejemplo en LTSM, la cantidad de neuronas, los algoritmos de
perdidas para eficiencia, hasta la cantidad de veces que se itera sobre el
conjunto de datos. Esto se vera con mayor claridad en la seccion resultados
de las pruebas donde se tomaron en cuenta estos aspectos, comparando los
resultados arrojados con las diferentes instancias de configuraciones.
4.2.5. Funciones de la Herramienta
Descripcion de la funcionalidad con algunas pantallas basicas de las dife-
rentes acciones que permite realizar la aplicacion.
La aplicacion cuenta con las siguientes funcionalidades indispensables pa-
ra su operacion:
CAPITULO 4. ENFOQUE E IMPLEMENTACION 71
Carga de datos (formato CSV 16) y visualizacion de datos
El Usuario puede cargar diferentes archivos de datos a analizar, las unicas
restricciones son: Archivo en formato CSV, separando cada elemento por ‘,’
(coma) y se debe especificar la cabecera de las diferentes caracterısticas para
una facil lectura por medio de las bibliotecas para tratamiento de estos datos
de python(Numpy).
La pantalla de la Figura 4.8 permite la agregar, seleccionar y visualizar
el conjunto de datos seleccionado. Se puede previsualizar en todo momento
(antes y despues de la subida del archivo) los registros, el mismo se muestra
en forma de tabla, abarcando la totalidad de los datos, con la opcion de
busqueda sobre todo el conjunto.
Figura 4.8: Carga y visualizacion de datos
Adicionalmente se puede visualizar la distribucion de los datos del ar-
chivo, con tablas y graficos de barra, torta, linea, entre otros. Por ejemplo
en la Figura 4.9 se genero la serie de tiempo de porcentaje de baterıa y la
temperatura de la misma.
Eleccion de modelo de prediccion y caracterısticas
Esta seccion (Figura 4.10) le permite al usuario Seleccionar el Modelo de
16Comma Separated Value
CAPITULO 4. ENFOQUE E IMPLEMENTACION 72
Figura 4.9: Grafico sobre disposicion de los datos
Figura 4.10: Seleccion de Modelo
prediccion de los datos. Siguiendo los siguientes pasos:
1. Seleccion de ıtem entre modelos: Clasificacion, Regression o Neu-
ralNetwork.
2. Seleccionar Algoritmos:
Clasificacion: KNN, Bayes, SVM
Regresion: Linear, Logistic
CAPITULO 4. ENFOQUE E IMPLEMENTACION 73
NeuronalNetwork: LSTM
3. Seleccion de Datos: En la lista se muestra los dataset cargados por
el usuario con el cual se entrenara el modelo.
4. Seleccion de propiedades: En este apartado se selecciona la categorıa
del conjunto de datos que se quiere predecir (Target), y ademas las
caracterısticas que seran utilizadas como posibles influyentes en el dato
a predecir (Features).
Visualizacion del resultado del entrenamiento y la prediccion del
modelo
Una vez entrenado el modelo, se visualiza en Vista Prediccion el resultado
grafico de la funcion validacion (para cada caracterıstica seleccionada 4.11)
Figura 4.11: Grafico resultado
En la pestana Metricas (Figura 4.12) se guardan las metricas historicas
de cada entrenamiento, con las caracterısticas, metricas y ajustes de los al-
goritmos en cuestion para la valoracion y analisis individual por parte del
usuario.
CAPITULO 4. ENFOQUE E IMPLEMENTACION 74
Estas metricas de evaluacion incluyen: el coeficiente de correlacion de
Pearson (CC) y la raız del error cuadratico medio (RMSE). Es conveniente
trasladar el analisis a la mayor cantidad de metricas posibles, ya que un
mismo indicador podrıa arrojar valores cercanos entre un algoritmo y otro
favoreciendo equivocadamente a uno de ellos, error que podrıa notarse al
compararlos simultaneamente con otras metricas.
Figura 4.12: Metricas resultantes del entrenamiento
Prediccion sobre modelo entrenado
En pestana Predecir 4.13 el usuario puede realizar una prediccion a partir del
modelo entrenado con datos de prueba para una evaluacion intuitiva. De esta
forma, de modo rapido se puede tener una visibilidad de que tan acertado
puede estar la prediccion con lo real.
Persistencia y analisis de resultados
Por ultimo la herramienta genera por cada entrenamiento de los modelos,
archivos con los resultados de las metricas, como ası tambien graficos de la
representacion de las distribuciones de los datos del conjunto. Esto ayuda a
CAPITULO 4. ENFOQUE E IMPLEMENTACION 75
Figura 4.13: Prediccion interactiva
la posterior comparacion de los modelos y el analisis que se llevara a cabo en
el capıtulo siguiente.
Capıtulo 5
Evaluacion
Este capıtulo esta dedicado a plasmar todas las evaluaciones realizadas de
todos los algoritmos que se explicaron en el capitulo 2. Para esto se ilustran
tablas y se realizaran comparaciones sobre los mismos. El objetivo es poder
realizar una evaluacion para posteriormente exponer una conclusion sobre el
trabajo y el estudio realizado.
Se han realizado numerosas pruebas teniendo en cuenta algoritmos de
clasificacion y regresion, ası como tambien analisis de series de tiempo con el
algoritmo de Red Neuronal LSTM.
Para los algoritmos de clasificacion y regresion, se han realizado pruebas
con todos los indicadores presentes en los archivos, posteriormente se calculo
la matriz de correlacion de Pearson y se volvieron a realizar las pruebas
seleccionando los 16 con correlacion mas alta con respecto al indicador de
la baterıa para luego comparar resultados. En cuanto al modelo de redes
neuronales, se realizaron numerosas pruebas con multiples configuraciones
en la red, en este caso tomando los 7 indicadores con mayor correlacion.
5.1. Correlacion de los indicadores
Para determinar los indicadores que tienen mas impacto, o que estan mas
relacionados con el indicador de la baterıa, se calcularon matrices de corre-
lacion de Pearson para cada uno de los archivos a analizar, cada archivo
76
CAPITULO 5. EVALUACION 77
Figura 5.1: Graficos de correlacion de los archivos tratados
CAPITULO 5. EVALUACION 78
Figura 5.2: Correlacion promedio entre el porcentaje de baterıa y demas
indicadores
contiene logs para un usuario distinto, en la seccion 5.2 se discutira con mas
detalle el formato y la informacion de estos archivos, tambien se aprecia en
la figura 5.1 en donde los valores en rojo son positivos y azul negativos. Una
vez creada estas matrices se analizaron todos los indicadores y se seleccio-
naron aquellos que al menos en uno de los archivos tenga una correlacion
dentro del intervalo [-0,05:0,05]. Luego se realizo un promedio de correlacion
entre los indicadores y se compararon con el intervalo mencionado anterior-
mente. Como resultado de esto se obtuvo 16 indicadores. En la tabla 5.1 se
puede observar esta matriz y en color verde los indicadores resultantes de
este analisis para realizar las pruebas. Ası mismo en la figura 5.2 se puede
apreciar el grafico de correlacion, tomando el modulo de los valores y de esta
manera tener de forma simple la relacion de los indicadores con el indicador
de baterıa.
5.2. Archivos contemplados para la evalua-
cion
En la tabla 5.2 se muestra la descripcion y la cantidad de lıneas que
contiene cada uno de los archivos que se contemplaron para el entrenamiento
y evaluacion de cada uno de los modelos, resultado de la ejecucion del modulo
CAPITULO 5. EVALUACION 79
Atributos File1 File2 File3 File4 File5 Promedio
battery volt 0.89 0.94 0.93 0.85 0.92 0.906
disconected -0.32 -0.6 -0.3 -0.32 -0.4 0.388
ac 0.32 0.6 0.31 0.33 0.36 0.384
battery temp -0.31 -0.33 -0.29 -0.43 -0.34 0.34
hour 0.06 -0.21 0.56 -0.26 -0.45 0.308
wifi -0.16 0.3 0.014 0.081 0.16 0.143
wifi scanning 0.15 0.27 0.06 0.012 0.13 0.1244
screen brightness -0.17 0.19 -0.033 0.04 0.16 0.1186
data 0.014 -0.29 0.06 -0.15 -0.0076 0.10432
screen on -0.11 0.12 -0.097 0.11 -0.029 0.0932
system volumen 0.011 0.16 0.15 -0.026 0.029 0.0752
notificacion volumen -0.0024 0.16 0.06 -0.058 0.062 0.06848
music volumen -0.012 0.13 0.06 -0.078 0.048 0.0656
sunday -0.067 0.09 -0.022 0.026 0.061 0.0532
usb 0.016 0.038 -0.033 -0.045 0.12 0.0504
dtmf volumen 0.0044 0.15 0.06 0.019 0.015 0.04968
ringermode vibrate 0.0033 0.16 0.026 0.032 -0.026 0.04946
ringermode normal 0.00011 0.16 0 -0.046 0.033 0.047822
wifi connected -0.0095 0.06 0.05 0.025 -0.027 0.0343
bluetooth -0.029 0.06 0.036 -0.019 -0.027 0.0342
tuesday 0.0099 0.0061 -0.0019 0.013 0.1 0.02618
Tabla 5.1: Correlacion entre el porcentaje de baterıa y demas indicadores.
Ordenados por correlacion promedio
CAPITULO 5. EVALUACION 80
transformador de datos.
Dado que los archivos originales provistos por la Universidad de Cambrid-
ge contenıa millones de lıneas, se procedio a reducir de forma uniforme cada
uno de ellos, teniendo en cuenta que la distribucion de los datos continue
constante en relacion al tiempo.
La generacion de archivos con un numero de filas uniformes para un
determinado intervalo de tiempo nace en la necesidad que tiene el modelo
de red neuronal LSTM aplicado a series de tiempo, en donde se requieren
intervalos de tiempos definidos entre registros.
La eleccion de realizar para cada archivo dos configuraciones (3 lıneas
cada 1 horas o 1 linea cada 1 hora) es justamente para tener diferentes op-
ciones, y determinar si esta configuracion es relevante a la hora de comparar
resultados, y analizar cual de ambas es mas recomendable, etc. No obstante
estos archivos se incluyeron en las pruebas de algoritmos de regresion y cla-
sificacion ya que esta configuracion no es excluyente para estos dos modelos,
tambien es una buena oportunidad al tener mas archivos y resultados que
comparar. Pero para el algoritmo LSTM solo se tuvieron en cuenta aque-
llos cuya configuracion tienen como condicion un numero de lıneas para un
determinado intervalo de tiempo.
5.3. Pruebas realizadas para los Algoritmos
de Clasificacion
Visto como un problema de clasificacion en el cual se trata de predecir un
numero discreto entre el intervalo [0:100] como las posibles clases a predecir,
esto representa el nivel de carga de la baterıa, la resolucion de este problema
para esta clase de algoritmos es clasificar las diferentes entradas entre tantas
clases existentes en el intervalo anteriormente mencionado.
Para los algoritmos de clasificacion se han realizado pruebas en todos
los archivos generados teniendo en cuenta todos los indicadores que posee
cada uno. Posteriormente se aplico el algoritmo que permite cuantificar la
CAPITULO 5. EVALUACION 81
Archivo Tamano lıneas Caracteristicas
File1 3PerHour 4.43 MB 36,353 Datos de FILE1 pero formateados de manera
que se almancenan 3 registros cada una hora.
File1 24PerDay 1.46 MB 12,151 Datos de FILE1 pero formateados de manera
que se almancenan 24 registros por dia.
File1 25 10.6 MB 87,450 Datos de FILE1 pero tomando un registro
cada 1500 registros del archivo original.
File2 3PerHour 6.68 MB 54,637 Datos de FILE2 pero formateados de manera
que se almancenan 3 registros cada una hora.
File2 24PerDay 2.23 MB 18,445 Datos de FILE2 pero formateados de manera
que se almancenan 24 registros por dia.
File2 25 11.9 MB 97,261 Datos de FILE2 pero tomando un registro
cada 1500 registros del archivo original.
File3 3PerHour 6.39 MB 51,977 Datos de FILE3 pero formateados de manera
que se almancenan 3 registros cada una hora.
File3 24PerDay 2.11 MB 17,358 Datos de FILE3 pero formateados de manera
que se almancenan 24 registros por dia.
File3 25 17.9 MB 145,000 Datos de FILE3 pero tomando un registro
cada 1500registros del archivo original.
File4 3PerHour 4.24 MB 35,004 Datos de FILE4 pero formateados de manera
que se almancenan 3 registros cada una hora.
File4 24PerDay 1.45 MB 11,806 Datos de FILE4 pero formateados de manera
que se almancenan 24 registros por dia.
File4 25 18.6 MB 159,268 Datos de FILE4 pero tomando un registro
cada 1500 registros del archivo original.
File5 3PerHour 6.68 MB 53,114 Datos de FILE5 pero formateados de manera
que se almancenan 3 registros cada una hora.
File5 24perDay 2.23 MB 17,818 Datos de FILE5 pero formateados de manera
que se almancenan 24 registros por dia.
File5 25 25.2 MB 204,352 Datos de FILE5 pero tomando un registro
cada 1500 registros del archivo original.
Tabla 5.2: Archivos utilizados
CAPITULO 5. EVALUACION 82
correlacion entre indicadores, y con esto generar una matriz de correlacion.
Entonces se volvieron a realizar las mismas pruebas pero esta vez con la
mitad de las caracterısticas, y estas fueron seleccionadas entre las que mas
correlacion tenıan con respecto al porcentaje de baterıa y ası comparar y
analizar los resultados obtenidos.
Dichas pruebas se llevaron a cabo tomando los 4 algoritmos de clasifi-
cacion indicados en el capıtulo 2 (Regresion Logıstica, Gaussian Naive
Bayes, K-Nearest Neighbors (KNN) y Maquina de vector de sopor-
te (SVM)) con la finalidad de identificar el nivel de exactitud (Accuracy)
definido, junto con el tiempo de entrenamiento de cada uno de ellos.
Las configuraciones que se tomaron para entrenar los diferentes algorit-
mos fueron las basicas por defecto indicadas en la tabla 5.3, como ası tambien
se puede observar todas los posibles hiperparametros a configurar en cada
uno, dichos hiperparametros son los documentados en Sklearn para la imple-
mentacion de dichos algoritmos.
La exactitud es la metrica utilizada para evaluar modelos de clasificacion,
es la fraccion de predicciones que el modelo realizo correctamente. Formal-
mente, la exactitud tiene la siguiente definicion.
Exactitud(Accuracy) =Numero de predicciones correctas
Numero total de predicciones
Los resultados se toman en base a la configuracion por defecto de cada
uno de los algoritmos en cuestion, aplicando el metodo de ajuste y valida-
cion Cross Validation con 5 repeticiones de entrenamiento y test distintos,
tomando la exactitud promedio resultantes de evaluar el modelo.
En las figuras 5.3 5.4 5.5 5.6 se pueden observar para cada uno de los
algoritmos utilizados, los valores de cada uno de los resultados para cada
archivo, teniendo en cuenta tanto todos los indicadores como los 16 con mayor
correlacion, adicionalmente se puede observar un grafico en donde se muestra
estos valores de una manera facil de comparar.
Para el algoritmo KNN resulto mas significativo el uso de los 16 indi-
cadores con mayor correlacion ya que, como puede apreciarse, la lınea que
dibuja los valores de la exactitud con los 16 indicadores esta por encima de
CAPITULO 5. EVALUACION 83
SVC KNeighborsClassifier GaussianNB LogisticRegression
C=1.0 n neighbors=3 priors=None penalty=’l2’
kernel=’rbf’ weights=’uniform’ var smoothing=1e-09 dual=False
degree=3 algorithm=’auto’ tol=1e-4
gamma=’auto deprecated’ leaf size=30 C=1.0
coef0=0.0 p=2 fit intercept=True
shrinking=True metric=’minkowski’ intercept scaling=1
probability=False metric params=None class weight=None
tol=0.001 n jobs=None random state=None
cache size=200 solver=’liblinear’
class weight=None max iter=100
verbose=False multi class=’ovr’
max iter=-1 verbose=0
decision function shape=’ovr’ warm start=False
random state=None n jobs=1
Tabla 5.3: Tabla hiperparametros por defecto de los algoritmos
CAPITULO 5. EVALUACION 84
Figura 5.3: Tabla y grafico de los resultados cross validation para el algoritmo
KNN
los valores tomando todos los indicadores (entre 0,2 y 0,6). Para los demas
algoritmos esta estrategia no dio resultado significativo, incluso para el al-
goritmo de Bayes se puede observar que los resultados mejoran levemente
teniendo en cuenta el entrenamiento con todos los indicadores.
En la figura 5.7 se visualiza el promedio de la exactitud contemplando los
15 archivos de cada uno de los algoritmos, en este se puede apreciar que KNN
fue el que obtuvo mejor acierto con un porcentaje de aproximadamente un
30 %.
Por otro lado, otra de las cuestiones que se tuvieron en cuenta a la ho-
ra de evaluar fue el tiempo de procesamiento para cada algoritmo, esto es
muy importante dado que no serıa ventajoso elegir un algoritmo solamente
por el acierto que haya obtenido, dado que para algunos el tiempo fue muy
elevado. Esto se ve ilustrado en la tabla 5.4 donde por ejemplo se puede ver
que el promedio para el algoritmo SVM fue aproximadamente entre 6 y 8
horas, en dicho caso la exactitud no fue la mejor pero de haberlo sido no se
podrıa sacar mucha ventaja de un modelo que tome demasiado tiempo de
entrenamiento. En cuanto a la metrica de tiempo se pudo observar que el
algoritmo KNN resulto tambien ser el mejor, con un promedio de aproxima-
damente de 1 minuto, teniendo en cuenta los archivos con los 16 indicadores
CAPITULO 5. EVALUACION 85
Figura 5.4: Tabla y grafico de los resultados cross validation para el algoritmo
Naıve Bayes
Figura 5.5: Tabla y grafico de los resultados cross validation para el algoritmo
SVM
CAPITULO 5. EVALUACION 86
Figura 5.6: Tabla y grafico de los resultados cross validation para el algoritmo
de regresion logıstica
Algoritmo Todos los atributos 16 Seleccionados
Regresion Logıstica 00:09:09 00:10:50
Gaussian Naive Bayes 00:01:48 00:03:25
K-Nearest Neighbors (KNN) 00:02:06 0:01:12
Maquina de vector de soporte (SVM) 07:57:51 06:31:36
Tabla 5.4: Tabla promedio de tiempos por algoritmos de Clasificacion
mas importantes.
5.4. Resultados de los Algoritmos de Regre-
sion
Los algoritmos de regresion predicen un valor numerico a partir de las
variables de entrada, a diferencia del algoritmo de clasificacion, predice un
valor aproximado, por lo tanto su evaluacion no se realiza mediante el acierto
sino mediante el error que tuvo en frente de los valores reales y para determi-
nar esto se evalua el RMSE (root mean square deviation). En realidad este
termino proviene del ECM (error cuadratico medio) que mide el promedio
CAPITULO 5. EVALUACION 87
Figura 5.7: Tabla y grafico de los promedios de todos los archivos por algo-
ritmo
CAPITULO 5. EVALUACION 88
Figura 5.8: Tabla y grafico de los errores medios del algoritmo de regresion
logıstica para cada archivo
de los errores al cuadrado, es decir, la diferencia entre el estimador y lo que
se estima. Esta metrica arroja sus resultados en las mismas unidades que la
cantidad que se estima, en este caso en porcentaje de baterıa.
RMSE =
√√√√ 1
n
n∑i=1
(Ai − Fi)2
Las pruebas sobre este algoritmos se llevaron a cabo teniendo en cuenta
todos los archivos explicados en la seccion 5.2 con la configuracion por defecto
del modelo.
La figura 5.8 muestra el resultado de la ejecucion teniendo en cuenta
todos los atributos mencionados en la seccion 5.1. En el mismo se puede
identificar que en promedio, seleccionando la configuracion de los dataset con
las 16 caracterısticas de mas correlacion con respecto a la baterıa, el error
cuadratico medio es menor que la configuracion con todas las caracterısticas,
mejorando tambien en el tiempo de entrenamiento de los mismos.
CAPITULO 5. EVALUACION 89
Indicadores Correlacionados Correlacion promedio entre los archivos.
ac 0.384
disconected 0.388
battery volt 0.906
battery temp 0.34
data 0.104
wifi 0.143
hour 0.308
Tabla 5.5: Correlacion de los 7 atributos contemplados para los algoritmos
de LSTM.
5.5. Resultados sobre Algoritmos de Redes
Neuronales
5.5.1. Introduccion
El analisis de series de tiempo con LSTM en funcion de la variacion
de la baterıa en el tiempo, se llevo a cabo teniendo en cuenta tambien las
caracterısticas que mayor valor de correlacion (tabla 5.5) midieron, estas
caracterısticas influyen notablemente en el porcentaje de baterıa final (segun
se pudo medir en la seccion 5.1)
Se tomo esta decision ya que se pretende comparar diferentes configura-
ciones de parametrizacion de las series de tiempo, y debido a que los valores
de correlaciones de las demas caracterısticas no sobrepasaban el umbral de
10 % con relacion a la baterıa.
Al igual que las caracterısticas, para el analisis del entrenamiento de las
diferentes configuraciones de la red neuronal, los dataset utilizados se dividie-
ron en dos tipos segun las siguientes decisiones de modelado de los mismos.
Para el analisis de series de tiempo es recomendable que entre cada re-
gistro se presente el mismo intervalo de tiempo y debido a la cantidad sig-
nificativa de lıneas de los archivos originales, se tomaron aquellos registros
de forma que se minimice la perdida de informacion entre cada intervalo,
CAPITULO 5. EVALUACION 90
teniendo en cuenta tambien los saltos significativos por falta de informacion
como en algunos casos que no se registraban datos por intervalos prolonga-
dos de tiempo. Es por esto que se formatearon los conjuntos de datos segun
intervalos de registros: Tomado 24 registros por dıa y 3 registros por hora.
En la configuracion 24 registros por dıa, se tomo de todo el conjunto 1
registro por hora, teniendo en cuenta que el resultado contiene un promedio
de todos los registros involucrados en esa hora para evitar la perdida de
informacion que podrıa ser relevante para el analisis.
De igual manera el caso de 3 registros por hora, se tuvo en cuenta que
de forma equilibrada se tomen 1 registro para cada intervalo aproximado de
20 minutos. Como en algunos casos los intervalos de falta de informacion era
mayor a este, se trato de tomar una fraccion de estos para que cumpla con
la condicion de tener 3 registros con datos en 1 hora.
Una vez realizado esto, paso siguiente abarcar la mayorıa de las posibles
configuraciones que se pueden aplicar sobre los parametros del modelo LTSM,
minimizando algunos aspectos importantes a configurar para el entrenamien-
to de la serie de tiempo. Estos aspectos fueron explicados en la seccion 4.2.3
donde se desarrollo las diferentes fases del modelado, desde la creacion de la
red, hasta el entrenamiento del mismo, pasando por la compilacion teniendo
en cuenta las diferentes funciones de perdida y metricas que seran aplicadas
internamente para evaluar la afectividad del entrenamiento.
Como se explico anteriormente, algunas configuraciones son propias para
modelos que siguen una lınea de clasificacion y otras para regresion, es por
esto que las pruebas se dividieron a partir de estos enfoques, ya que las
metricas utilizadas para evaluar los modelos son diferentes segun se trate
de uno u otro, como ası tambien los algoritmos de perdidas utilizados para
evaluar cada uno.
Teniendo en cuenta estas cuestiones se definieron configuraciones que se
explicaran en las siguientes secciones, con los resultados arrojados por los
mismos.
CAPITULO 5. EVALUACION 91
Referencias: # neuronas epochs Batch Optimization
#Config 1 10 10 25 sgd
#Config 2 50 30 50 adam
#Config 3 100 50 100 rmsprop
#Config 4 10 50 25 sgd
#Config 5 50 30 100 adam
#Config 6 100 10 50 rmsprop
#Config 7 10 30 100 sgd
#Config 8 50 10 50 adam
#Config 9 100 50 25 rmsprop
#Config 10 50 50 50 sgd
Tabla 5.6: Tabla de configuraciones utilizadas en LSTM para algoritmos de
regresion
5.5.2. Configuracion con algoritmos de Regresion
En esta seccion se presenta las diferentes configuraciones que se utilizaron
para las pruebas, los resultados obtenidos y las conclusiones a las que se
llegaron. Cabe destacar que se tomaron estos valores aleatoriamente y debido
a las gran cantidad de combinaciones posibles de cada uno se opto por elegir
las siguientes de todo el conjunto.
Como se menciono en la seccion 4.2.3 en el enfoque de un problema de
regresion, se define la funcion de perdida (loss) mean squared error.
Para la definicion de numeros de neuronas se decidio experimentar con 10,
50 y 100 neuronas en una capa oculta. Los numeros de epochs se definieron
en 10, 30 o 50, con la variacion del tamano de batch tomado entre cada
iteracion de 20, 50 o 100.
En cuanto a los algoritmos de optimizacion se tomaron ‘sgd’, ‘adam’ y
‘rmsprop’, que son los algoritmos mas comunmente utilizados debido a su
rendimiento generalmente mejor. Todas estas configuraciones utilizadas se
pueden observar en la tabla 5.6.
Resultados:
CAPITULO 5. EVALUACION 92
RMSE Configuraciones
Archivo #1 #2 #3 #4 #5 #6 #7 #8 #9 #10
File1 3PerHour 4.217 2.759 3.065 3.112 2.867 3.025 3.626 2.997 2.778 3.148
File1 24PerDay 17.473 9.599 9.704 9.148 9.354 9.819 13.504 9.34 9.789 10.059
File2 3PerHour 2.519 2.653 2.753 2.441 2.364 3.084 2.7 2.621 2.493 2.586
File2 24PerDay 6.573 5.662 5.678 5.951 5.635 6.007 8.31 5.638 5.486 6.148
File3 3PerHour 3.62 2.691 2.95 2.746 2.73 2.821 5.913 2.852 2.934 2.866
File3 24PerDay 11.91 7.186 7.828 7.211 7.14 7.15 10.993 7.086 7.178 8.177
File4 3PerHour 5.644 4.485 4.527 4.724 4.647 4.918 5.534 4.867 4.512 4.872
File4 24PerDay 14.3 12.985 12.876 12.867 12.672 12.837 14.706 13.074 12.452 12.786
File5 3PerHour 3.551 2.735 3.105 2.887 2.852 3.077 4.536 2.82 2.81 3.058
File5 24perDay 8.951 6.993 7.193 7.167 6.958 7.072 11.691 7.037 6.798 7.703
Promedio 7.8758 5.7748 5.9679 5.8254 5.7219 5.981 8.1513 5.8332 5.723 6.1403
Tabla 5.7: Resultados para los algoritmos LSTM con configuraciones de re-
grecion
La metrica que se tuvo en cuenta para medir el rendimiento de cada una
de las configuraciones para los diferentes DataSet fue “RMSE” (root mean
square desviation), que es utilizado para problemas tıpicos de regresion.
Conclusion:
Como se ve en la tabla 5.7, tomando el promedio de la metrica por cada
uno de las configuraciones sobre todos los archivos, las configuraciones que
mejores resultados aportaron, o sea aquellos cuyo RMSE sea menor, fueron
las siguientes: Config5, Config9 y Config2. En la misma figura mencio-
nada anteriormente se puede observar en diferentes tonos de verde ilustrando
mejor los resultados.
A grandes rasgos se puede deducir que las configuraciones que tienen
como algoritmos de optimizacion adam con un numero de neuronas medio de
50 resultaron tener una buena medida de la metrica.
En cambio se noto que para estas configuraciones utilizar el algoritmo de
optimizacion sgd, el valor del error medio resultan ser los mayores, mas alla
CAPITULO 5. EVALUACION 93
Referencias: # neuronas epochs Batch Optimization
#Config 11 10 10 25 rmsprop
#Config 12 50 30 50 adam
#Config 13 100 50 100 sgd
#Config 14 10 50 50 sgd
#Config 15 50 30 25 adam
#Config 16 100 10 100 rmsprop
#Config 17 10 30 100 sgd
#Config 18 50 10 50 sgd
#Config 19 100 50 25 rmsprop
#Config 20 50 10 100 sgd
Tabla 5.8: Tabla de configuraciones utilizadas en LSTM para algoritmos de
clasificacion
de los valores que se especificaron en los demas parametros.
Otra cuestion, a medida que se aumenta la cantidad de neuronas los
resultados mejoraron, lo mismo que el numero de epochs.
En conclusion, en promedio, la mejor configuracion para el entrenamiento
con estos dataset fue Config5, con 50 neuronas, 30 como numero de epochs,
con un tamano de batch de 100, algoritmo de optimizacion ’adam’ y funcion
de perdida mean squared error, arrojo un RMSE de 5,7219 en porcentaje
de baterıa.
5.5.3. Configuracion con algoritmos de Clasificacion
Al igual que en las configuraciones de regresion, se tomaron combinaciones
aleatorias del los valores predefinidos para cada parametro. Pero la funcion
de perdida utilizada fue sparse categorical crossentropy que se mantuvo
para todas las configuraciones (tabla 5.8).
Resultados:
La metrica que se tuvo en cuenta para medir el rendimiento de cada una de
las configuraciones para los diferentes DataSet fue la exactitud “Accuracy”,
CAPITULO 5. EVALUACION 94
Accuracy Configuraciones
Archivo #1 #2 #3 #4 #5 #6 #7 #8 #9 #10
File1 3PerHour 0.0009 0.0003 0.0003 0.0003 0.0003 0.0003 0.0003 0.0003 0.0003 0.0003
File1 24PerDay 0.0009 0.0009 0.0009 0.0009 0.0009 0.0009 0.0009 0.0009 0.0009 0.0009
File2 3PerHour 0.0000 0.0001 0.4352 0.4347 0.0001 0.0001 0.4353 0.4344 0.0001 0.4308
File2 24PerDay 0.0003 0.0003 0.4224 0.4266 0.0003 0.0003 0.4190 0.4266 0.0003 0.4190
File3 3PerHour 0.0000 0.0000 0.2063 0.2070 0.0000 0.0000 0.2065 0.2061 0.0000 0.1819
File3 24PerDay 0.0001 0.0001 0.1998 0.1953 0.0001 0.0001 0.1992 0.2009 0.0001 0.1811
File4 3PerHour 0.0006 0.0006 0.2575 0.2562 0.0006 0.0006 0.2575 0.2560 0.0006 0.2484
File4 24PerDay 0.0030 0.0030 0.2415 0.2346 0.0030 0.0030 0.2380 0.2403 0.0030 0.2436
File5 3PerHour 0.0000 0.0000 0.2225 0.2220 0.0000 0.2227 0.2226 0.2231 0.0000 0.2211
File5 24perDay 0.0000 0.0000 0.2124 0.2078 0.0000 0.2113 0.2101 0.2147 0.0000 0.2045
Promedio 0.0006 0.0005 0.2199 0.2185 0.0005 0.0439 0.2189 0.2203 0.0005 0.2132
Tabla 5.9: Resultados para los algoritmos LSTM con configuraciones de cla-
sificacion
que es utilizado para problemas tıpicos de clasificacion.
Conclusion:
Como se ve en la tabla 5.9, tomando el promedio de la exactitud por
cada uno de las configuraciones sobre todos los archivos, las configuraciones
que mejores resultados aportaron, o sea aquellos cuya exactitud sea mayor
fueron las siguientes: Config 8, Config 3, Config 7. En la misma figura
mencionada anteriormente se puede observar en diferentes tonos de verde
ilustrando mejor los resultados.
Notablemente los valores de la exactitud en estas configuraciones, sobre-
sale de las demas gracias al uso del algoritmo de optimizacion sgd que arrojo
valores entre 0,21 y 0,22. Todas las demas configuraciones no superaron el
umbral de 0,04 siendo en algunos casos inferior a 0,0006 como valor de Acu-
rracy.
En la tabla 5.10 se observa las mejores configuraciones, todas ellas con el
optimizador sgd en su definicion. Se observa que cuando se tiene en cuenta el
CAPITULO 5. EVALUACION 95
Configuraciones Neuronas Epochs Batch Accuracy Prom
#Config 18 50 10 50 0.2203
#Config 13 100 50 100 0.2198
#Config 17 10 30 100 0.2189
#Config 14 10 50 50 0.2185
#Config 20 50 10 100 0.2131
Tabla 5.10: Configuraciones teniendo en cuenta el optimizador sgd ordenadas
por promedio de exactitud
mismo numero entre neuronas utilizadas y tamano del batch se obtuvieron un
mejor resultado, ademas se puede observar que la utilizacion de un numero
mayor neuronas y tamano batch no mejora le exactitud. No obstante el valor
de exactitud es muy similar teniendo en cuenta que la diferencia entre el
mayor y el menor es de 0.0072.
Capıtulo 6
Conclusiones
En este trabajo se presento un enfoque de aprendizaje automatico para
la estimacion del uso de la baterıa en telefonos moviles. Para darle soporte
al enfoque, se implementaron dos herramientas especıficas. La primera es un
modulo transformador de datos en el cual se adaptaron los Logs brindados
por la catedra en un archivo de entrada que pueda ser entendido por los
algoritmos utilizados en la segunda herramienta. La segunda herramienta es
un servidor en Python que tiene todos los algoritmos implementados que se
nombraron en el presente trabajo, el cual nos permitio realizar las pruebas
correspondiente y analizar los resultados. Esta herramienta incluyo tecni-
cas de clasificacion, regresion y lo mismo con redes neuronales y series de
tiempo (LSTM). Su diseno permite incorporar facilmente nuevos algoritmos,
simplemente extendiendo de una clase e implementando los correspondientes
metodos.
En primer lugar, en este trabajo se presentaron las caracterısticas prin-
cipales de las tecnicas que aplican aprendizaje sobre datos y se analizaron
algunas caracterısticas no funcionales sobre los telefonos, como la tempera-
tura de la baterıa o el voltaje sobre la misma, caracterısticas que no son
controladas por el usuario ası como tener activado o no la conexion WiFi o
Bluetooth.
Como resultado del creciente desarrollo de aplicaciones, y la utilizacion
masiva de los telefonos inteligentes la demanda de valor de computo ha incre-
96
CAPITULO 6. CONCLUSIONES 97
mentado considerablemente haciendo que el uso de energıa incremente. Ası
mismo, el avance en diferentes especificaciones de los dispositivos moviles
ha crecido significativamente pero no ha sido tal en el caso de las baterıas,
produciendo que la carga de los telefonos en la mayorıa de los casos no lle-
gue al dıa de uso. La utilizacion de componentes y algoritmos de terceros en
dispositivos moviles presenta ciertos desafıos. Estos dispositivos tienen limi-
taciones en conflicto como la energıa, el acceso a la red y la capacidad de
calculo que determinan el contexto de ejecucion de estos componentes y que
afecta considerablemente desgaste de la baterıa.
Dentro de todos los algoritmos abarcados en este trabajo, podemos reali-
zar una division entre dos tipos, algoritmos de regresion y clasificacion. Los
algoritmos de regresion tienen como objetivo predecir valores continuos, es
decir, predecir valores numericos y acercarse los mas que se pueda al valor
real, por eso la metrica utilizada para medir su exactitud es el RMSE como se
explico anteriormente, en cambio los algoritmos de clasificacion tienen como
tarea asignar una clase, es decir, predecir a que clase pertenece un conjunto
de datos, y aquı es muy importante entender que en los problemas de clasi-
ficacion los valores son discretos y en este caso se clasifico entre valores de
0 a 100 en porcentaje de baterıa, por eso no podemos medir su exactitud
con una metrica de error medio, sino, con una metrica de exactitud, es decir,
cual es el porcentaje de acierto que tiene este algoritmo. Sin especial atencion
podemos determinar que claramente el problema presentado en este trabajo
es un problema de regresion, pero se realizaron pruebas de clasificacion para
determinar el comportamiento del mismo, y tambien como objetivo perso-
nal, poder entender mas sobre estos algoritmos ademas de tener la evidencia
suficiente para determinar cual de todos los modelos fue el mas correcto para
esta problematica.
Entre los algoritmos de regresion que se seleccionaron, haciendo una com-
parativa, se pueden observar que con la utilizacion de los modelos LSTM se
mejora significativamente el error medio obtenido reduciendo este valor de
7.42 a 5.72, aunque tambien hay que tener en cuenta que para estos ultimos
se tuvieron en cuenta los siete atributos con mas correlacion. De estos 16
CAPITULO 6. CONCLUSIONES 98
atributos (tabla 5.1) se pueden observar que son indicadores que varıan el
valor de la baterıa tanto negativa como positivamente, por ejemplo, el ac
(Conectado a corriente al terna) es un valor que va a incrementar el valor,
en cambio otros como screen on (pantalla encendida) screen brightness
(nivel de brillo de la pantalla), wifi (sensor WiFi encendido) o data (datos
del telefono encanecido) son valores que impactan significativamente en el
consumo de la baterıa.
Por ultimo, se llevo a cabo una serie de experimentos sobre 5 casos de
estudio para validar cual de los modelos presentados es el mas eficiente pa-
ra resolver esta problematica. Los mismos fueron evaluados con las metricas
presentadas en secciones anteriores, senalando al modelo de LSTM con con-
figuraciones para regresion como el mejor a nivel de predicciones bajas en
error. Las estimaciones permiten predecir que el error en las predicciones a
traves de la metrica Root Mean Absolute Error (RMSE), tendran valores
cercanos a cero.
6.1. Limitaciones
La principal limitacion que presento este estudio fue el gran tamano de
los archivos, un varios modelos esto presento una gran problematica ya que
el tiempo de los algoritmos fue demasiado elevado, totalmente inviable para
calcular predicciones, para solucionar esto se procedio a utilizar tecnicas para
achicar estos archivos, para eso se fueron acumulando lineas y almacenando
el promedio de las mismas, esto puede haber ocasionado que los resultados
pueden haber variado un poco que si se hubieran utilizado la misma cantidad
de lineas del archivo original. Otras de las limitaciones es que los equipos en
donde se corrieron las pruebas no cuentan con optimas prestaciones a la hora
de poder tener una buena velocidad de computo lo que hizo que los tiempos
de pruebas sean bastante elevados.
Por ultima, otra limitacion que se presenta responde a la ausencia de un
metodo automatizado para configurar dinamicamente los parametros de las
tecnicas de LSTM, estos se modificaron directamente en el codigo, adicio-
CAPITULO 6. CONCLUSIONES 99
nalmente la cantidad de configuraciones que se pueden utilizar en esta clase
de algoritmos es infinita, con lo cual, en el presente trabajo se tomaron con-
figuraciones aleatorias, pero esto se podrıa analizar mas profundamente en
futuros trabajos.
6.2. Futuros trabajos
Cabe mencionar que existen algunas posibilidades de extension interesan-
tes para este trabajo. Como primer objetivo se pretende mejorar el tiempo
de procesamiento requerido para la optimizacion y generacion de los modelos
predictivos. Para poder lograr esto, se puede otorgar a la aplicacion la capa-
cidad de ejecucion paralela de los procesos de optimizacion y construccion
de los diferentes modelos. Por otro lado, se podrıa crear una aplicacion para
el telefono que capture todos los datos analizados, ya que para este trabajo
los datos se brindaron desde un principio, es decir otra aplicacion ya habıa
realizado este trabajo por nosotros1. Con este fin, se puede recurrir a algun
proveedor de dispositivos en la nube (Device-as-a-Service), como Amazon
WS, estos servicios brindan acceso remoto a dispositivos moviles reales dis-
tribuidos geograficamente, lo que permite capturar datos sobre un grupo mas
amplio de dispositivos con caracterısticas variadas. Como en este trabajo el
modulo de prediccion de datos se realizo en un servidor local que contie-
ne todos los algoritmos utilizados, este trabajo podrıa expandirse creando
una API que pueda ser consumida por un dispositivo en cualquier momento
dando la posibilidad de consultar el estado futuro de la baterıa, esto podrıa
ser desplegado en algun host como puede ser AWS (Amazon web services),
ası mismo, se deberıa agregar una API a la cual se puedan enviar datos del
dispositivos, utilizando la aplicacion anteriormente mencionada para retro
alimentar el aprendizaje de maquina, se podrıan establecer periodos en los
cuales, por ejemplo, cada tres meses, esto es un tiempo configurable por el
usuario, el servidor ejecutarıa el entrenamiento para tener los modelos lo mas
1http://deviceanalyzer.cl.cam.ac.uk/
CAPITULO 6. CONCLUSIONES 100
actualizado posible.
Adicionalmente se pueden incorporar nuevos aspectos para mejorar y
comparar las tecnicas y modelos en la herramienta de aprendizaje:
Independizar al modulo de optimizacion de tecnicas, de diferentes ran-
gos de configuracion para cada uno de los parametros que incluya la
tecnica. De esta forma, lograr mas enfasis en los valores de cada parame-
tro y explotar al maximo el desempeno de las tecnicas. Incluso, el usua-
rio podrıa disponer de la posibilidad de personalizar estos valores.
Informar y registrar el tiempo real consumido por cada operacion de
construccion de un modelo. Operacion que incluye la configuracion,
optimizacion, entrenamiento y finalmente la evaluacion del modelo con
las metricas correspondientes.
Extender el analisis comparativo a nivel de librerıas, aprovechando la
capacidad de la herramienta de integrar librerıas de terceros. De esta
manera, se logra comparar el desempeno de una tecnica conocida en di-
ferentes implementaciones, y seleccionar la mejor tecnica independiente
de la librerıa que la implemente.
Bibliografıa
[1] Cristian Mateos Rodriguez, Juan Manuel and Alejandro Zunino.
Energy-efficient job stealing for CPU-intensive processing in mobile de-
vices. Computing 96.2, pages 87–117, 2014.
[2] Jose Luis Moreno. http://www.josemorenojimenez.com Comscore:
Estudio del uso de dispositivos moviles y mensajerıa instantanea, 2017.
[3] J. A. Paradiso and T. Starner. Energy scavenging for mobile and wireless
electronics. IEEE Pervasive Computing, vol. 4, no. 1, pages 18–27, 2005.
[4] Daniel T Wagner, Andrew Rice, and Alastair R Beresford. Device analy-
zer. In HOTMOBILE 2011 12th Workshop on Mobile Computing Sys-
tems and Applications, 2011.
[5] Ben Elgin. Google Buys Android for Its Mobile Arsenal, 2005.
[6] Lisa Mahapatra. Android vs. ios: What’s the most popular mobile ope-
rating system in your country?, 2013.
[7] Aaron Courville Ian Goodfellow, Yoshua Bengio. Deep learning.
Goodfellow-et-al-2016 MIT Press, 2016.
[8] Yoshua; Fitzgibbon Andrew Le Roux, Nicolas; Bengio. Improving first
and second-order methods by modeling uncertainty. In Sra, Suvrit; No-
wozin, Sebastian; Wright, Stephen J. Optimization for Machine Lear-
ning. MIT Press, page 404, 2012.
101
BIBLIOGRAFIA 102
[9] Fabian Pedregosa; Gael Varoquaux; Alexandre Gramfort; Vincent Mi-
chel; Bertrand Thirion; Olivier Grisel; Mathieu Blondel; Peter Pretten-
hofer; Ron Weiss; Vincent Dubourg; Jake Vanderplas; Alexandre Passos;
David Cournapeau; Matthieu Perrot; Edouard Duchesnay. Scikit-learn:
Machine Learning in Python. Journal of Machine Learning Research,
2011.
[10] Francois Chollet et al. Keras. https://keras.io, 2015.
[11] Hart P.E. Cover, T.M. Nearest neighbor pattern classification. IEEE
Trans. Inform. Theory IT13( 1), page 21–27, 1967.
[12] O. L. Mangasarian Glenn M. Fung. Multicategory Proximal Support
Vector Machine Classifiers. 2004.
[13] Enrique J. Carmona Suarez. Tutorial sobre maquinas de vectores soporte
(svm). 2013.
[14] Ajoy K Palit and Dobrivoje Popovic. Computational intelligence in time
series forecasting: theory and engineering applications. Springer Science
& Business Media, 2006.
[15] Ana Rodriguez. Refactorizaciones para kernels computacionales cientıfi-
cos en dispositivos moviles. Marzo 2013.
[16] Alejandro Zunino Daniela Godoy Silvia Schiaffino Carlos Rios, Juan
Manuel Rodriguez. Usage pattern mining for smartphone use persona-
lization. 2013.
[17] Rice and S. Hay. Measuring mobile phone energy consumption for 802.11
wireless networking. pervasive and mobile computing,. pages 593–606,
2010.
[18] P. Schmidt J. Simon and V. Pammer-Schindler. Analysis of dierential
synchronisation’s energy consumption on mobile devices. 2016.
BIBLIOGRAFIA 103
[19] R. P. Dick Z. M. Mao P. Dinda L. Zhang, M. S. Gordon and L. Yang. An
automatic detector of energy leaks for smartphone applications. pages
363–372, 2012.
[20] D. Li and W. G. J. Halfond. An investigation into energy-saving pro-
gramming practices for android smartphone app development. 2014.
[21] X. Jin P. Wang S. Park D. Shen Y. Zhou L. K. Saul G. M. Voelker.
X. Ma, P. Huang. edoctor: Automatically diagnosing abnormal battery
drain issues on smartphones. 2013.
[22] Sepp Hochreiter and Jurgen Schmidhuber. Long short-term memory.
Neural computation, 9(8):1735–1780, 1997.