Upload
others
View
7
Download
0
Embed Size (px)
Citation preview
Trabajo Fin de Máster
presentado por: Pardo Palazón, Juan
Director/a: Emaldi Manrique, Mikel
Ciudad: Madrid Fecha: 19-09-2019
Universidad Internacional de La Rioja (UNIR)
ESIT Máster en Análisis y Visualización de Datos Masivos
Análisis del consumo energético por rangos horarios
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 2
Resumen
El objetivo de este trabajo es realizar un análisis sobre el consumo energético por rangos
horarios de un conjunto de hogares. Se ha seleccionado un dataset ya existente donde se
capturaron durante dos años el consumo eléctrico de todas las estancias de cada hogar en el
Reino Unido. Mediante una técnica de clustering se realiza el agrupamiento de hogares según
dos parámetros: el coeficiente de variabilidad de consumo en un rango horario y la proporción
de consumo energético de ese rango con el resto. Con esta información las compañías
eléctricas podrán ofrecer ofertas a grupos de hogares concretos. Al emplear una técnica de
clustering (aprendizaje no supervisado) en este análisis es complicado validar con absoluta
certeza si la agrupación de los hogares es correcta. Se realiza, además, mediante un modelo
de auto regresión la predicción de consumo de cada hogar para las próximas semanas. Se
comprueba también qué hogares realizan mayor consumo durante las franjas horarias diurnas
y nocturnas.
Palabras Clave: rango horario, modelo auto regresión, clustering, consumo eléctrico
Abstract
The objective of this publication is to analyze energy consumption in time ranges of a set of
households. For two years, the electrical consumption of all the rooms of each household was
captured. Through a clustering technique, the grouping of households is carried out according
to two parameters: the coefficient of variability of consumption in a time range and the
proportion of energy consumption of that range with the rest. With this information, electric
companies will be able to offer offers to groups of specific homes. When using a clustering
technique (unsupervised learning) in this analysis it is difficult to validate with absolute certainty
whether the grouping of households it's correct. The prediction of consumption of each
household for the next few weeks is predicted by an autoregression model. This technique has
the inconvenience of predicting according to the last measured values. It is also verified that
households consume more during the daytime slots than at night.
Keywords: time range, autoregressive model, clustering, electricity consumption
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 3
Índice de contenido
1. Introducción .................................................................................................................... 8
1.1. Motivación ................................................................................................................ 8
1.2. Planteamiento del trabajo ......................................................................................... 9
1.3. Estructura del trabajo ............................................................................................. 10
2. Contexto y estado del arte............................................................................................. 11
2.1. Contexto ................................................................................................................ 11
2.2. Estado del arte ....................................................................................................... 13
2.2.1. Machine Learning............................................................................................ 14
2.2.2. Herramientas .................................................................................................. 17
2.2.3. Python ............................................................................................................. 20
2.2.4. Bibliotecas de Python ...................................................................................... 20
2.2.5. Métodos para validar modelos estadísticos ..................................................... 21
2.2.6. Limpieza de datos ........................................................................................... 23
3. Objetivos y metodología de trabajo ............................................................................... 27
3.1. Objetivo general ..................................................................................................... 27
3.2. Objetivos específicos ............................................................................................. 27
3.3. Metodología de trabajo........................................................................................... 28
4. Desarrollo específico de la contribución ........................................................................ 30
4.1. Código realizado para este trabajo ......................................................................... 30
4.2. Origen de los datos ................................................................................................ 39
4.3. Limpieza de los datos ............................................................................................ 42
4.4. Hogares con mayor consumo en franjas horarias diurnas y bajo consumo en horario
nocturno ........................................................................................................................... 49
4.4.1. Descripción del experimento y resultados ....................................................... 49
4.4.2. Validación de los resultados ............................................................................ 56
4.5. Predicción del gasto energético de los hogares ..................................................... 59
4.5.1. Descripción del experimento y resultados ....................................................... 59
4.5.2 Validación de los resultados ............................................................................ 62
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 4
4.6. Clasificación de hogares por gasto eléctrico día/noche .......................................... 69
4.6.1. Descripción del experimento y resultados ....................................................... 69
4.6.2. Validación de los resultados ............................................................................ 71
5. Conclusiones y trabajo futuro ........................................................................................ 72
6. Bibliografía .................................................................................................................... 75
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 5
Índice de figuras
Figura 1. Consumo eléctrico doméstico en España .............................................................. 12
Figura 2. Consumo eléctrico global en el mundo .................................................................. 12
Figura 3. Ejemplo K-Means 3 centroides .............................................................................. 15
Figura 4. Pantalla inicial de la suite Anaconda ..................................................................... 18
Figura 5. Icono de lanzamiento de Jupyter desde Anaconda ............................................... 19
Figura 6. Hoja de trabajo del TFM lista para ejecutarse desde Jupyter ................................ 19
Figura 7. Logo Python .......................................................................................................... 20
Figura 8. Icono de lanzamiento de Qt Console desde Anaconda ......................................... 21
Figura 9. Interpolación por datos adyacentes ....................................................................... 24
Figura 10. Interpolación lineal .............................................................................................. 24
Figura 11. Rolling sobre el un rango horario. ........................................................................ 25
Figura 12. Diagrama Gantt ................................................................................................... 28
Figura 13. Fichero README.md con las instrucciones para ejecutar el código .................... 30
Figura 14. Hoja de trabajo 01. .............................................................................................. 31
Figura 15. Hoja de trabajo 01b ............................................................................................. 32
Figura 16. Hoja de trabajo 02. .............................................................................................. 32
Figura 17. Hoja de trabajo 02b. ............................................................................................ 33
Figura 18. Hoja de trabajo 03. .............................................................................................. 33
Figura 19. Hoja de trabajo 03b ............................................................................................. 34
Figura 20. Hoja de trabajo 04. .............................................................................................. 35
Figura 21. Hoja de trabajo 04b. ............................................................................................ 35
Figura 22. Hoja de trabajo 05. .............................................................................................. 36
Figura 23. Hoja de trabajo 06. .............................................................................................. 37
Figura 24. Hoja de trabajo 07. .............................................................................................. 38
Figura 25. Hoja de trabajo 08. .............................................................................................. 38
Figura 26. Esquema de captura de los datos ....................................................................... 40
Figura 27. Consumo Hogar 7 sin aplicar rolling. ................................................................... 44
Figura 28. Consumo Hogar 7 aplicando rolling. .................................................................... 45
Figura 29. Gráfica dispersión sin rolling. Hogar 7. ................................................................ 46
Figura 30. Gráfica dispersión con rolling. Hogar 7. ............................................................... 46
Figura 31. Esquema generación fichero datos limpiados ..................................................... 48
Figura 32. Distribución de los hogares con 2 centroides ...................................................... 53
Figura 33. Distribución de los hogares con 4 centroides ...................................................... 54
Figura 34. Consumo energético por rangos. Hogar 12. ........................................................ 57
Figura 35. Consumo energético por rangos. Hogar 19. ........................................................ 57
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 6
Figura 36. Consumo energético por rangos. Hogar 1. .......................................................... 58
Figura 37. Consumo energético por rangos. Hogar 21. ........................................................ 58
Figura 38. Consumo energético por rangos. Hogar 8. .......................................................... 60
Figura 39. Previsión consumo últimas 5 semanas. ............................................................... 61
Figura 40. Test y predicción hogar 8. Rango 00-06h ............................................................ 64
Figura 41. Test y predicción hogar 8. Rango 06-12h ............................................................ 65
Figura 42. Test y predicción hogar 8. Rango 12-18h ............................................................ 66
Figura 43. Test y predicción hogar 8. Rango 18-00h ............................................................ 67
Figura 44. Consumo energético por rangos. Hogar 16. ........................................................ 71
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 7
Índice de tablas
Tabla 1. Instalar un paquete python con pip ......................................................................... 21
Tabla 2. Datos de ejemplo para interpolación ....................................................................... 23
Tabla 3. Características de las viviendas ............................................................................. 39
Tabla 4. Formato fichero csv por cada hogar ....................................................................... 41
Tabla 5. Aparatos eléctricos en vivienda 6 ........................................................................... 41
Tabla 6. Aparatos eléctricos en vivienda 7 ........................................................................... 42
Tabla 7. Agrupación por rango horario diario para un hogar ................................................. 43
Tabla 8. Formato final datos de los hogares transformados y limpiados ............................... 49
Tabla 9. Puntuación análisis silhouette ................................................................................. 52
Tabla 10. Clasificación de los hogares ................................................................................. 55
Tabla 11. Fichero Hogar_8_prediccion_wfmodeloAR.csv..................................................... 60
Tabla 12. Fichero del hogar 8 con los consumos por rangos. ............................................... 62
Tabla 13. Valores de energía de test y las predicciones 00-06h ........................................... 64
Tabla 14. Valores de energía de test y las predicciones 06-12h ........................................... 65
Tabla 15. Valores de energía de test y las predicciones 12-18h ........................................... 66
Tabla 16. Valores de energía de test y las predicciones 18-00h ........................................... 67
Tabla 17. R2 y RMSE. .......................................................................................................... 67
Tabla 18. RMSE Normal y con Walk forward ........................................................................ 68
Tabla 19. Rango de consumos día y tarde - noche .............................................................. 70
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 8
1. Introducción
En la época actual la demanda de energía ya sea en el ámbito doméstico o en el profesional
no ha parado de crecer y es necesario para las empresas suministradoras de energía poder
analizar y predecir el gasto energético de los clientes. En este TFM se va a analizar, clasificar
y comparar el consumo energético por rangos horarios entre diferentes hogares
seleccionados a partir de un juego de datos ya existente. Una vez obtenidos y limpiados los
mismos se procederá a utilizar técnicas de Machine Learning para clasificar y predecir los
hábitos de consumo eléctrico de dichos hogares.
1.1. Motivación
Las empresas suministradoras de energía, para el mercado doméstico, necesitan conocer los
hábitos de consumo de los hogares para poder ofrecerles ofertas específicas. No es extraño
recibir información comercial de este tipo de empresas recomendando algún tipo de oferta
según los datos de consumo de los que dispone la empresa.
Mediante el análisis del consumo eléctrico por rangos horarios se añaden nuevas
posibilidades para poder obtener más información acerca de las costumbres de los hogares.
Disponiendo de esta información se podrá enviar, por ejemplo, ofertas para un mismo grupo
de domicilios que realizan un consumo similar en un rango horario determinado. Por ejemplo,
un grupo de hogares que realizan un consumo muy alto en la banda intermedia del día o
residencias con consumos muy bajos por las noches.
La predicción de consumo energético por rango horario puede permitir detectar picos de
consumo en una franja horaria determinada y evitar posibles sobrecargas eléctricas. Se aporta
además más información que aquella en la que sólo se informa de la media de consumo de
todo el día donde no se diferencian períodos horarios.
Recientemente ha aparecido una noticia sobre el apagón ocurrido el 13 de Julio de 2019en
Nueva York (Barron & Zaveri, 2019). La causa de la falta de luz fue debida a una sobrecarga
eléctrica debido al uso masivo del aire acondicionado en un día muy caluroso. La hora del
suceso fue por la tarde a las 19 horas y se produjo en sábado. En la noticia se comenta
también que este mismo suceso se produjo en 1977 en fechas similares.
Es posible que un análisis de consumo por rango horario durante todos los veranos hubiera
podido proporcionar información sobre un posible riesgo de sobrecarga eléctrica. Si bien es
cierto que disponer de esta información no es sencillo y muy probablemente el histórico
detallado de los consumos de los hogares no exista en la actualidad.
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 9
1.2. Planteamiento del trabajo
El juego de datos seleccionado para realizar este TFM dispone de una gran cantidad de
información sobre el consumo eléctrico en diferentes hogares. Una vez que se han limpiado
y agrupado los datos se procede a realizar un análisis del conjunto de los hogares.
El análisis comienza agrupando los hogares por hábitos de consumo en un rango horario.
Para ello se introduce el concepto de coeficiente de variabilidad y proporción de consumo
entre un rango horario y el resto. Más específicamente se ha planteado un caso habitual en
el que durante las noches las familias hacen un uso muy bajo del consumo eléctrico (porque,
por ejemplo, están durmiendo) pero en el resto del día hace un uso más extenso de todos los
aparatos eléctricos. Una vez detectados estos hogares se podrán estudiar aquellos que no
cumplen estos requisitos para realizar un estudio personalizado de ellos. Se podrían detectar
hogares que por ejemplo en horarios nocturnos realizarán un mayor consumo energético.
A este tipo de hogares se les podría diseñar una oferta o tarifa que premie el uso de energía
por la noche.
En esta parte del trabajo se hace uso del algoritmo de agrupamiento K-means que es un
método de Machine Learning no supervisado que agrupa elementos con características
similares.
Finalmente se realiza una predicción a varias semanas sobre la tendencia de consumo que
tiene cada hogar en cada rango. Se emplea este caso un modelo de regresión (modelo de
auto regresión), que es otra técnica de Machine Learning. Predecir el consumo de los hogares
en las siguientes semanas puede ser útil a las empresas para predecir subidas de consumo
en una fecha concreta.
En el último apartado se clasifican los hogares en dos grupos: los que realizan mayor consumo
(de media) en los rangos horarios de día y aquellos que lo realizan en rangos horarios de
tarde-noche. Está información puede ayudar a departamentos de marketing a saber qué
proporción de hogares consumen más en un rango que en otro. Si la captura de datos se
ampliara a otros países se podría comparar si los hábitos de consumo obtenidos en el Reino
Unido son diferentes o equiparables a otros países europeos.
A modo informativo para los usuarios puede ayudarles a contratar una tarifa que premie sus
hábitos de consumo en el rango horario que más consumo realicen.
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 10
1.3. Estructura del trabajo
El trabajo está estructurado de la siguiente manera:
En este capítulo inicial se realiza un resumen sobre la temática a tratar. Después se explican
las principales motivaciones que llevan a desarrollar el trabajo, se expone un planteamiento
de este y finalmente se muestra como se ha estructurado este trabajo.
En el capítulo 2 se presenta el contexto de aplicación de este trabajo haciendo una
presentación sobre la problemática del consumo eléctrico en los hogares y en el mundo en
general. A continuación, se realiza un análisis sobre las herramientas y las técnicas
empleadas para desarrollar el trabajo.
En el capítulo 3 se describen los objetivos generales y específicos que se pretenden
conseguir, así como la metodología empleada para alcanzarlos.
El desarrollo específico de la contribución se realiza en el capítulo 4 donde se explica de
manera detallada como se han obtenido los resultados. Se exponen las técnicas que se han
utilizado para la consecución de los objetivos. Para mejorar la comprensión de ciertas partes
del trabajo se presentan fragmentos de código donde se ha considerado necesario.
Las conclusiones y el posible futuro trabajo que se podría desarrollar se explican en el capítulo
5.
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 11
2. Contexto y estado del arte
En la primera sección de este capítulo se hablará de la importancia y posibilidades que ofrece
el conocimiento del consumo energético de los hogares. Más específicamente se hablará de
cómo la agrupación de hogares según su consumo eléctrico tiene aplicaciones útiles para las
compañías eléctricas y sus departamentos de marketing. Así mismo se expondrá en esta
sección la utilidad de predecir el consumo de estos hogares tanto para las compañías
suministradoras de energía como para los propios hogares.
En la segunda sección de este capítulo se hace una descripción de las técnicas y herramientas
que se han utilizado para el análisis de los datos que se han obtenido del estudio realizado
por David Murray, Lina Stankovic y Vladimir Stankovic (Murray, Stankovic, & Stankovic, 2017).
En este estudio se capturan durante aproximadamente dos años el consumo energético de
varias viviendas en el Reino Unido.
2.1. Contexto
En el mundo actual la energía eléctrica es una fuente de energía esencial para el desarrollo
humano. Hace unos 60 años el número de aparatos eléctricos disponibles en los hogares era
claramente inferior al número de aparatos actuales: aires acondicionados, ordenadores,
teléfonos móviles, microondas, reproductores de DVD, consolas de videojuegos, etcétera.
Todos ellos son dispositivos electrónicos que se han implantado de manera masiva en los
hogares durante las últimas décadas.
Como se puede comprobar en la figura 1 el número de electrodomésticos disponibles en un
hogar actualmente en España es muy elevado en comparación con el número de aparatos
eléctricos existentes hace 60 años. Un uso intensivo de todos estos aparatos en un mismo
instante puede provocar sobrecargas en el hogar y en la propia red eléctrica si la misma acción
la repiten muchos hogares. Por ejemplo, en temporadas veraniegas el uso del aire
acondicionado intensivo es un factor que puede contribuir a generar cortes de suministro
eléctrico.
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 12
Figura 1. Consumo eléctrico doméstico en España
El ritmo de consumo eléctrico en el mundo no ha parado de crecer. En la figura 2 se puede
comprobar la evolución de consumo eléctrico que se ha experimentado.
Figura 2. Consumo eléctrico global en el mundo
Fuente: https://www.sciencedirect.com/topics/engineering/electricity-consumption
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 13
Para las empresas suministradoras de energía es necesario prever este incremento de
consumo para poder abastecer la demanda de manera adecuada. Sobre el tema de previsión
de consumo eléctrico se dispone de una noticia de Méjico (La silla rota, 2018) en la que se
comenta cómo la escasa reserva eléctrica de la red mejicana junto con la posibilidad de que
sucedan picos de consumos en la época estival pueden provocar apagones con el grave
perjuicio que esto supone para la población.
Mejorar los sistemas de medición y predicción de consumo eléctrico podrían ayudar a evitar
estos fallos en el sistema eléctrico. Además, se podría investigar en qué rango horario se
producen estos picos de consumo.
El agrupamiento de hogares por las características de su consumo eléctrico puede ser de gran
utilidad para los departamentos de marketing. Si un grupo de hogares tienen una forma de
consumir muy similar a este grupo se le puede enviar el mismo tipo de oferta personalizada
en la que tanto la empresa y el hogar obtengan un beneficio. Se puede también pensar de
manera contraria. Agrupar hogares con hábitos tradicionales de consumo (más consumo
diurno que nocturno) y analizar de manera personalizada aquellos hogares que no cumplen
estos criterios. En este grupo entrarían por ejemplo hogares que trabajan por la noche y
duermen por el día.
De manera específica se pretende obtener un agrupamiento de hogares que hace un uso
intensivo por rangos horarios diurnos y un consumo muy bajo y estable por la noche (rango
horario nocturno). Una vez detectado este grupo se podría analizar aquellos hogares con
hábitos de consumo atípico que no entrarían dentro de los parámetros habituales de consumo.
Otro tipo de agrupamientos se podrían realizar modificando los rangos horarios en los que se
ha trabajado. En este trabajo se han empleado 4 rangos de 6 horas cada uno comenzando
desde las 12 de la noche, pero estos rangos se podrían modificar a más o menos rangos y
comprobar los resultados
Un departamento de marketing podría solicitar un estudio centrándose en un rango horario
concreto. Por ejemplo, de 12 de la mañana a 4 de la tarde y observar el comportamiento de
consumo de los hogares.
2.2. Estado del arte
En este trabajo se va a tratar de predecir el consumo eléctrico por rango horario de los hogares
mediante el uso de un juego de datos ya disponible. Así mismo con este juego de datos se
van a clasificar los hogares según sus hábitos de consumo en diferentes rangos horarios.
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 14
Se describirá el tipo de herramientas que se han utilizado para llevar a cabo el análisis y
tratamientos de los datos
Después de disponer de los datos preparados es necesario disponer de técnicas para el
estudio de estos. En las siguientes subsecciones se estudiarán las posibles técnicas y
herramientas de Machine Learning disponibles.
2.2.1. Machine Learning
Es un conjunto de técnicas que permiten a las máquinas de manera autónoma aprender de
los datos para así tomar decisiones. Es una rama de la inteligencia artificial que permite
realizar predicciones y clasificaciones según la información que se le suministra. La
información suministrada puede realimentarse con más datos para así mejorar la calidad de
los resultados finales.
Dentro del Machine Learning las técnicas pueden agruparse en aprendizaje supervisado y
aprendizaje no supervisado.
Aprendizaje no supervisado
Sobre el aprendizaje no supervisado existen diferentes técnicas de clustering. Se enuncian a
continuación dos técnicas.
k-means
La agrupación K-means es uno de los algoritmos de agrupación más simples y más utilizados.
Intenta encontrar los centros de los clústeres que sean más representativos de ciertas
regiones de los datos.
El algoritmo alterna entre dos pasos: asignar cada punto de datos al centro de clúster más
cercano y luego configurar cada centro de clúster como la media de los puntos de datos que
se le asignan. El algoritmo finaliza cuando la asignación de instancias a clústeres ya no
cambia.
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 15
Figura 3. Ejemplo K-Means 3 centroides
Fuente: http://www.diegocalvo.es/analisis-cluster-no-jerarquico-k-means-en-r/
Un estudio relacionado con clustering y energía se puede encontrar en el artículo de Katarina
Kosmelj y Vladimir Batagelj (Kosmelj & Batagelj, 1990, págs. 99-109). En este estudio se
realiza un estudio energético de veintitrés países entre los años 1976 y 1982. Se hace uso de
la variación de la información durante una línea temporal y se agrupan los países por
clustering.
Otro interesante artículo sobre clustering y energía realiza un análisis sobre la eficiencia en
gasto energético de una red de sensores Wireless. El uso de la técnica de clustering se
emplea para minimizar el coste de consumo entre sensores (Mardini, Muneer, & Barraq, 2014,
págs. 275-290).
Aprendizaje supervisado
Regresión lineal
La regresión lineal es un algoritmo de aprendizaje supervisado utilizado en Machine Learning
y estadística. Es un modelo matemático que relaciona la dependencia entre una variable
escalar dependiente llamada Y, las variables independientes llamadas 𝑋𝑖 y un término
aleatorio 𝜀.
En este trabajo se va a trabajar con regresión lineal con series temporales usando un modelo
de la familia ARIMA. Dentro de esta familia existen modelos que cuentan con estacionalidad
o sin estacionalidad.
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 16
El modelo autorregresivo integrado de media móvil o ARIMA, es un modelo de análisis
estadístico que utiliza datos de series temporales para comprender mejor el conjunto de datos
o para predecir tendencias futuras.
Un modelo ARIMA puede comprenderse mejor describiendo sus partes. En el artículo de
Mingda Zang (Zhang, 2018) se describen cada parte del modelo:
• AR (Autorregresión). Un modelo que usa la relación dependiente entre una
observación y un conjunto anterior de observaciones.
• I (Integrado). Representa la diferenciación de observaciones sin procesar para
permitir que las series temporales se vuelvan estacionarias, es decir, los datos son
remplazados por la diferencia entre el valor de los datos y los valores anteriores
• MA (Promedio móvil). Incorpora la dependencia entre una observación y un error
residual de un modelo de promedio móvil aplicado a observaciones rezagadas.
En otras palabras, el modelo ARIMA se puede configurar para realizar la función de un modelo
ARMA, e incluso un simple AR, I o Modelo MA.
En el artículo de Shay Palachy (Palachy, 2019) se explica cómo funcionan las series
temporales estacionales y cómo se diferencian de las no estacionales. En el artículo se
comenta que la estacionalidad significa que las propiedades estadísticas de un proceso que
genera una serie temporal no cambian con el tiempo. No significa que la serie no cambie con
el tiempo, solo que la forma en que cambia no cambia con el tiempo. El equivalente algebraico
es, por lo tanto, una función lineal, tal vez, y no constante; el valor de una función lineal cambia
a medida que 𝒙 crece, pero la forma en que cambia permanece constante: tiene una pendiente
constante; Un valor que captura esa tasa de cambio.
A continuación, se muestran dos estudios que hacen uso del modelo AR:
• Existe un estudio que trata sobre el movimiento respiratorio y el electroencefalograma
en animales. En ambos estudios se hace uso del modelo AR. Junto a este modelo se
emplea el filtro de Kalman. En este estudio la línea temporal se presupone no
estacionaria (Arnold, Milner, Write, Bauer, & Braun, 1998).
• El modelo AR se emplea en investigaciones donde se usa una línea temporal en la
que una unidad de tiempo t y las anteriores se presuponen que tienen relación. En el
libro sobre la obtención de radiación solar por horas (Aguiar & Collares-Pereira, 1992,
págs. 167-174) se emplea el modelo AR para obtener conclusiones válidas.
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 17
El modelo ARIMA puede generalizarse aún más para considerar el efecto de la estacionalidad.
En ese caso, se habla de un modelo SARIMA (Seasonal Autoregressive Integrated Moving
Average).
Un estudio sobre la predicción de casos de dengue en el estado de Campinas (Brasil) estuvo
basado en el uso de un modelo SARIMA. En este estudio se indica que los casos de dengue
en un mes determinado se pueden estimar por el número de casos de dengue que ocurren
uno, dos o doce meses antes. Se ajustó un modelo basado en la incidencia mensual reportada
de dengue de 1998 a 2008, y se validó el modelo utilizando los datos recopilados entre enero
y diciembre de 2009 (Zangiacomi Martinez, Soares da Silva, & Dal Fabbro, 2011).
El modelo AR (auto regresión) es el modelo más sencillo que pertenece a la familia ARIMA.
2.2.2. Herramientas
En el entorno Big Data es habitual tratar grandes cantidades de datos. Los ficheros generados
de mediciones y análisis tienen un gran tamaño y se hace complicado procesarlo mediante
herramientas convencionales como editores de texto o herramientas ofimáticas.
Un entorno de desarrollo muy utilizado en el campo de la ciencia de datos es Anaconda1. Está
formado por un conjunto de herramientas y lenguajes de programación orientados al estudio
de los datos y el aprendizaje automático. Dispone de los lenguajes de programación R y
Python para realizar programas que puedan limpiar y analizar la información. En la figura 3 se
puede observar la pantalla de inicio de Anaconda.
1 Web: https://www.anaconda.com
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 18
Figura 4. Pantalla inicial de la suite Anaconda
La pantalla inicial de Anaconda muestra varios accesos directos a herramientas para el
análisis de datos y Machine Learning.
En este trabajo se ha priorizado el uso de herramientas de uso común y que se disponga de
mucha documentación. Aunque el entorno Anaconda permite la utilización de dos lenguajes
de programación como R y Python se ha optado por emplear Python debido a su sencillez y
por ser un lenguaje muy demandado en el área del Machine Learning. La documentación
disponible además es muy extensa.
El código se ha desarrollado mediante el uso de la herramienta Jupyter (ver figura 4). Esta
herramienta viene integrada en Anaconda, pero es posible descargarla de manera
independiente desde la página web de Jupyter2.
2 Web: https://jupyter.org/
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 19
Figura 5. Icono de lanzamiento de Jupyter desde Anaconda
Jupyter es una herramienta de código libre que permite desarrollar software. La ventaja que
proporciona esta herramienta es que el código se ejecuta mediante hojas de trabajo lo que
permite separar fragmentos de código y ejecutar paso a paso las partes de código que
presenten mayor dificultad.
Figura 6. Hoja de trabajo del TFM lista para ejecutarse desde Jupyter
Los archivos de la hoja de trabajo, aunque escritos en Python son del tipo pynb y no son los
habituales py de Python. Esto no presenta ningún problema ya que desde la hoja de trabajo
se puede salvar el código en diversos formatos incluido el py de Python si se quiere ejecutar
en otro entorno. En la figura 5 se muestra la hoja de trabajo con el código listo para ejecutarse.
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 20
Todo el código de este trabajo se ha desarrollado usando esta herramienta.
2.2.3. Python
Python3 es un lenguaje de código abierto lanzado a finales de los años 80. Es un lenguaje
interpretado con una sintaxis orientada a la sencillez. Es un lenguaje de propósito general y
multiplataforma. Se puede utilizar en diversos ámbitos como desarrollo web, inteligencia
artificial, Big Data y como lenguaje de scripting para realizar pequeñas tareas, entre otros
muchos usos.
Figura 7. Logo Python
Sobre la base de este lenguaje ha sido necesario incorporar bibliotecas concretas para poder
trabajar con grandes cantidades de datos, realizar predicciones, generar gráficas y otras
tareas relacionadas con el Big Data. Una ventaja de este lenguaje es que la comunidad de
desarrolladores está muy activa y se incorporan y actualizan con bastante frecuencia
bibliotecas que permiten realizar tareas complejas de manera mucho más sencilla.
En el siguiente apartado se explican las principales bibliotecas Python utilizadas para poder
realizar este TFM.
2.2.4. Bibliotecas de Python
Para realizar tareas complejas como agrupar datos, obtener gráficas o realizar predicciones
ha sido necesario utilizar bibliotecas externas que permitan realizar estas tareas mediante
instrucciones más sencillas.
Una funcionalidad esencial del lenguaje Python es disponer de un gestor de paquetes para
incorporar nuevas bibliotecas. Normalmente un programa complejo suele disponer de
bibliotecas específicas que necesitan ser instaladas.
En este trabajo se ha realizado la instalación de paquetes usando el comando pip mediante
el uso de Qt Console. El icono de Qt Console está disponible desde la pantalla inicial de
Anaconda.
3 Web: https://www.python.org/
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 21
Figura 8. Icono de lanzamiento de Qt Console desde Anaconda
Durante este trabajo se han instalado varios paquetes que no venían instalados por defecto
con Anaconda. Para instalar una biblioteca en Python bastaría con utilizar el comando:
Tabla 1. Instalar un paquete python con pip
pip install nombre-paquete
Una vez realizada esta acción ya es posible trabajar con la nueva biblioteca.
Las bibliotecas seleccionadas para realizar los cálculos y las gráficas han sido las siguientes:
• Pandas: es una biblioteca que se ha utilizado para manejar tablas con datos y series
temporales. Contiene un tipo de dato muy utilizado en este trabajo que es el dataframe.
Mediante el uso de dataframes se han realizado las operaciones de limpieza,
agregación y cálculo de los datos.
• Matplotlib: es la biblioteca que se ha utilizado para generar gráficos.
• Scikit-learn: esta biblioteca se ha utilizado para todas aquellas técnicas relacionadas
con el Machine Learning (algoritmos y métricas)
• Statsmodels: usada para el empleo de modelos estadísticos (por ejemplo, modelos
de auto regresión)
La documentación de todas estas bibliotecas es muy detallada y existen disponibles muchos
recursos en la red para profundizar en su utilización.
2.2.5. Métodos para validar modelos estadísticos
Para validar los modelos estadísticos que se usan en Machine Learning se emplean diferentes
indicadores para comprobar cómo está funcionando de bien el modelo.
Raíz del error cuadrático medio (RMSE)
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 22
Es una medida que se utiliza con frecuencia para comparar dos conjuntos de datos. Se mide
la cantidad de error o diferencia que existe entre los dos conjuntos. En estadística es muy
utilizado y se comparan por ejemplo en un modelo estadístico los valores predichos con los
observados.
En este trabajo se ha utilizado para validar la predicción de consumo energético por rangos
horarios.
Usando la biblioteca sklearn.metrics de pandas el cálculo de este valor es muy sencillo. Se
emplea la función mean_squared_error y el código para llamar a esta función sería:
1. sqrt(mean_squared_error(df_wf['Test'], df_wf['Prediccion']))
Se reciben por parámetros dos listas. Una lista con valores usados para test y otra lista con
los valores que se han predicho.
Coeficiente de determinación (𝑹𝟐)
R-cuadrado (R2) es una medida estadística que representa la proporción de la varianza para
una variable dependiente que se explica por una variable o variables independientes en un
modelo de regresión (HAYES, 2019).
Mientras que la correlación explica la fuerza de la relación entre una variable independiente y
una dependiente, R-cuadrado explica en qué medida la varianza de una variable explica la
varianza de la segunda variable.
Si el R2 de un modelo es 0.50, quiere decir que aproximadamente la mitad de la variación
observada puede explicarse por las entradas del modelo.
En Python, al igual que el cálculo de la raíz del error cuadrático medio, se utiliza la biblioteca
sklearn.metrics de pandas.
1. r2_score(df_wf['Test'], df_wf['Prediccion'])
Es necesario llamar a la función r2_score y pasar por parámetro los valores de test y los de la
predicción para compararlos.
El coeficiente de determinación es un indicador que se debe tomar con precaución porque no
se debería tener en cuenta como única referencia para comprobar que el modelo estimado se
ajusta de manera correcta (RODRÍGUEZ, 2005).
En este trabajo se calcula a modo informativo en la sección que trata la predicción de consumo
energético.
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 23
Walk Forward
Para la validación de los resultados se utiliza la técnica de walk forward. La ventaja de la
utilización de walk forward es que una vez predicho el resultado ese dato pasa a formar parte
de los datos de entrenamiento siendo necesario reentrenar el modelo. Este reentrenamiento
mejorará sustancialmente la predicción sobre otros sistemas de validación que no tengan en
cuenta las últimas predicciones.
En el artículo Stock Prediction with ML: walk forward Modeling (Gray, 2018) se mencionan las
ventajas sobre su uso:
• Los métodos tradicionales de validación y validación cruzada son problemáticos para los
problemas de predicción de series temporales.
• La solución es utilizar la técnica de walk forward para que incorpore nueva información al
modelo a medida que esté disponible.
• Este enfoque nos da una visión más realista de cuán efectivo habría sido nuestro modelo
en el pasado y ayuda a evitar la trampa de sobreajuste.
• Además de excluir cualquier información futura del proceso de entrenamiento, a menudo
es importante excluir datos que están demasiado lejos en el pasado.
2.2.6. Limpieza de datos
En este trabajo se ha seleccionado un juego de datos de gran tamaño. Más de un millón de
capturas que se han guardado en los ficheros CSV de los hogares tratados. Con un volumen
tan alto de datos es necesario realizar algún tipo de limpieza de datos.
Una parte de esta limpieza incluye la sustitución de valores no disponibles (llamados NA en
inglés). Este tipo de valores deben ser o bien sustituidos o bien suprimidos. Si se desea
sustituir los valores NA se suelen utilizar una técnica llamada de interpolación.
Para ilustrar el funcionamiento de como interpolar los datos faltantes de un juego de datos se
expone el ejemplo siguiente:
Tabla 2. Datos de ejemplo para interpolación
Interpolate
0 6.0
1 8.0
2 3.0
3 NaN
4 NaN
5 Nan
6 12.0
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 24
Entre varias técnicas de interpolación existe aquella que se realiza con datos adyacentes y la
de interpolación lineal. En la figura 9 se muestra un ejemplo aplicando interpolación por datos
adyacentes. Como se puede observar los valores faltantes se rellenan con valores adyacentes
existentes. Para la fila 3 y 4 se ha seleccionado el valor de la fila 2 que es el valor 3.0.
Figura 9. Interpolación por datos adyacentes
En la figura 10 se han rellenado los datos faltantes por interpolación lineal. La gráfica
resultante muestra una mayor continuidad. Los valores faltantes comienzan ascendiendo de
valor para dar continuidad desde el valor 3.0 de la fila 2 hasta llegar al valor 12.0 de la fila 6.
Figura 10. Interpolación lineal
La gráfica resultante da una continuidad en los datos presuponiendo que los datos faltantes
han ido creciendo en un sentido ascendente.
Otras técnicas empleadas
A continuación, se explican dos técnicas empleadas en Machine Learning que se han aplicado
en este trabajo:
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 25
Rolling
La función pandas dataframe.rolling() proporciona una serie de cálculos sobre una ventana
móvil. Este concepto de cálculo de ventana móvil se utiliza principalmente en el procesamiento
de señales y en el tratamiento de datos de series temporales. De manera resumida se puede
decir que se toma un tamaño de ventana de k y se realiza alguna operación matemática
deseada en ella. Una ventana de tamaño k quiere decir que se toman k valores consecutivos
al mismo tiempo para realizar los cálculos. Esta definición ha sido extraída de Shubham
Ranjan (Ranjan, s.f.)
Una de las estadísticas de rolling más populares es la del promedio móvil
(Pythonprogramming, 2015). Consiste en tomar una ventana de tiempo en movimiento y
calcular el promedio o la media de ese período como el valor actual.
En la figura 11 se muestra un ejemplo de aplicación de rolling sobre el consumo eléctrico en
un rango horario. En azul el consumo en el rango de noche (00-06h) aplicado rolling.
Figura 11. Rolling sobre el un rango horario.
En este trabajo la operación sobre la ventana va a ser la media de los valores.
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 26
Como ejemplo de uso de la técnica de rolling existe un estudio sobre la predicción de consumo
energético en la India (Kumar & Jainb, 2010). En este estudio se realizan simultáneamente
predicciones con tres modelos diferentes para distintos tipos de consumo energético (petróleo,
carbón, gas y electricidad). Uno de estos modelos está formado por un Grey-model junto a un
mecanismo de Rolling para realizar predicciones sobre carbón y electricidad.
Existe otro estudio que examina la relación entre el consumo de energía renovable y el
crecimiento económico en Pakistán realizado entre los años 1972 y 2011 (Muhammad,
Nanthakumar, Mohammad, & Khalid, 2015). En este estudio se emplea un modelo de auto
regresión, así como una ventana con rolling.
Coeficiente de variabilidad
Una buena definición es la que realiza Hervé sobre este coeficiente (Hervé, 2010, págs. 1-5).
El coeficiente de variabilidad mide la variabilidad de una serie de números
independientemente de la unidad de medida utilizada para estos. Para hacerlo, el coeficiente
de variabilidad elimina la unidad de medida de la desviación estándar de una serie de números
y la divide por la media de estos. Este coeficiente puede usarse para comparar distribuciones
obtenidas con diferentes unidades, como, por ejemplo, la variabilidad de los pesos de los
recién nacidos (medidos en gramos) con el tamaño de los adultos (medidos en centímetros).
En este trabajo el coeficiente de variabilidad se realiza sobre el mismo tipo de unidades de
energía.
Se menciona este coeficiente en el libro Applied Multivariate Statistics in Geohydrology and
Related Sciences (E. Brown, 1998) donde se realiza una definición de este. Se explica cómo
a partir del 30% de valor el valor no es estable, así como valores próximos a cero pueden
generar valores inexactos.
Existe otro estudio que maneja esta variable para calcular la variabilidad de temperatura del
agua. El objetivo es comprobar cómo influye en el blanqueo del coral marino los cambios de
temperatura (W. Sammarco, Winter, & Stewart, 2006, págs. 1337-1344).
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 27
3. Objetivos y metodología de trabajo
3.1. Objetivo general
Aunque las empresas suministradoras de energía ya realizan estimaciones sobre el consumo
energético de los hogares, en este trabajo se va a analizar con mayor profundidad cómo se
puede obtener más información de los hábitos de consumo en los hogares. Conociendo en
profundidad estos hábitos se van a poder dar respuestas a ciertas preguntas que pueden
resultar de gran interés tanto para las empresas como para los propios usuarios.
Al terminar este trabajo se quieren obtener resultados sobre los hábitos de los hogares
analizados.
Los objetivos generales son:
• Detectar hogares cuyo consumo en la franja horaria nocturna es bajo y estable en el
tiempo respecto a los demás rangos. De esta manera se podrán separar hogares que
realizan un uso de la energía más habitual frente a los que tienen otro tipo de
costumbres, es decir obtener hogares con hábitos atípicos.
• Predecir el consumo energético de los hogares por rango horario
• Diferenciar hogares cuyo consumo en rangos diurnos es mayor que en rangos horarios
de tarde-noche.
3.2. Objetivos específicos
Para obtener los resultados sobre estas cuestiones será necesario llevar una metodología de
trabajo que permita alcanzar los objetivos deseados. Antes de alcanzar estos objetivos será
necesario alcanzar otros objetivos más específicos como:
• Seleccionar un agrupamiento adecuado de las mediciones de consumo
• Seleccionar un filtrado adecuado de la información, desechando datos erróneos o que no
aporten información relevante
• Escoger un modelo estadístico que describa de manera adecuada el comportamiento de
los hogares
• Representar mediante ciertos parámetros y gráficas la evolución de los hogares en
consumo, su clasificación junto otros hogares y nivel de adecuación del modelo elegido a
un hogar concreto.
• Generar ficheros y gráficos intermedios (clasificaciones, coeficientes y agrupamientos)
para poder reutilizarlo en futuros trabajos.
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 28
3.3. Metodología de trabajo
Durante el proceso de elaboración de este trabajo se ha creado inicialmente un diagrama de
Gantt que ha permitido establecer unas pautas para organizar las etapas a seguir para
terminar este TFM. Los tiempos de realización de cada tarea han ido modificándose
levemente para adaptarse a las dificultades que se han ido encontrando (ver figura 12).
Figura 12. Diagrama Gantt
La planificación inicial de tareas, la limpieza de datos y la comprensión en general de los
mismos ha ocupado más tiempo del previsto. Una vez que la limpieza y agrupación de los
datos fue la adecuada y se tuvo un buen conocimiento del comportamiento de los datos se
pudo decidir sobre qué técnicas de análisis eran las adecuadas para la consecución de los
objetivos.
Durante las primeras etapas de análisis de datos se buscó un software que fuera apropiado
para procesar y transformar la información. Finalmente se decidió utilizar la suite Anaconda
descrita en el apartado 2.2.2. Después de limpiar los datos se han generado mediante varias
hojas de trabajo gráficas para cada hogar que aportan información sobre cómo se distribuye
semanalmente el consumo horario, así como, gráficas de dispersión sobre cómo se
distribuyen los datos. Posteriormente a la generación de estas gráficas se han generado
ficheros que guardan para cada hogar información sobre las medias y coeficientes de
consumo eléctrico para cada hogar.
Tomando como base estos ficheros se ha realizado el estudio de agrupación de hogares con
bajo y estable consumo en horario nocturno. Los resultados han quedado registrados en
ficheros y gráficos mediante diversas hojas de trabajo.
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 29
A continuación, se ha realizado el estudio de predicción de consumo eléctrico mediante el uso
de un modelo de auto regresión. Se han utilizado nuevas hojas de trabajo para realizar la
predicción y también para generar gráficas con los resultados obtenidos.
Para finalizar se ha utilizado una nueva hoja de trabajo para agrupar los hogares según el
consumo horario en rangos horarios diurnos (de 6 de la mañana a 6 de la tarde) y de tarde-
noche (de 6 de la tarde a 6 de la mañana).
Mediante el uso de varias hojas de trabajo se permite modularizar todas las etapas de
desarrollo (limpieza de datos, generación de gráficas, generación de coeficientes etcétera).
Además, se permite la reutilización de ficheros de salida que pueden utilizarse para estudios
diferentes.
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 30
4. Desarrollo específico de la contribución
En este apartado se analizan y explican las diferentes etapas que se han realizado para llegar
a alcanzar los objetivos deseados. Se inicia el capítulo realizando una descripción del origen
de los datos que han servido de base para el desarrollo de este TFM. A continuación, se
describen los pasos realizados para limpiar los datos antes de comenzar a tratarlos.
4.1. Código realizado para este trabajo
Todo el código realizado en este TFM se encuentra disponible en github. El proyecto se llama
TFM_JPP4 y se encuentra disponible bajo una licencia MIT5. Cuenta con todas las hojas de
trabajo necesarias para obtener los gráficos, las predicciones y las agrupaciones descritas en
esta memoria. Dispone de un breve fichero Readme.md donde se dan las instrucciones para
poder ejecutar todo el código.
Figura 13. Fichero README.md con las instrucciones para ejecutar el código
A continuación, como referencia, se da una breve descripción de cada hoja de trabajo
realizada. En las figuras expuestas a continuación se muestra para cada hoja de trabajo el
fichero o ficheros de entrada y también el fichero o ficheros de salida.
4 Web: https://github.com/juanonlab/TFM_JPP 5 Web: https://github.com/juanonlab/TFM_JPP/blob/master/LICENSE
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 31
01_Generar_datos_limpiados_semanal_rango_horario
Esta hoja de trabajo procesa los ficheros originales. Son 20 ficheros, uno por cada hogar. En
el juego de datos original el fichero CLEAN_HOUSE14.csv no existe y por eso no aparece
ningún fichero relacionado con los hogares que contenga este número.
Figura 14. Hoja de trabajo 01.
Después de realizar las transformaciones de datos necesarias: suavizado (rolling),
agrupaciones (por rangos horarios y por semanas) y limpieza de datos, se procede a generar
20 ficheros ya filtrados que servirán de base para generar gráficas, calcular predicciones y
generar ficheros con medias y coeficientes. Estos ficheros ya muestran el consumo de cada
hogar separado por rango horario. Se puede decir que son los ficheros de partida para realizar
posteriores análisis.
01b_Generar_datos_limpiados_semanal_rango_horario
Similar a la hoja de trabajo anterior, pero no se realiza un suavizado (rolling) de la información
contenida en los ficheros. De esta manera se pueden comparar las gráficas con y sin este
suavizado en posteriores estudios.
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 32
Figura 15. Hoja de trabajo 01b
02_Generar_graficas_semanal_rango_horario
Guarda en la carpeta IMG_GRAPH las gráficas sobre cómo se distribuye semanalmente por
cada hogar y en distintos rangos horarios el consumo energético. Los ficheros de origen son
los generados en la hoja de trabajo 01 (ver figura 14).
Figura 16. Hoja de trabajo 02.
Genera ficheros de imagen del estilo Hogar_X_filtro_semanal_rango.png siendo X el número
de hogar.
02b_Generar_graficas_semanal_rango_horario_NR
Genera en la carpeta IMG_GRAPH las gráficas sobre cómo se distribuye semanalmente por
cada hogar y en distintos rangos horarios el consumo energético, pero tomando de base
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 33
ficheros que no han aplicado rolling. Los ficheros de origen son los generados en la hoja de
trabajo 01b (ver figura 15)
Figura 17. Hoja de trabajo 02b.
Genera ficheros de imagen del estilo Hogar_X_filtro_semanal_rango_NR.png siendo X el
número de hogar.
03_Generar_medias_coeficientes_por_rango_horario
A partir de los ficheros que han sido generados en la hoja de trabajo 01 (ver figura 14) y
coeficientes que se utilizarán en hojas de trabajos posteriores. Genera un fichero llamado
Medias_Y_Coeficientes_Hogares.csv con medias y coeficientes para cada hogar.
Figura 18. Hoja de trabajo 03.
Se genera un único fichero llamado Medias_Y_Coeficientes_Hogares.csv que contiene
parámetros que serán utilizados en otras hojas de trabajo para realizar análisis de clustering
(Hoja de trabajo 03b) y clasificación de hogares por hábitos de consumo (Hoja de trabajo 08).
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 34
03b_Clustering_coef_variabilidad
Esta hoja de trabajo toma como entrada el fichero csv generado en la hoja de trabajo 03 (ver
figura 18). Clasifica los hogares según varios coeficientes. Se hace además el análisis de
silhouette para varios clústeres.
Figura 19. Hoja de trabajo 03b
Genera en la carpeta IMG_CLUSTER 2 agrupaciones de hogares según distinto tipo de
clústeres.
Los ficheros de imagen generados son:
• Kmeans_rango_horario_2_centroides.png
• Kmeans_rango_horario_4_centroides.png
Se generan además 2 ficheros csv con la categoría a la que pertenecen cada hogar:
• CategoriasKmeans_2_Centroides.csv
• CategoriasKmeans_4_Centroides.csv
Esta hoja de trabajo realiza el análisis para 2 y 4 centroides específicamente.
04_Validacion_rango_horario
Esta hoja de trabajo se encarga de generar predicciones a partir de unos datos de
entrenamiento y empleando un modelo de auto regresión.
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 35
Figura 20. Hoja de trabajo 04.
Genera ficheros csv con las predicciones con el modelo entrenado y los valores de test. La
información generada se podrá comparar a posteriori para poder obtener conclusiones. Unos
ficheros de salida usan un modelo de auto regresión con la técnica de walk forward y otros no
la utilizan. Los ficheros respectivamente son del tipo: Hogar_X_validacion_wfmodeloAR.csv y
Hogar_X_validacion_normalmodeloAR.csv. Siendo X el número de hogar.
04b_Prediccion_rango_horario
Esta hoja de trabajo se encarga de entrenar el modelo a partir de todos los datos disponibles.
Los ficheros de entrada provienen de la salida de la hoja de trabajo 01 (ver figura 15).
Figura 21. Hoja de trabajo 04b.
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 36
Genera ficheros csv con las predicciones con el modelo entrenado. Se generan tantos ficheros
como hogares. Los ficheros respectivamente son del tipo: Hogar_X_prediccion.csv. Siendo X
el número de hogar.
Se generan además gráficas con esta predicción. Son del tipo Hogar_X_prediccion.png y se
guardan en la carpeta IMG_PRED.
05_Prediccion_grafica_wf_normal_modelo_AR
Esta hoja de trabajo se encarga de generar las gráficas de las predicciones tanto para el
modelo normal como para el modelo que ha utilizado validación con walk forward. Recibe las
predicciones realizadas en la hoja de trabajo 04 (ver figura 20).
Figura 22. Hoja de trabajo 05.
En la carpeta IMG_PRED se guardan ficheros del siguiente estilo:
• Hogar_X_prediccion_normalmodeloAR_RANGO_.png
• Hogar_X_prediccion_wfmodeloAR_RANGO_.png
Siendo X el número de hogar y RANGO uno de los 4 rangos horarios creados. Estas gráficas
se generan por motivos informativos y para comprobar las dos técnicas de predicción (normal
y walk forward).
06_Dispersion_grafica
Esta hoja de trabajo genera gráficas de dispersión con la distribución del consumo energético
por rangos.
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 37
Figura 23. Hoja de trabajo 06.
Genera 2 tipos de ficheros. En uno de ellos los datos provienen de los ficheros generados de
la hoja de trabajo 01 (ver figura 15) y la hoja de trabajo 01b (ver figura 16).
Se generan ficheros de imagen del tipo:
• Hogar_X_filtro_semanal_rango_dispersion.png
• Hogar_X_filtro_semanal_rango_NR_dispersion.png
En ambos casos X indica el número de hogar y se guardan las gráficas en la carpeta
IMG_DISP. El objetivo de estas gráficas es comparar para un mismo hogar como es la gráfica
de dispersión empleando la técnica de rolling o sin ella.
07_RMSE_R2
Esta hoja de trabajo genera las variables RMSE y R2 utilizadas en el apartado de predicción
de consumo. Como origen de datos se utilizan los datos generados en la hoja de trabajo 05
(ver figura 22).
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 38
Figura 24. Hoja de trabajo 07.
Se generan ficheros del estilo Hogar_X_RMSE_R2.csv siendo X el número de hogar.
08_Gasto_electrico_dia_noche
Esta hoja de trabajo genera un fichero que indica que hogares tienen mayor consumo rangos
de tarde-noche que diurnos. Tomo como origen de datos el fichero generado por la hoja de
trabajo 03 (ver figura 18).
Figura 25. Hoja de trabajo 08.
Genera un fichero csv llamado Consumo_agrupado_dia_noche.csv que lista los 20 hogares
usados en el estudio y para cada hogar muestra su consumo total medio en rangos horario
de tarde-noche, rangos horarios de día y un valor que indica si su consumo es mayor por el
día o por la tarde-noche.
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 39
4.2. Origen de los datos
Los datos originales provienen de un estudio realizado por David Murray, Lina Stankovic y
Vladimir Stankovic. En este estudio (Murray, Stankovic, & Stankovic, 2017) se monitoriza el
gasto eléctrico de 20 hogares del Reino Unido durante un periodo de 2 años. La selección de
estos 20 hogares se realizó sobre una selección inicial de 57 hogares. Se seleccionaron estos
hogares por diversos motivos:
• Familiaridad con la tecnología
• Número de personas en la vivienda
• Rango de edad de los ocupantes
• No tener problemas con la instalación de los sensores
Durante estos años se realizaron más de 1 millón de lecturas sobre los aparatos eléctricos de
cada hogar.
Sobre las 20 viviendas se anotaron las características de cada hogar6 y se obtuvo:
Tabla 3. Características de las viviendas
Casa Residentes Edad Aparatos Tipo Habitaciones
1 2 1975-1980 35 Chalet 4
2 4 - 15 Adosado 3
3 2 1988 27 Chalet 3
4 2 1850-1899 33 Chalet 4
5 4 1878 44 Vivienda
adosada
4
6 2 2005 49 Chalet 4
7 4 1965-1974 25 Chalet 3
8 2 1966 35 Chalet 2
9 2 1919-1944 24 Chalet 3
10 4 1919-1944 31 Chalet 3
11 1 1945-1964 25 Chalet 3
12 3 1991-1995 26 Chalet 3
13 4 >2002 28 Chalet 4
15 1 1965-1974 19 Adosado 3
16 6 1981-1990 48 Chalet 5
17 3 Años 60 22 Chalet 3
18 2 1965-1974 34 Chalet 3
19 4 1945-1964 26 Adosado 3
20 2 1965-1974 39 Chalet 3
21 4 1981-1990 23 Chalet 3
6 Web: https://www.nature.com/articles/sdata2016122/tables/2
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 40
Para la toma de los datos durante ese proyecto fue necesaria la creación de una web y un
servidor. Además, se ideó un sistema que realizaba lecturas de cada componente eléctrico y
enviaba esa información cada 8 segundos al servidor central. En la figura 26 se muestra un
diagrama del sistema de captura de datos.
Figura 26. Esquema de captura de los datos
Existían además 6 hogares que disponían de paneles solares. En 3 hogares (3, 11 y 21) no
fue posible suprimir está conexión para no interferir con las lecturas de consumo eléctrico.
Dada la complejidad de los sistemas de captura de la información, el monitoreo permanente
y el alto volumen de datos capturados es muy posible que existieran fallos de lecturas durante
todo el proceso.
Una vez descrito el experimento y publicado en la red se realizó una segunda limpieza de los
datos por David Murray y Lina Stankovic. En este juego de datos7 se realizó una limpieza
eliminando aquellos datos que estaban repetidos, valores no disponibles y transformando los
valores muy elevados (aquellos que llegaban al límite del medidor del aparato) al valor 0.
7 Web: https://pureportal.strath.ac.uk/files/62090184/CLEAN_REFIT_081116.7z
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 41
Este juego de datos ya limpiados se compone de varios ficheros csv. Existe un fichero csv por
cada hogar. En la tabla 4 se muestra un ejemplo del formato del fichero csv existente para
cada uno.
Tabla 4. Formato fichero csv por cada hogar
Time Unix Aggregate Appliance1 … Appliance9
2013-10-09 13:06:17 1381323977 523 74 … 1
2013-10-09 13:06:31 1381323991 526 75 … 1
… … … … … …
2013-07-05 23:31:54 1383694277 184 0 … 1
De cada tabla se ha tomado en cuenta el campo Time y el campo Aggregate. El campo Time
permite saber el momento concreto en el que se realizó una medición concreta. El espacio de
tiempo entre cada medición es de solo unos segundos. El campo Aggregate mide el consumo
global de la vivienda. Estos dos campos (junto al campo de fecha Unix) son los únicos campos
comunes de todas las viviendas.
Los campos Appliance se componen de agrupaciones de electrodomésticos propias de cada
vivienda. Existe un documento8 donde se puede obtener tanto las características de cada
vivienda como el tipo de aparatos eléctricos conectados a la misma.
Del documento indicado se muestra a modo de ejemplo la correspondencia de los aparatos
eléctricos conectados en las viviendas 6 y 7. En la tabla 5 se muestra los aparatos de la
vivienda 6.
Tabla 5. Aparatos eléctricos en vivienda 6
Hogar 6
Appliance 1 Freezer, Whirlpool, CV128W
Appliance 2 Washing Machine, Bosch, Classixx 1200 Express
Appliance 3 Dishwasher, Neff, Unknown
Appliance 4 MJY Computer, Unknown, Unknown
Appliance 5 TV/Satellite, Samsung, UE55F6500SB
Appliance 6 Microwave, Neff, H5642N0GB/02
Appliance 7 Kettle, ASDA, GPK101W
Appliance 8 Toaster, Breville, PT15
Appliance 9 PGM Computer, Unknown, Unknown
8 Web: https://pure.strath.ac.uk/ws/portalfiles/portal/62090183/CLEAN_READ_ME_081116.txt
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 42
A continuación, se muestra en la tabla 6 los aparatos conectados a la vivienda 7. Como se
puede observar se dispone en ese hogar de dos congeladores. El lavavajillas (Appliance 6) y
el segundo congelador (Appliance 3) han sido modificados. Los aparatos conectados no se
guardan en el mismo tipo de variable ya que el tipo de electrodomésticos no siempre es el
mismo para cada hogar.
Tabla 6. Aparatos eléctricos en vivienda 7
Hogar 7
Appliance 1 Fridge, Bosch, KSR30422GB
Appliance 2 Freezer(1), Whirlpool, AFG 392/H
Appliance 3 Freezer(2), Unknown, Unknown, (Change 23 Nov 2013)
Appliance 4 Tumble Dryer, White Knight, Unknown
Appliance 5 Washing Machine, Bosch, Unknown
Appliance 6 Dishwasher, Unknown, Unknown, (Change 20 May 2014)
Appliance 7 Television Site,
Appliance 8 Toaster, Unknown, Unknown
Appliance 9 Kettle, Sainsburys, 121988254
En este trabajo se ha querido comparar a todos los hogares y por esta razón se ha utilizado
el campo global común Aggregate, Se podría haber realizado un estudio individual de cada
hogar con sus aparatos eléctricos, pero ese estudio no se ha tratado en este trabajo.
Con todas las modificaciones realizadas en el juego de datos puede que la precisión de las
mediciones no sea exacta pero la tendencia global de consumo de cada hogar no debería
quedar muy afectada. Queda fuera de este trabajo validar la exactitud de las mediciones. Un
interesante trabajo sería diseñar aparatos medidores de consumo energético más fiables y
que cumplieran algún estándar concreto para minimizar el fallo en las lecturas.
4.3. Limpieza de los datos
En este apartado el objetivo a alcanzar es transformar y realizar mayor limpieza de los datos
obtenidos en el punto 4.1. Para ello se utiliza una hoja de trabajo que va a realizar las
siguientes operaciones sobre los datos:
• Agrupar los datos por rango horario
• Limpiar datos no disponibles mediante interpolación lineal
• Aplicar rolling para suavizar los valores finales
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 43
• Tratamiento de valores inusuales
• Crear un fichero por cada hogar con el consumo semanal por rango horario
Agrupar los datos por rango horario
En esta sección se van a agrupar los datos de cada hogar por rango horario diario. Esta es la
primera parte del proceso para obtener un fichero agrupado por rango horario. Por cada día
se obtiene en cada rango el consumo acumulado. Este proceso se repite para cada hogar.
En esta etapa intermedia el resultado quedaría así:
Tabla 7. Agrupación por rango horario diario para un hogar
Time Aggregate Hora
2014-03-06 12:00:00 266.463115 12
2014-03-06 18:00:00 859.137496 18
2014-03-07 00:00:00 1442.860323 0
2014-03-07 06:00:00 199.217453 6
2014-03-07 12:00:00 191.393809 12
2014-03-07 18:00:00 182.766835 18
2014-03-08 00:00:00 1202.994989 0
2014-03-08 06:00:00 193.236842 6
… … …
Para trabajar con datos lo más recomendado en pandas es utilizar un dataframe como en el
de la tabla 7. En este dataframe el índice es el campo Time y se utilizará el campo Hora para
realizar agrupaciones por rango horario. Como se puede observar hay 4 rangos horarios (0,
6,12 y 18).
Limpiar datos no disponibles mediante interpolación lineal
Una vez agrupados los datos se limpian por interpolación lineal.
1. def limpiarDatos(dt_filtrado, rango): 2. """Limpia los valores NA. para un rango dado 3. 4. Argumentos: 5. dt_filtrado -- tabla con todos los datos 6. rango -- rango a filtrar 7. """ 8. # Se seleccionan aquellos valores del rango hora 9. # pasado por parámetro (0, 6, 12 ó 18) 10. dt_filtrado_Rango = dt_filtrado[dt_filtrado_6H.Hora == rango] 11. 12. # Limpieza de NA 13. dt_filtrado_Rango = dt_filtrado_Rango.interpolate(method ='linear', limit_directi
on ='forward')
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 44
14. 15. return dt_filtrado_Rango
El método limpiarDatos es el encargado de eliminar datos no disponibles y devolver para un
rango concreto los datos modificados por interpolación lineal. Este método recibe todos los
datos ya agrupados por rango horarios (en el parámetro de entrada dt_filtrado) y selecciona
como respuesta los datos limpiados, pero de un rango concreto (se pasa el valor del rango a
obtener en el parámetro de entrada rango).
Aplicar rolling para suavizar los valores finales
La variabilidad de los resultados de consumo por semana puede ser muy amplia al medir el
consumo energético de los hogares. Una semana pueden existir picos muy altos y otros más
bajos. El objetivo general es conocer la tendencia de consumo de estos hogares durante un
periodo de tiempo prolongado; por lo tanto, el suavizado de la gráfica inicial no afecta en
exceso al resultado final del análisis. En la figura 27 se muestra el hogar 7 con el consumo
energético por rangos horarios sin aplicar rolling.
Figura 27. Consumo Hogar 7 sin aplicar rolling.
En la figura 28 el mismo hogar con rolling aplicado. Esta técnica sigue permitiendo observar
cual es el consumo en un rango horario, pero con menor variabilidad en los resultados.
Permite mejorar la predicción de consumo y observar de manera más clara cual es la
tendencia de consumo de las viviendas. Se puede observar además que aplicar rolling no ha
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 45
modificado la tendencia de consumo durante toda la línea temporal. Es decir, tanto en la figura
27 como en la figura 28 se observa como el rango en rojo (18-00) está por encima del rango
en verde (12-18).
Mediante las gráficas de dispersión de este hogar se puede comprobar también la proporción
de consumo por rango horario. En azul el rango nocturno (00-06). En las dos gráficas se
concentran en la parte inferior izquierda de la gráfica ya que el consumo es constante y muy
bajo. La proporción de consumo energéticos en los demás rangos se mantienen, pero la
dispersión de la gráfica sin rolling es mucho mayor (figura 29) que la que tiene aplicado rolling
(figura 30) que presenta mayor linealidad.
Figura 28. Consumo Hogar 7 aplicando rolling.
Se muestra mayor dispersión de los datos en la gráfica sin rolling.
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 46
Figura 29. Gráfica dispersión sin rolling. Hogar 7.
En la figura 29 se muestra la dispersión cuando a los datos se les ha aplicado rolling.
Figura 30. Gráfica dispersión con rolling. Hogar 7.
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 47
Los valores presentan menor dispersión al aplicar rolling a los datos. Este comportamiento
puede observar en la figura 30.
Tratamiento de valores inusuales
Si no se realiza rolling a los datos las gráficas muestran picos abruptos de valores muy bajos
o muy altos. Los picos de consumo en las viviendas son complicados de tratar como un pico
real o como un error de lectura.
La variación de un consumo energético de una semana a otra podría ser muy diferente debido
a diversas causas: épocas estivales o invernales que hagan aumentar el uso del aire
acondicionado de manera puntual, mayor número de personas en el hogar de manera puntual
o un aumento aleatorio de más aparatos eléctricos conectados. Son causas razonables que
pueden provocar picos de consumo más altos. En estos casos es difícil distinguir si es un error
de lectura de los sensores o picos razonables de consumo.
Por este motivo y dado que los datos ya han sido limpiados previamente no se tratarán este
tipo de picos de consumo.
Generación de ficheros con los datos limpiados
Finalmente se generará para cada hogar un fichero con los datos limpiados y ya preparados
para ser tratados. Todo el proceso ha sido realizado a partir de la hoja de trabajo 019 . En la
figura 31 se muestra un esquema que resume los pasos seguidos para obtener estos ficheros.
El formato de los ficheros de salida es: Hogar_X_filtro_semanal_rango.csv siendo X el número
de hogar tratado.
En la salida final de cada fichero los rangos horarios aparecen en 4 columnas y existe una
columna llamada Time que muestra la línea temporal organizada por semanas. El formato
final del fichero se puede observar en la tabla 8.
9 Enlace: https://github.com/juanonlab/TFM_JPP/blob/master/01_Generar_datos_limpiados_semanal_rango_horario.ipynb
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 48
Figura 31. Esquema generación fichero datos limpiados
Estos ficheros son la base de estudio para realizar los posteriores análisis. Son necesarios
para genera gráficas (de dispersión y evolución de consumo) y generar otro tipo de ficheros
(sobre coeficientes, medias y clasificaciones).
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 49
Tabla 8. Formato final datos de los hogares transformados y limpiados
Time Rango 00-06 Rango 06-12 Rango 12-18 Rango 18-00
2014-07-06 175.42 1298.17 935.56 232.46
2014-07-13 172.38 1304.37 924.59 226.2
2014-07-20 167.75 1304.99 918.84 222.36
2014-07-27 169.41 1301.19 894.04 223.18
… … … … …
4.4. Hogares con mayor consumo en franjas horarias diurnas
y bajo consumo en horario nocturno
En esta línea de investigación se van a clasificar los hogares con un bajo y estable consumo
nocturno y un consumo mayor por el día. Está clasificación de hogares puede ser muy útil
para las empresas suministradores de energía.
Las empresas van a poder ofrecer ofertas que premien ese bajo consumo nocturno. Será
posible analizar también los hogares que no cumplen esos requisitos. Pueden ser hogares
que en horarios nocturnos realicen un mayor gasto energético debido a diferentes motivos:
trabajos nocturnos, trabajos por turnos rotativos, etcétera. Este tipo de hogares se podrían
estudiar para realizar estudios de marketing específicos.
4.4.1. Descripción del experimento y resultados
Para poder clasificar los hogares que cumplen los requisitos descritos y cuáles no, se va a
aplicar una técnica de clustering. Es una técnica de aprendizaje no supervisado ya que no
conocemos a priori como agrupar estos hogares. En el entorno de desarrollo de este TFM se
va a utilizar el algoritmo K-means.
Para obtener estos grupos de hogares se deben establecer que variables van a ser necesarias
para realizar la clasificación. Mediante estas variables se va a poder ejecutar el algoritmo de
clustering.
En este caso se van a utilizar dos variables:
• Coeficiente de variación de consumo nocturno
• Proporción de gasto energético nocturno respecto al consumo durante el día
El coeficiente de variación permite medir la variación del consumo eléctrico en el rango horario
de 0 a 6 horas. Si el coeficiente es inferior al 20% se considerará que los valores son
homogéneos durante toda la línea de tiempo.
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 50
Para su cálculo se tiene:
𝐶𝑣 =𝜎
𝑋∙ 100%
Donde 𝜎 es la desviación típica y X es la media. Se multiplica por 100 para obtener el resultado
en porcentaje.
Para calcular la proporción de gasto energético por la noche respecto al gasto diurno se va a
sumar todo el gasto energético de cada semana y hacer la media (por cada rango horario).
Después se va a obtener la proporción que representa el rango horario de 0 a 6 horas. El
cálculo sería:
𝑅𝑎𝑛𝑔𝑜00−06ℎ
𝑅𝑎𝑛𝑔𝑜00−06ℎ + 𝑅𝑎𝑛𝑔𝑜06−12ℎ + 𝑅𝑎𝑛𝑔𝑜12−18ℎ + 𝑅𝑎𝑛𝑔𝑜18−00ℎ ∙ 100
Tomando como partida los ficheros que se han generado en la hoja de trabajo 01 (ver figura
14) se va a utilizar la hoja de trabajo 03 (ver figura 18) para generar el coeficiente de variación
y la proporción de gasto por cada hogar que son los datos que se necesitan. Esta hoja de
trabajo vuelca los resultados en el fichero Medias_Y_Coeficientes_Hogares.csv.
A continuación, se muestra el método encargado de calcular todas estas medias y
coeficientes. Se llama a este método tantas veces como número de hogares hay.
1. def calcularDesviacionMediaCoeficiente(dataset, numeroHogar, contador, df): 2. """Genera un data frame calculando la desviacion, 3. la media y el coeficiente de variabilidad para todos los rangos 4. Y la proporcion de consumo del rango 00-06 en relacion al resto 5. Argumentos: 6. dataset -- datos de un hogar 7. numeroHogar --- numeroHogar 8. contador -- contador 9. df -- dataframe 10. """ 11. # Se calcula la desviacion y la media para cada rango 12. desviacionColumnas = dataset.std(axis = 0, skipna = True) 13. mediaColumnas = dataset.mean(axis = 0, skipna = True) 14. coef0 = (desviacionColumnas[0]/mediaColumnas[0])*100 15. coef1 = (desviacionColumnas[1]/mediaColumnas[1])*100 16. coef2 = (desviacionColumnas[2]/mediaColumnas[2])*100 17. coef3 = (desviacionColumnas[3]/mediaColumnas[3])*100 18. 19. # Se calcula la proporcion de consumo nocturno 20. # en relacion al resto de consumo de los demas rangos 21. sumaMediasRangos = mediaColumnas[0]+mediaColumnas[1]+mediaColumnas[2]+mediaColum
nas[3] 22. proporc_r0 = (mediaColumnas[0]*100)/sumaMediasRangos 23.
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 51
24. # Se guarda en una fila los resultados y se redondea a 2 decimales 25. df.loc[contador, 'stdRango 00-06'] = desviacionColumnas[0].round(2) 26. df.loc[contador, 'meanRango 00-06'] = mediaColumnas[0].round(2) 27. df.loc[contador, 'coefRango 00-06'] = coef0.round(2) 28. df.loc[contador, 'stdRango 06-12'] = desviacionColumnas[1].round(2) 29. df.loc[contador, 'meanRango 06-12'] = mediaColumnas[1].round(2) 30. df.loc[contador, 'coefRango 06-12'] = coef1.round(2) 31. df.loc[contador, 'stdRango 12-18'] = desviacionColumnas[2].round(2) 32. df.loc[contador, 'meanRango 12-18'] = mediaColumnas[2].round(2) 33. df.loc[contador, 'coefRango 12-18'] = coef2.round(2) 34. df.loc[contador, 'stdRango 18-00'] = desviacionColumnas[3].round(2) 35. df.loc[contador, 'meanRango 18-00'] = mediaColumnas[3].round(2) 36. df.loc[contador, 'coefRango 18-00'] = coef3.round(2) 37. df.loc[contador, 'prop. 00-06 resto'] = proporc_r0.round(2) 38. 39. return df
En las líneas 27 y 37 del método se guardan los coeficientes que se van a utilizar para realizar
la clasificación de los hogares.
A continuación, se utiliza la hoja de trabajo 03b (ver figura 19) que va a realizar las siguientes
acciones:
• Calcular el número óptimo de centroides para k-means
• Generar las gráficas de cómo se distribuyen los hogares según el número de
centroides seleccionados
• Imprimir en un fichero los hogares y la agrupación a la que pertenecen para 2 y 4
centroides
Durante el análisis para el calcular el número de centroides se ha utilizado el coeficiente de
silhouette. Mediante este coeficiente se estima cual es el número de centroides óptimo. Al
ejecutar la hoja de trabajo 03b se imprime por pantalla el resultado del análisis de silhouette.
En esta hoja de trabajo para imprimir los valores de este análisis se creado el método
silhoutte_valor.
1. def silhouette_valor(clusters, X): 2. kmeans_sil = KMeans(n_clusters=clusters).fit(X) 3. labels_sil = kmeans_sil.predict(X) 4. silhouette_media = silhouette_score(X, labels_sil) 5. print("Para ", clusters, " clusteres. La puntuación de silhouette es: ", silhoue
tte_media.round(2))
Recibe como parámetro una lista de clústeres (parámetro clusters) y un array con las variables
a tratar (parámetro X).
Se han realizado pruebas con 6 agrupaciones o clústeres. En la tabla 9 se pueden observar
los resultados que imprime este método.
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 52
Tabla 9. Puntuación análisis silhouette
Número de clústeres Puntuación silhouette
2 0.62
3 0.54
4 0.54
5 0.41
6 0.39
La puntuación más alta se obtiene para 2 clústeres. Esta medida indica que con esa
organización de clústeres los hogares que pertenecen a un clúster concreto están separados
claramente de un clúster vecino. Con un valor inferior la pertenencia de un hogar a un clúster
u otro está menos clara. Este análisis no es definitivo y es orientativo sobre como agrupar los
hogares según un número de centroides.
El análisis indica que la mejor combinación de centroides es utilizar 2. Sin embargo, es mejor
aumentar el número a 4 centroides. Esto es debido a que realmente se quiere obtener un
grupo que se ajuste de la mejor manera a obtener un grupo de hogares que tenga:
• Coeficiente de variabilidad bajo
• Baja proporción de consumo
Los datos necesarios para generar las gráficas se obtienen del método k-means. Este método
recibe los parámetros a comparar guardados en la variable X y un número de clúster (que
será 2 o 4).
1. def calcula_kmeans(X, num_cluster): 2. kmeans = KMeans(n_clusters=num_cluster).fit(X) 3. centroides = kmeans.cluster_centers_ 4. etiquetas = kmeans.predict(X) 5. return kmeans, centroides, etiquetas
La salida devuelve los centroides generados, las etiquetas que indican como queda clasificado
cada hogar y la variable K-means que servirá para futuras clasificaciones.
Para imprimir por pantalla y guardar la distribución de los clústeres y los datos de cada hogar
se utiliza el método guardarGraficaKmeans.
1. def guardarGraficaKmeans(df, centroides, num_centroides): 2. plt.scatter(df['proporc_r0'],df['coef_r0'],c= kmeans.labels_.astype(float), s=50
, alpha=0.5) 3. plt.scatter(centroides[:, 0], centroides[:, 1], c='red', s=50)
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 53
4. plt.title('(coeficiente variabilidad - Proporción consumo energía) \n Para rango horario 00-06h')
5. plt.xlabel('Proporción consumo', fontsize = 16) 6. plt.ylabel('Coeficiente Variabilidad', fontsize = 16) 7. fichero = os.path.join(RUTA_ACTUAL, DIRECTORIO_GUARDADO_IMG, 'Kmeans_rango_horar
io_' + str(num_centroides) +'_centroides.png') 8. plt.savefig(fichero)
Recibe el dataframe con las dos variables utilizadas por k-means:
• Proporc_r0: proporción de consumo del rango nocturno respecto a los demás
• Coef_r0: coeficiente de variabilidad del rango 00-06h para cada hogar
Finalmente se guarda el resultado en un fichero.
A continuación, se muestran en las figuras 32 y 33 la distribución de los grupos para dos y
cuatro centroides generadas por el método guardar gráfica k-means:
Figura 32. Distribución de los hogares con 2 centroides
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 54
Figura 33. Distribución de los hogares con 4 centroides
La figura de cuatro centroides (Figura 33) es más restrictiva que la de dos (Figura 32). Los
hogares agrupados con el color azul son hogares con baja proporción de consumo y bajo
coeficiente de variabilidad. Ninguno de ellos tiene un valor muy superior a 20 en ninguna de
las dos variables aplicadas.
Sin embargo, al observar la figura 32 existen hogares dentro del mismo grupo (en color
amarillo) que superan el coeficiente de variabilidad en más 20 unidades o bien existe un hogar
cuya proporción de consumo es muy alta (cerca de 40).
Queda como una cuestión abierta decidir qué valores se consideran óptimos. Se podría tratar
como una evolución de este TFM: establecer qué valor para la proporción de consumo y
variabilidad es adecuada.
Una hipótesis razonable es pensar que la mayoría de los hogares usan la energía sobre todo
al volver del trabajo o por la mañana si los personas que viven en el hogar son jubilados o
desempleados. Esto indicaría que la mayor parte de los hogares tienen un comportamiento
de bajo consumo nocturno, pero alto durante resto del día. Al observar la figura 33 se
comprueba que existen bastantes hogares que no se posicionan cerca de la esquina inferior
izquierda de la gráfica. Esto indica que existen hogares con unos hábitos de consumo atípicos.
La tabla 10 muestra la agrupación final para 4 centroides. Esta tabla tiene su origen en la
salida de la hoja de trabajo 03b (figura 19). El fichero que se ha generado se llama
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 55
CategoriasKmeans_4_Centroides.csv 10. Todos los hogares de la categoría 1 son los hogares
objetivo y se clasifican con el valor SI, el resto quedan clasificados como NO.
Tabla 10. Clasificación de los hogares
Hogar Categoría Kmeans Bajo Coeficiente y Bajo
consumo (rango 00-06)
Hogar 1 2 NO
Hogar 2 0 NO
Hogar 3 1 SI
Hogar 4 1 SI
Hogar 5 1 SI
Hogar 6 1 SI
Hogar 7 1 SI
Hogar 8 3 NO
Hogar 9 1 SI
Hogar 10 2 NO
Hogar 11 1 SI
Hogar 12 1 SI
Hogar 13 0 NO
Hogar 15 1 SI
Hogar 16 1 SI
Hogar 17 0 NO
Hogar 18 1 SI
Hogar 19 1 SI
Hogar 20 1 SI
Hogar 21 0 NO
Luego los hogares con consumos habituales quedan clasificados como SI y los atípicos como
NO.
Lo razonable es pensar que gran parte de nuestros hogares estarían clasificados como SI. La
mayoría de las personas realizan sus actividades por el día y por la noche se van a dormir.
Este grupo conforma el 65% de los hogares analizados (13 hogares de 20). En los hogares
probados se observa que el 35% restante de hogares tiene unos hábitos menos estables por
la noche. Sería necesario realizar un estudio más detallado y con más hogares para
comprobar si esta proporción se mantiene para más residencias.
10 Fichero: https://github.com/juanonlab/TFM_JPP/blob/master/CategoriasKmeans_4_Centroides.csv
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 56
Los departamentos de marketing podrían obtener información del 35% restante para poder
ofrecerles ofertas concretas y estudiar qué tipo de hábitos tienen este tipo de hogares. Las
empresas suministradoras de energía interpretarían que más de la mitad de los hogares por
las noches tienen un consumo sin grandes alteraciones.
4.4.2. Validación de los resultados
La validación de los resultados para el algoritmo k-means resulta complicada cuando no se
dispone a priori de datos de prueba en los que se conozca la categoría que debe ocupar cada
hogar.
Esta problemática queda expuesta en el libro de introducción a Machine Learning donde se
cita en un fragmento la problemática:
“Un desafío importante en el aprendizaje no supervisado es evaluar si el algoritmo ha
aprendido algo útil. Los algoritmos de aprendizaje no supervisados generalmente se aplican
a datos que no están clasificados, por lo que no sabemos qué datos son correctos o que salida
debería ser. Por lo tanto, es muy difícil decir si un modelo "funcionó bien" [...] A menudo, la
única forma de evaluar el resultado de un algoritmo no supervisado es inspeccionarlo
manualmente” (C. Müller & Guido, 2016, pág. 134).
Este trabajo para este apartado se encuentra en ese caso. Se usa una técnica de aprendizaje
no supervisado para obtener información de un conjunto de hogares donde no tenemos
información a priori de cuál es su clasificación. En este caso queda utilizar la comprobación
manual.
Se va a comprobar con cuatro hogares si el algoritmo ha realizado la clasificación de manera
adecuada. En dos de ellos se espera que sí pertenezcan al conjunto de hogares que se
buscan y en los otros dos no debería pertenecer a esa categoría.
Observando las gráficas de las figuras 34 y 35 se observa como el rango nocturno (línea azul)
no tiene grandes alteraciones y está en la parte más baja de la gráfica. Indicando que su
consumo es mucho más bajo que el resto de los rangos horarios. Los hogares 12 y 19 que
son los hogares que muestran las gráficas son hogares clasificados como SI en la tabla 10.
Son hogares con consumos estables por la noche.
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 57
Figura 34. Consumo energético por rangos. Hogar 12.
Figura 35. Consumo energético por rangos. Hogar 19.
A continuación, se muestra un hogar (en la figura 36) que no entra en la categoría 1 (queda
clasificado como NO) y por lo tanto su consumo es atípico.
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 58
Figura 36. Consumo energético por rangos. Hogar 1.
Es un hogar que tiene un consumo muy irregular en el rango 00-06, luego está claramente
excluido de la clasificación que se está buscando. El hogar 1 queda agrupado en la categoría
2 y no cumple con las condiciones que se buscaban.
Figura 37. Consumo energético por rangos. Hogar 21.
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 59
El hogar de la figura 37 tiene un consumo en horas nocturnas muy inestable con ciertos picos
de alto de consumo. Al tener un consumo inestable el parámetro de coeficiente de variabilidad
es muy alto (40,8). Observando la tabla 10 se comprueba que pertenece a la categoría 0
(Clasificado como NO). Es un hogar que por la noche realiza bastante consumo y no es
estable.
Observando el hogar 8 de la figura 38 se comprueba que su mayor consumo se realiza por la
noche luego queda clasificado como NO.
Dependiendo del número de clústeres elegidos la clasificación podría haber sido distinta. Con
cuatro centroides se observa que la clasificación de hogares de categoría 1 (clasificados como
SI) entran dentro de lo buscado.
4.5. Predicción del gasto energético de los hogares
Una medida útil para los usuarios y sobre todo para las empresas suministradoras de energía
es observar la evolución de consumo de los hogares. Esto permite predecir si va a existir
menos o más consumo en las próximas semanas.
La predicción de todos los hogares se podría sumar entre sí para, por ejemplo, detectar que
semanas del año la empresa suministra más o menos energía a sus clientes. En este apartado
se va a realizar una predicción del consumo energético para las próximas semanas.
4.5.1. Descripción del experimento y resultados
La hoja de trabajo 04b (ver figura 21) es la encargada de generar los ficheros finales con la
predicción de cada hogar por cada rango horario. Como dato de origen se toma el contenido
de los ficheros del tipo: Hogar_X_filtro_semanal_rango.csv.
El método que realiza el entrenamiento del modelo a partir de los datos de cada rango horario
es el método obtenerARModel. A continuación, se muestra el código que realiza el
entrenamiento:
1. def getFinalARModel(series): 2. X = series.values 3. # Entrenar modelo AR 4. model = AR(X) 5. model_fit = model.fit() 6. window = model_fit.k_ar 7. coef = model_fit.params 8. return window,coef,model_fit
Este método es llamado 4 veces. Una por cada rango horario. Posteriormente se realiza la
predicción para cada rango mediante el uso del método predictionAR:
1. def predictionAR(model_fit, data):
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 60
2. predictions = model_fit.predict(start=len(data), end=len(data)+NUM_WEEK-1, dynamic=False)
3. return predictions
Se generan para cada hogar un fichero csv de salida del tipo: Hogar_X_prediccion.csv. El
formato de estos ficheros de salida se puede observar en la tabla 11.
Tabla 11. Fichero Hogar_8_prediccion_wfmodeloAR.csv
Enlace: https://github.com/juanonlab/TFM_JPP/blob/master/Hogar_8_prediccion.csv
Semanas Rango 00-06 Rango 06-12 Rango 12-18 Rango 18-00
0 830.51 1043.0 461.36 506.65
1 803.4 1088.09 448.25 490.75
2 784.96 1147.95 437.71 480.73
3 786.34 1223.01 437.6 474.99
4 810.48 1306.76 447.23 469.22
A continuación, se muestra en la figura 38 la evolución de consumo durante todas las semanas
estudiadas.
Figura 38. Consumo energético por rangos. Hogar 8.
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 61
Se puede observar como el menor consumo en las últimas semanas es para el rango 12-18
seguido de 18-00. En las últimas semanas el consumo en el rango 00-06 ha bajado mientras
que el del rango 06-12 ha subido mucho siendo el de mayor gasto para las últimas semanas.
A continuación, se muestra la predicción para las siguientes cinco semanas. En esta
predicción (Figura 39) se observa cómo se mantiene la evolución seguida en la Figura 38.
Figura 39. Previsión consumo últimas 5 semanas.
Cómo se puede observar el rango horario 06-12h (naranja) va a seguir en aumento esta
tendencia. Así mismo se puede comprobar que para el rango horario 00-06 este permanece
por debajo del rango de color naranja con un descenso estable. El rango 18-00h (rojo) va a
continuar con un consumo ligeramente superior al rango horario 12-18h (verde).
Se ha optado por aplicar un modelo AR (auto regresión) para predecir las siguientes semanas.
Dentro de la familia ARIMA es el modelo más sencillo como se puede observar en el capítulo
2.2.1 (Regresión lineal). El modelo AR presupone que hay cierta relación entre los valores
pasados y los futuros.
Este modelo es un ejemplo de proceso estocástico. Un modelo estocástico representa una
situación donde existe cierto grado de incertidumbre. En otras palabras, es un modelo para
procesos que tiene algún tipo de aleatoriedad.
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 62
En un artículo web Stephanie Glen explica en que consiste esta aleatoriedad: esta
aleatoriedad indica que se podrá predecir la tendencia con datos posteriores, pero no se va a
obtener un 100% de precisión (Glen, 2015).
Se ha realizado un análisis de manera global de todos los hogares y no se ha realizado un
tratamiento personalizado. Realizando un análisis individualizado se podría realizar una
investigación más profunda y usar otros modelos, por ejemplo, para detectar estacionalidad
en los datos.
4.5.2 Validación de los resultados
Para validar los resultados se han utilizado una parte de los datos como datos de
entrenamiento y otros como datos de test. De esta manera se puede comparar la evolución
del modelo y comprobar si al predecir los resultados estos se acercan a los valores de test.
Del hogar 8 se van recoger las 5 últimas semanas como datos de tests. El fichero11 ha sido
generado por la hoja de trabajo 01 (ver figura 14) que es la encargada de generar ficheros ya
limpiados con el consumo semanal separado por rangos horarios.
Se muestra a continuación las últimas líneas del fichero. El resto de las líneas van a utilizarse
para predecir el módelo. Mediante la técnica de walk forward se comprueba como el valor
predicho por el modelo se ajusta al valor de test.
Tabla 12. Fichero del hogar 8 con los consumos por rangos.
Time Rango 00-06h Rango 06-12h Rango 12-18h Rango 18-00h
2014-04-06 1186.04 716.21 500.7 530.39
2014-04-13 1173.98 687.29 479.08 511.0
… … … … …
2015-04-12 1063.69 849.22 472.55 569.69
2015-04-19 980.41 859.27 449.42 546.2
2015-04-26 920.65 889.66 437.66 530.4
2015-05-03 884.67 946.09 444.47 523.06
2015-05-10 859.84 1017.99 459.52 521.23
Las 5 últimas filas serán los datos de test y el resto los datos de entrenamiento.
11 Fichero: https://github.com/juanonlab/TFM_JPP/blob/master/Hogar_8_filtro_semanal_rango.csv
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 63
La hoja de 04 (ver figura 20) es la encargada de generar los ficheros para realizar el análisis
de validación.
Al igual que en las predicciones realizadas en el apartado anterior, para las validaciones es
necesario realizar el mismo proceso para cada rango horario.
1. def obtenerARModel(series): 2. X = series.values 3. train, test = X[1:len(X)-NUMERO_TEST], X[len(X)-NUMERO_TEST:] 4. model = AR(train) 5. model_fit = model.fit() 6. window = model_fit.k_ar 7. coef = model_fit.params 8. return train,test,window,coef,model_fit
Se llamará 4 veces al método obtenerARModel para obtener el modelo entrenado para cada
rango horario. Se devuelve también los datos de entrenamiento y los de tests para tratarlos
más cómodamente en etapas posteriores. Los parámetros window y coef son necesarios para
realizar walk forward y mejorar la predicción y por eso también son devueltos.
Para validar el modelo se han utilizado las siguientes parámetros o técnicas:
• Walk forward validation: para mejorar la validación de la predicción. Una vez que se
ha predicho el resultado ese dato pasa a formar parte de los datos de entrenamiento
siendo necesario reentrenar el modelo por cada data nuevo predicho.
• Coeficiente de determinación ó 𝑅2: es una medida estadística que representa la
proporción de la varianza para una variable dependiente que se explica por una
variable o variables independientes en un modelo de regresión (HAYES, 2019).
• Raíz del error cuadrático medio (RMSE) : mide la diferencia entre los valores previstos
y los valores observados.
Como se está trabajando con cuatro rangos horarios para validar los resultados se van a
mostrar cuatro gráficas. Cada gráfica se compone de dos lineas. Una línea roja que es el valor
real (el de test) y otra de color naranja que es la la predicción. Se mostrará el valor 𝑅2 y el
RMSE medio también para aportar mayor información.
A continuación se muestran las gráficas de predicción obtenidas para el hogar número 8.
Estos datos se han obtenido a partir de la hoja de trabajo 04 (ver figura 20). Entre los ficheros
generados se genera el fichero Hogar_8_validacion_wfmodeloAR.csv con el que se han
rellenado las tablas 13,14, 15 y 16.
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 64
Figura 40. Test y predicción hogar 8. Rango 00-06h
Tabla 13. Valores de energía de test y las predicciones 00-06h
Sem Sem+1 Sem+2 Sem+3 Sem+4
Test 1063.69 980.41 920.65 884.67 859.84
Pred 1106.99 1043.87 963.31 909.79 868.81
En la figura 40 y en la tabla 13 se puede comprobar como la predicción se acerca mucho al
valor real de test para el rango horario 00-06h.
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 65
Figura 41. Test y predicción hogar 8. Rango 06-12h
Tabla 14. Valores de energía de test y las predicciones 06-12h
Sem Sem+1 Sem+2 Sem+3 Sem+4
Test 849.22 859.27 889.66 946.09 1017.99
Pred 843.74 847.24 852.3 895.19 943.4
En la figura 41 y en la tabla 14 se puede observar que la tendencia es similar tanto para los
valores de tests utilizados y los valores calculados en la predicción.
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 66
Figura 42. Test y predicción hogar 8. Rango 12-18h
Tabla 15. Valores de energía de test y las predicciones 12-18h
Sem Sem+1 Sem+2 Sem+3 Sem+4
Test 472.55 449.42 437.66 444.47 459.52
Pred 467.45 463.27 433.26 432.74 447.9
En la figura 30 y la tabla 15 se puede observar alguna diferencia pero ambas gráficas tienen
forma de U.
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 67
Figura 43. Test y predicción hogar 8. Rango 18-00h
Tabla 16. Valores de energía de test y las predicciones 18-00h
Sem Sem+1 Sem+2 Sem+3 Sem+4
Test 569.69 546.2 530.4 523.06 521.23
Pred 581.32 565.33 542.05 524.43 511.32
En la Figura 43 y la Tabla 16 se puede comprobar que la predicción se ajusta al valor real
(valores de test).
En la tabla 17 se muestra un resumen del RMSE (diferencia en valor absoluto del valor real y
el valor predicho) por rango horario. La precisión que debe tener el módelo debe ser alta pero
hay que valorar hasta que punto es adecuado.
Tabla 17. R2 y RMSE.
Rango 00-06h Rango 06-12h Rango 12-18h Rango 18-00h
R2 0.69 0.5 0.32 0.55
RMSE 41.07 44.1 10.1 12.14
RMSE AVG 26.85
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 68
Los datos de la tabla 17 provienen del fichero Hogar_8_RMSE_R2.csv12. Este fichero contiene
también la predicción del modelo normal, es decir sin aplicar walk forward. En la tabla 18 se
pueden comprobar los valores RMSE para el hogar 8.
Tabla 18. RMSE Normal y con Walk forward
Rango 00-06h Rango 06-12h Rango 12-18h Rango 18-00h AVG
RMSE
Normal
159.15 85.78 11.86 37.46 73.56
RMSE
WalkForward
41.07 44.1 10.1 12.14 26.85
En general el RMSE es mucho mayor en el caso de la validación de la predicción sin usar
walk forward lo que indica un peor ajuste.
Dependiendo del modelo a estudiar decidir que es un valor alto o bajo para el coeficiente
RMSE puede ser complicado. Por ejemplo, en un modelo basado en el cálculo de las
temperaturas del mar 10 unidades (temperatura) de desviación es mucho. En unidades de
energía 10 unidades sobre por ejemplo 1000 puede que no sea excesivo porque la variabilidad
de los datos es alta.
Por ejemplo en la tabla 14 y semana+4 se obtiene un valor real de 1017 unidades de consumo
frente a 943. Aunque no es una diferencia pequeña en el ámbito del consumo energético
parece una desviación razonable.
Quedaría por analizar hasta que punto las empresas energéticas quieren dar por bueno estos
valores. Está sujeto a discusión y quizás como trabajo posterior a este TFM sí debería
establecer un baremo a partir del cual un RMSE es válido o no. Habría que implantar unos
parámetros para determinar si es el modelo es aceptable o es necesario un mayor ajuste en
la predicción.
Desde el punto de vista de este trabajo la idea principal es predecir tendencias, se ha realizado
una técnica de rolling agresiva para suavizar la gráfica y favorecer la predicción. Hay que tener
en cuenta también que se están analizando muchos otros hogares que quizás tengan un
comportamiento más aleatorio y no produzcan un resultado tan acertado en la predicción.
12 Fuente: https://github.com/juanonlab/TFM_JPP/blob/master/Hogar_8_RMSE_R2.csv
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 69
Un modelo de predicción genérico como el que se ha diseñado en este TFM será más
impreciso que otro que trabaja en detalle sobre datos de un hogar concreto. Por este motivo
el objetivo principal de estas predicciones es buscar la tendencia de consumo más que un
valor exacto de consumo energético que de por si es complejo de predecir dentro de un
entorno doméstico.
4.6. Clasificación de hogares por gasto eléctrico día/noche
Otro tipo de clasificación posible sería comprobar la media de consumo en rangos separados
en día y noche. En esta ocasión no se va a tratar el coeficiente de variabilidad para averiguar
si su consumo es estable en algún rango horario concreto. En este apartado se separan en
12 horas (día) y 12 horas (noche) para comprobar en media el comportamiento del hogar.
Realmente las 12 horas de noche abarcan también una parte de la tarde así de aquí en
adelante este rango se va a denominar tarde-noche.
4.6.1. Descripción del experimento y resultados
Para realizar esta clasificación se va a utilizar únicamente la media global de cada rango y
comparar esta media para decidir si hay mayor consumo en una franja u otra.
Se podría utilizar esta información para saber si un hogar está más tiempo en casa en una
determinada franja horaria que otra. También se le podría recomendar una tarifa concreta
dependiendo de los hábitos de consumo relacionados.
La hoja de trabajo 08_Gasto_electrico_dia_noche es la encargada de generar el fichero
Consumo_agrupado_dia_noche.csv13
1. def calcula_medias_consumos(dataset): 2. dataset['Consumo_dia'] = dataset.apply((lambda x: media(x['meanRango 06-
12'], x['meanRango 12-18']) ), axis=1).apply(lambda x: round(x, DECIMALES)) 3. dataset['Consumo_tarde_noche'] = dataset.apply((lambda x: media(x['meanRango 00-
06'], x['meanRango 18-00']) ), axis=1).apply(lambda x: round(x, DECIMALES)) 4. dataset['es_tarde_noche'] = dataset.apply((lambda x: mayor_consumo_tarde_noche(x
['Consumo_dia'], x['Consumo_tarde_noche']) ), axis=1) 5. df = dataset[['Consumo_dia','Consumo_tarde_noche','es_tarde_noche']] 6. return df
El método calcula_medias_consumos genera un dataframe que se guarda en el fichero
Consumo_agrupado_dia_noche.csv. Este método recibe un dataset originado del fichero
Medias_Y_Coeficientes_Hogares.csv . Este fichero ha sido generado por la hoja de trabajo
03 (ver figura 18).
13 Fichero: https://github.com/juanonlab/TFM_JPP/blob/master/Consumo_agrupado_dia_noche.csv
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 70
Las líneas 2 y 3 realizan las medias de los rangos de día y de los rangos de tarde-noche
respectivamente. La línea 4 es la encargada de generar una columna llamada es_tarde_noche
que devolverá 0 cuando el los rangos horarios diurnos tengan de media un mayor consumo
que los rangos horarios de tarde-noche. En caso contrario se devolverá el valor 1.
Tabla 19. Rango de consumos día y tarde - noche
Hogar Consumo día Consumo tarde noche Mayor consumo tarde-noche
1 413.73 450.55 SI
2 569.5 371.24 NO
3 846.47 514.21 NO
4 407.21 330.65 NO
5 833.72 661.56 NO
6 505.29 446.04 NO
7 630.48 419.7 NO
8 570.39 758.22 SI
9 571.07 577.96 SI
10 843.16 607.58 NO
11 666.78 210.41 NO
12 432.45 315.57 NO
13 718.86 438.06 NO
15 257.23 251.32 NO
16 541.87 546.9 SI
17 511.09 329.03 NO
18 487.73 411.39 NO
19 296.03 288.36 NO
20 422.9 329.27 NO
21 734.33 452.2 NO
En la tabla 19 se puede comprobar como la mayor parte de los hogares británicos realizan un
mayor consumo energético por las mañanas. La franja tarde-noche escogida empieza desde
las 6 de la tarde y termina a las 6 de la mañana. Con estos datos parece indicar que la
actividad por la tarde-noche es inferior a la de la mañana. Sólo un 20% de los hogares
analizados muestran un mayor consumo horario en la franja horaria tarde-noche. Esto hace
sugerir que cuando se acerca la noche los hogares británicos bajan la actividad de consumo
energético en sus viviendas.
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 71
4.6.2. Validación de los resultados
La validación de esta clasificación se basa en comprobar una regla en la que se reciben 2
parámetros: consumo de día y consumo de noche.
En la hoja de trabajo 08 este cálculo lo realiza el método mayor_consumo_tarde_noche.
1. def mayor_consumo_tarde_noche(consumo_dia, consumo_tarde_noche): 2. return 1 if (consumo_tarde_noche >= consumo_dia) else 0
Es una regla sencilla que genera unos resultados interesantes:
• 1 → SI (El consumo tarde-noche es mayor o igual que el del día)
• 0 → NO (El consumo de día es menor que el de la tarde-noche)
Observando la figura 36 (hogar 1) se puede comprobar que es un hogar donde el consumo
por la tarde-noche es mayor eso se debe, si se observa la gráfica, en que la línea azul (rango
00-06) muestra un gran consumo en las semanas finales.
Observando el hogar 16 en la figura 44 se observa que los consumos están muy parejos entre
rangos de día y de tarde-noche. Finalmente, las líneas rojas y azul (rango tarde-noche) tienen
un consumo ligeramente superior. El rango 00-06 (línea azul) es el rango que muestra menos
consumo durante toda la línea temporal, pero se compensa con que el rango 18-00 (línea
roja) es el que más consumo genera durante todas las semanas.
Figura 44. Consumo energético por rangos. Hogar 16.
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 72
5. Conclusiones y trabajo futuro
El objetivo principal de este Trabajo Fin de Máster ha consistido en obtener información del
consumo energético de los hogares mediante la separación de rangos horarios.
Esta aportación permite que los hogares puedan ser clasificados según estos hábitos de
consumo. La utilidad directa de este estudio consiste en que las empresas pueden utilizar esta
información para averiguar por ejemplo que hogares realizan menos consumo por las noches
o en que rango el consumo es mayor. También ha sido posible detectar hogares con unos
hábitos de consumo atípicos.
De manera específica, de las tres líneas de desarrollo se pueden obtener las siguientes
conclusiones:
Coeficiente de variabilidad del rango 00-06h y bajo consumo
Sobre el coeficiente de variabilidad del rango 00-06h y bajo consumo se ha obtenido la
conclusión que un 65% de los hogares cumplen ese requisito frente al otro 35% en los que
los hábitos son distintos.
La idea que se tiene preconcebida de hábitos de uso en la vivienda es que en el rango de 0 a
6 horas de la noche la actividad es baja y en consecuencia el consumo eléctrico también es
bajo.
Quizás los departamentos de marketing puedan analizar el 35% restante de los hogares que
no se ajustan a esos parámetros. Como se ha podido observar existía un hogar cuyo mayor
consumo era por la noche. A este tipo de hogares se le podría realizar algún tipo de oferta
que premiara el uso de consumo por la noche que es una franja horaria donde la demanda de
consumo es baja.
Para confirmar esta tendencia de consumo en rangos horarios sería necesario abarcar más
hogares para verificar si la proporción se manteniene.
Predicción de varias semanas por rangos horarios en los hogares
Aplicando un modelo de auto regresión, junto a un filtrado agresivo de las gráficas de consumo
se han obtenido unas predicciones de consumo que se tendrían que tomar con precaución.
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 73
La variabilidad del consumo eléctrico en el tiempo es muy amplia en comparación con otro
tipo de series temporales como por ejemplo el cambio en la temperatura del mar en un año.
Esto ha sugerido un uso agresivo del filtrado por rolling para establecer gráficas con saltos no
muy abruptos entre semanas. Con ello se busca observar la tendencia de consumo durante
varios meses más que un valor exacto en una semana concreta. Lo que se ha pretendido
calcular es una tendencia en el consumo.
En esta línea de investigación se ha utilizado la técnica de walk forward para mejorar la
validación del modelo. Se han empleado así mismo los parámetros RMSE y R2 para verificar
la buena predicción del modelo AR. Durante la validación se ha comprobado que los valores
R2 no han sido, en ocasiones, buenos mientras que los valores RMSE se han mantenido en
unos márgenes razonables.
Una mejora en el método de captura de la energía de cada aparato eléctrico podría ayudar a
mejorar la predicción.
Gasto eléctrico día/tarde-noche
Aúnque no se disponen de datos sería interesante comprobar los resultados obtenidos en el
apartado 4.6 para familias Españolas donde la actividad cotidiana en comparación con Europa
lleva dos horas de retraso.
En el artículo del periódico El País (Sánchez Sánchez, 2016) se muestra que los horarios
españoles son diferentes a los europeos y existe un retraso de 2 horas (por ejemplo al cenar
o ver la televisión). Sería interesante comprobar si en España se seguiría cumpliendo la
proporción de un 20% de hogares que realizan mayor consumo por la tarde-noche. Quizás en
España ese porcentaje sería mayor.
Futuro trabajo partiendo de la base de este TFM
Cómo ya se comentó en el capítulo estado del arte, el uso de modelos de auto regresión se
puede emplear junto a otros modelos estadísticos para mejorar la fiabilidad en los resultados
finales. Una mejora para continuar el trabajo realizado sería añadir el modelo SVR. Este
modelo está incluido en sckitlearn y podría incluirse en el desarrollo ya realizado en el entorno
anaconda.
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 74
En el artículo de Medium (Bhattacharyya, 2018) se realiza un estudio corto sobre este modelo
usando la biblioteca sckitlearn. Este artículo puede servir como base para la futura
investigación ya que este trabajo usa esta biblioteca para trabajar con modelos estadísticos.
Otro modelo conocido que cuenta con su versión correspondiente en sckitlearn sería el
modelo pasivo agresivo. Existe buena documentación al respecto y se puede encontrar por
ejemplo en el artículo de (Wang & Vucetic, 2010, págs. 908-915). De manera más práctica
existe un artículo en la web que explica el funcionamiento de este modelo. (Warmerdam,
2017). Podría ser interesante ver cómo trabaja este modelo con las predicciones de consumo
energético.
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 75
6. Bibliografía
Aguiar, R., & Collares-Pereira, M. (1992). TAG: A time-dependent, autoregressive, Gaussian
model for generating synthetic hourly radiation. En Solar Energy (Vol. 49 Issue 3, págs.
167-174).
Arnold, M., Milner, X., Write, H., Bauer, R., & Braun, C. (1998). IEEE Transactions on
Biomedical Engineering (Adaptive AR modeling of nonstationary time series by means
of Kalman filtering). IEEE.
Barron, J., & Zaveri, M. (13 de 07 de 2019). Ny Times. Obtenido de
https://www.nytimes.com/es/2019/07/13/apagon-nueva-york/
Bhattacharyya, I. (2018). Medium. Obtenido de https://medium.com/coinmonks/support-
vector-regression-or-svr-8eb3acf6d0ff
C. Müller, A., & Guido, S. (2016). Introduction to Machine Learning with Python. O'Reilly.
E. Brown, C. (1998). Coefficient of Variation. Applied Multivariate Statistics in Geohydrology
and Related Sciences.
Glen, S. (19 de 8 de 2015). statisticshowto.datasciencecentral. Obtenido de
https://www.statisticshowto.datasciencecentral.com/autoregressive-model/
Gray, C. (18 de Julio de 2018). The Alpha Scientist. Obtenido de
https://alphascientist.com/walk_forward_model_building.html
HAYES, A. (8 de 5 de 2019). Investopedia. Obtenido de
https://www.investopedia.com/terms/r/r-squared.asp
Hervé, A. (2010). Coefficient of Variation. Texas, EEUU. Obtenido de
http://www.utdallas.edu/~herve/abdi-cv2010-pretty.pdf
Kosmelj, K., & Batagelj, V. (1990). Cross-sectional approach for clustering time varying data.
Journal of classification, 7, 99-109.
Kumar, U., & Jainb, V. (Abril de 2010). Time series models (Grey-Markov, Grey Model with
rolling mechanism and singular spectrum analysis) to forecast energy consumption in
India. (ScienceDirect, Ed.) Energy, 35, 1709-1716.
La silla rota. (11 de 06 de 2018). Obtenido de https://lasillarota.com/ola-calor-luz-energia-
electrica/227741
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 76
Mardini, W., Muneer, Y. B., & Barraq, A. G. (2014). Rotated Hybrid, Energy-Efficient and
Distributed (R-HEED). WSEAS Transactions on Communications, 13, 275-290.
Muhammad, S., Nanthakumar, L., Mohammad, Z., & Khalid, Z. (2015). Does renewable energy
consumption add in economic growth? An application of auto-regressive distributed lag
model in Pakistan. En Renewable and Sustainable Energy Reviews (Vol. 44, págs.
576-585). ScienceDirect.
Murray, D., Stankovic, L., & Stankovic, V. (2017). An electrical load measurements dataset of
United Kingdom households from a two-year longitudinal study. (S. Data, Ed.) Obtenido
de https://doi.org/10.1038/sdata.2016.122
Palachy, S. (2019). Towardsdatascience. Obtenido de
https://towardsdatascience.com/stationarity-in-time-series-analysis-90c94f27322
Pythonprogramming. (17 de Octubre de 2015). Pythonprogramming. Obtenido de
https://pythonprogramming.net/rolling-statistics-data-analysis-python-pandas-tutorial/
Ranjan, S. (s.f.). Geeksforgeeks. Obtenido de https://www.geeksforgeeks.org/python-pandas-
dataframe-rolling/
RODRÍGUEZ, E. M. (2005). Errores frecuentes en la interpretación del. En E. M.
RODRÍGUEZ, Anuario Jurídico y Económico Escurialense (págs. 315-332). Obtenido
de https://www.rcumariacristina.com/wp-content/uploads/2010/12/11-Elena-
Martinez_1.pdf
Sánchez Sánchez, M. (25 de 3 de 2016). El pais. Obtenido de
https://verne.elpais.com/verne/2016/03/18/articulo/1458309794_132930.html
W. Sammarco, P., Winter, A., & Stewart, J. (2006). Coefficient of variation of sea surface
temperature (SST) as an indicator of coral bleaching. Marine Biology, 149, 1337–1344.
Wang, Z., & Vucetic, S. (2010). Online Passive-Aggressive Algorithms on a Budget.
Proceedings of Machine Learning Research, 9, 908-915. Obtenido de
http://proceedings.mlr.press/v9/wang10b/wang10b.pdf
Warmerdam, V. (2017). Passive Agressive Algorithms. Obtenido de http://koaning.io/passive-
agressive-algorithms.html
Zangiacomi Martinez, E., Soares da Silva, E., & Dal Fabbro, A. (2011). A SARIMA forecasting
model to predict the number of cases of dengue in Campinas, State of São Paulo,
Máster Universitario en Visual Analytics y Big Data Juan Pardo Palazón
Análisis del Consumo energético por rangos horarios 77
Brazil. Revista da Sociedade Brasileira de Medicina Tropical, 44(4). Obtenido de
http://dx.doi.org/10.1590/S0037-86822011000400007
Zhang, M. (23 de 10 de 2018). Obtenido de Time Series: Autoregressive models AR, MA,
ARMA, ARIMA: http://people.cs.pitt.edu/~milos/courses/cs3750/lectures/class16.pdf