Professional Documents
Culture Documents
Tesis Felipe Astudillo
Tesis Felipe Astudillo
The main objective of this undergraduate thesis was the elaboration of a neural
network model, specifically of the Long Short-Term Memory (LSTM) type, with which
PM10 and PM2.5 pollution could be forecast in the cities of Copiapó and Tierra Amarilla,
in Atacama, Chile, an area historically linked to mining, an industry that has been
syndicated of being a major source of air pollution. To achieve this, variables that could
possibly have an impact on the levels of particulate matter were collected, mainly
climatological and those linked to the mining industry, specifically the blasting carried
out in the open pit mine near Tierra Amarilla. These variables were subjected to an
exploratory data analysis and pre-processing, in order to make them suitable for feeding a
LSTM recurrent neural network model. The hyperparameters of the network were
subjected to a bayesian optimization in order to reduce the error in the forecasting and
increase the computational efficiency of the algorithm. Once the training was completed,
the model was able to forecast with good accuracy the 24-hour concentrations of PM10
for both cities, and to a lesser extent the 24-hour concentrations of PM2.5, due to a lower
correlation coefficient between the input variables and the latter pollutant, which
suggested the absence of certain key variables that affect the PM2.5 levels, to which there
was no access, such as emission records from a copper smelter near the cities, and detailed
information on mining activity, such as the magnitudes of the blastings and the amount of
loading and hauling equipment in motion. In addition, to increase the performance of the
model, it was suggested to increase the time window for the input information by
consulting alternative databases. Finally, by accessing higher computational processing
capacity and testing different neural network architectures, the forecasting capabilities of
the model could possibly be improved.
ii
RESUMEN
iii
TABLA DE CONTENIDOS
iv
3.2 Variables de entrada del modelo ...................................................................... 26
3.2.1 Obtención de variables de entrada .......................................................... 28
3.2.1.1 Concentraciones de material particulado........................................ 28
3.2.1.2 Variables meteorológicas .............................................................. 29
3.2.1.3 Desplazamiento de la población .................................................... 33
3.2.1.4 Actividad minera ........................................................................... 34
3.2.1.5 Variables temporales ..................................................................... 34
3.2.2 Estudio exploratorio de datos (EDA) ...................................................... 35
3.2.2.1 Variables en el tiempo ................................................................... 37
3.2.2.2 Histogramas .................................................................................. 42
3.2.2.3 Diagramas de caja ......................................................................... 45
3.2.2.4 Correlaciones ................................................................................ 48
3.2.2.5 Conclusiones sobre el EDA ........................................................... 48
3.2.3 Preprocesamiento ................................................................................... 50
3.2.3.1 Interpolación ................................................................................. 50
3.2.3.2 Creación de variables .................................................................... 52
3.2.3.3 Codificación cíclica....................................................................... 54
3.2.3.4 Separación de la base de datos....................................................... 57
3.2.3.5 Data Reshaping ............................................................................. 57
3.3 Arquitectura del modelo .................................................................................. 60
3.3.1 Estructura general ................................................................................... 60
3.3.2 Funciones de activación .......................................................................... 61
3.3.3 Función de pérdida y set de validación ................................................... 62
3.3.4 Optimizador ........................................................................................... 62
3.3.5 Regularización y Dropout ....................................................................... 63
3.3.6 Optimización Bayesiana de hiperparámetros........................................... 63
3.4 Entrenamiento del modelo ............................................................................... 66
CAPITULO 4: ANÁLISIS DE RESULTADOS ....................................................... 74
4.1 Exactitud del modelo de pronósticos ................................................................ 74
v
4.2 Incidencia de las variables de tronadura sobre el material particulado .............. 75
4.3 Incidencia de las variables en general sobre el material particulado.................. 77
CAPITULO 5: CONCLUSIONES Y RECOMENDACIONES ............................... 79
CAPITULO 6: BIBLIOGRAFÍA .............................................................................. 82
CAPITULO 7: ANEXO ............................................................................................. 84
vi
ÍNDICE DE TABLAS
Tabla 2.1: Niveles recomendados por las directrices de la OMS sobre la calidad del aire.
...................................................................................................................................... 5
Tabla 2.2: ICAP y concentración de 24 horas para MP10 y MP2.5 según D.S. ............... 7
Tabla 2.3: Niveles de emergencia ambiental según ICAP y concentración de 24 horas. .. 8
Tabla 2.4: Funciones de pérdida más utilizadas ............................................................ 21
Tabla 3.1: Información Estación Tama ......................................................................... 28
Tabla 3.2: Información Estación Sivica ........................................................................ 29
Tabla 3.3: Información Estación Jotabeche .................................................................. 29
Tabla 3.4: Información Estación UDA ......................................................................... 30
Tabla 3.5: Estaciones de origen de la información ........................................................ 33
Tabla 3.6: Disponibilidad de datos en cada variable de entrada .................................... 35
Tabla 3.7: Estadísticas básicas de las variables de entrada ............................................ 36
Tabla 3.8: Frecuencia de tronaduras ............................................................................. 41
Tabla 3.9: Cantidad de valores extremos en cada variable ............................................ 47
Tabla 3.10: Detalles sobre la información faltante en cada variable .............................. 51
Tabla 3.11: Cantidad de horas para cada episodio ambiental ........................................ 53
Tabla 3.12: Distribución porcentual para cada episodio ambiental ................................ 54
Tabla 3.13: Train-Test split .......................................................................................... 57
Tabla 3.14: Detalles set de entrenamiento y prueba ...................................................... 59
Tabla 3.15: Ejemplo de una muestra t dentro de la base de datos tridimensional ........... 60
Tabla 3.16: Límites de optimización para los hiperparámetros ..................................... 64
Tabla 3.17: Resultados de la optimización bayesiana ................................................... 65
Tabla 3.18: Neuronas activas en cada capa LSTM........................................................ 66
Tabla 3.19: Número de parámetros por capa ................................................................ 69
Tabla 4.1: Metricas de evaluación del modelo .............................................................. 74
Tabla 4.2: Métricas de evaluación del modelo con lapsos igualados ............................. 76
Tabla 4.3: Métricas de evaluación del modelo autorregresivo de M.P. .......................... 77
Tabla 7.1: Detalle de las iteraciones efectuadas por el Optimizador Bayesiano ............. 99
vii
ÍNDICE DE GRÁFICOS
viii
Gráficos 7.9: Dispersión de cada variable en función de Presión atmosférica ............... 93
Gráficos 7.10: Dispersión de cada variable en función de Precipitacion_liquida ........... 94
Gráficos 7.11: Dispersión de cada variable en función de Velocidad_viento................. 95
Gráficos 7.12: Dispersión de cada variable en función de Direccion_viento ................. 96
Gráficos 7.13: Dispersión de cada variable en función de Velocidad_viento TAMA .... 97
Gráficos 7.14: Dispersión de cada variable en función de Direccion_viento _TAMA ... 98
ix
ÍNDICE DE FIGURAS
x
CAPITULO 1: MARCO INTRODUCTORIO
1.1 Introducción
El día 6 de septiembre de 2021 el gobierno de Chile declaró como zona saturada por
MP10 a las comunas de Copiapó y Tierra Amarilla, esto a razón de los niveles de
contaminación alcanzados en las estaciones de monitoreo de calidad del aire que
componen la red Copiapó/Tierra Amarilla (mediciones realizadas entre el 1 de enero de
2018 y el 31 de diciembre de 2020). Dado el peligro que supone para la salud de las
personas la exposición prolongada a este tipo de contaminante, existe una real necesidad
de contar con mejores herramientas y metodologías para hacer frente a episodios de
aumento de material particulado en el ambiente.
1
1.2 Objetivos
• Reunir y estudiar una base de datos con variables relevantes para efectuar
pronósticos de concentración de material particulado.
• Preprocesar la base de datos para que sea capaz de alimentar una Red Neuronal
del tipo LSTM.
2
1.4 Alcances y restricciones
3
CAPITULO 2: MARCO TEÓRICO
4
material particulado, especialmente útil en zonas en donde la contaminación está muy por
encima de los niveles recomendados.
Tabla 2.1: Niveles recomendados por las directrices de la OMS sobre la calidad del
aire.
Meta intermedia
Contaminante Tiempo promedio Nivel recomendado
1 2 3 4
Anual 15 70 50 30 20
MP10 μg/m3
24 horas 45 150 100 75 50
Anual 5 35 25 15 10
MP2.5 μg/m3
24 horas 15 75 50 37.5 25
La ley 19,300 sobre Bases Generales del Medioambiente promulgada en el año 1994,
señala en su artículo primero “El derecho a vivir en un ambiente libre de contaminación”.
Para garantizar esto, se establece en el artículo 32 de dicha ley el concepto de normas
primarias de calidad ambiental las cuales deben ser promulgadas mediante decreto
supremo, y tienen por objetivo proteger la salud de las personas definiendo, de acuerdo a
cada sustancia o contaminante, las concentraciones máximas o mínimas permisibles
dentro de un periodo de tiempo determinado. En el caso del material particulado 10
(MP10) sus niveles se encuentran normados por el decreto supremo número 12 del año
2021 (D.S. N°12/2021), mientras que el material particulado 2.5 (MP2.5) por el decreto
supremo número 12 del año 2011 (D.S. N°12/2011).
5
El decreto supremo N°12/2021 además introduce, en su artículo 2°, el concepto de
concentración de 24 horas, y lo define como:
Sobre la norma primaria de calidad del aire para el MP10, el decreto supremo número
N°12/2021 en su artículo 4° establece que:
b. Si antes que concluya un año calendario, el número de días con mediciones sobre
el valor de 130 µg/m3N, sea mayor que siete.
6
b) Cuando el promedio trianual de las concentraciones anuales sea mayor a
20(µg/m3), en cualquier estación monitora calificada como EMRP. (párr. 2 y 3)
Tabla 2.2: ICAP y concentración de 24 horas para MP10 y MP2.5 según D.S.
Concentración de 24 horas
ICAP
MP10 µg/m3N MP2.5 µg/m3
0 0 0
100 150 50
500 330 170
7
Por medio del ICAP se puede determinar el nivel de contaminación que da origen a
situaciones de emergencia ambiental, con el objetivo de tomar las medidas pertinentes
para resguardar la salud de las personas durante episodios de alta contaminación por
material particulado.
Concentración de 24 horas
Nivel ICAP
MP10 µg/m3N MP2.5 µg/m3
Bueno [0-100) [0-130) [0-50)
Regular [100-200) [130-180) [50-80)
Alerta [200-300) [180-230) [80-110)
Preemergencia [300-500) [230-330) [110-170)
Emergencia [500+ [330+ [170+
Promedio horario: Corresponde al que se calcula con los valores medidos entre el
minuto uno y el minuto 60 de la hora. El promedio horario, para el caso de monitores
continuos de gases, debe calcularse sobre el promedio de las mediciones realizadas
durante cinco minutos consecutivos, es decir, el promedio horario se obtendrá de
promediar aritméticamente 12 valores promedio. En el caso de los medidores
continuos de material particulado, el valor promedio horario se calculará sobre el
promedio de las mediciones realizadas durante 15 minutos consecutivos, es decir, el
promedio horario se obtendrá de promediar aritméticamente 4 valores promedio.
8
Promedio diario: Aquel que se calcula con la información medida entre la hora 0 y
la hora 23. El promedio diario deberá calcularse con al menos 18 valores de promedio.
En la medición de material particulado con equipos basados en el método gravimétrico
de alto y bajo volumen, el promedio diario se calculará sobre la base de 18 horas
continuas de medición. Ello sin perjuicio de lo dispuesto en las normas primarias de
calidad del aire respectivas. En todo caso, el valor promedio horario puede ser
calculado sobre la base de un número mayor de promedios a petición de la autoridad
sanitaria. Ello sin perjuicio de lo dispuesto en las normas de calidad del aire
respectivas. (párr. 15 y 16)
Para verificar el cumplimiento de las normas primarias de calidad, la estación debe ser
calificada como de representatividad poblacional (EMRP), debiendo cumplir una serie de
requisitos establecidos por el Ministerio de Medioambiente en la Resolución Exenta 744
del año 2017 (N° 744/2017), entre los que se encuentran:
9
2.3 Inteligencia Artificial (IA)
Inteligencia Artificial
Machine Learning
Deep Learning
12
Figura 2.4: Aprendizaje por refuerzo
13
Una red neuronal posee tantas neuronas en la capa de entrada como features tenga el
problema a resolver (x1, x2, x3, …, xn), y tantas neuronas en la capa de salida como targets
tenga el problema (y1, y2, y3, …, yn), pero la cantidad de neuronas en las capas ocultas y
el número de capas, no dependen directamente de las variables de entrada y salida del
problema, siendo determinadas por algún método de optimización o simplemente
definidas por el usuario por prueba y error.
14
Figura 2.5: Arquitectura de una MLP Fully Connected
15
Figura 2.7: Filtro convolucional aplicado a una matriz
Por medio de este tipo de filtros, las Redes Convolucionales poseen la capacidad de
detectar patrones, figuras y en general cualquier característica o información distribuida
en el espacio. Este tipo de redes se utilizan frecuentemente en el campo de la visión
artificial o visión computacional que busca otorgar a las máquinas la capacidad de ver y
comprender imágenes y el ambiente que las rodea, más específicamente están presentes
en sistemas de reconocimiento facial, vehículos autónomos, análisis de documentos,
detección de enfermedades, entre muchos otros.
La figura 2.8 representa una CNN con 2 capas convolucionales en su estructura. Por
lo general a medida que se profundiza en las capas convolucionales, se detectan
características más específicas y complejas dentro de la información.
16
2.3.2.3 Redes Neuronales Recurrentes / Recurrent Neural Networks
(RNN)
17
La figura 2.10 representa una RNN con 2 capas recurrentes en su estructura que se
encargan de incluir en el aprendizaje la información de elementos o pasos de tiempo
anteriores.
Además, dentro de las RNN existe un tipo especial de redes llamadas Long Short-
Term Memory (LSTM), postuladas en el año 1997 por Hochreiter & Schmidhuber 9, que
tienen la particularidad de poder recordar dependencias a largo plazo, y pueden elegir
selectivamente que información recordar. También desde el punto de vista computacional
son mucho más eficientes que las redes RNN.
18
En la figura 2.11 se observa la estructura interna de una neurona del tipo LSTM. La
característica principal de estas neuronas es que poseen 4 puertas o gates que se encargan
de una función específica. La forget gate (f en la figura) determina que inputs actuales y
outputs anteriores serán eliminados del state de la neurona. Para lograr esto utiliza una
función sigmoidal que va desde 0 a 1, en donde 0 significa que olvide completamente
dichos parámetros y 1 que los recuerde completamente. La siguiente puerta, llamada input
gate (i en la figura) que, en combinación a la conexión recurrente (r en la figura), define
que valores serán almacenados en el state de la neurona, utilizando la función sigmoidal.
Finalmente, la output gate (r en la figura) determina que parte del state de la neurona saldrá
de ella (también con una función sigmoidal)
Dentro de cada neurona, para obtener un output o salida se realiza una suma ponderada,
lo que significa asignarle un peso a cada input recibido de neuronas anteriores o de las
features del modelo, más un bias (error) al final. El principal problema de este
procedimiento es que la combinación lineal de múltiples funciones lineales (en este caso
sumas ponderadas) arroja como resultado otra función lineal, lo que vuelve innecesaria la
existencia de múltiples capas y neuronas ya que toda la red neuronal se podría resumir en
una sola neurona con la suma ponderada resultante de colapsar toda la red en un único
punto. Para resolver este problema existen las llamadas funciones de activación que tienen
por objetivo eliminar la linealidad a los outputs de cada neurona, mejorando la capacidad
de la red neuronal para modelar problemas con comportamientos complejos fuera de lo
lineal y además de limitar el rango numérico del output de cada neurona, evitando la
aparición de valores demasiado alto lo que conllevaría un uso excesivo de recursos
computaciones, ralentizando el entrenamiento del modelo.
19
Figura 2.12: Funcionamiento de una neurona y su función de activación
Por lo general, en las capas ocultas se utiliza la misma función de activación para todas
las neuronas, siendo la más utilizada la función Rectified Linear Unit (ReLU) que se
encarga de llevar a 0 los valores negativos y mantener iguales los positivos. Para la capa
de salida, dependiendo del problema se selecciona la función de activación que entregue
un resultado adecuado. En el gráfico 2.2 se muestran las funciones de activación más
utilizadas en redes neuronales.
20
2.3.2.5 Funciones de pérdida
Por lo general, antes de comenzar a elaborar un modelo de redes neuronales, los datos
disponibles son divididos en 3 grupos: entrenamiento, validación y prueba. Los datos de
entrenamiento, tal y como indica su nombre, son los que se utilizan para entrenar el
modelo, aprendiendo las relaciones entre inputs y outputs presentes en el problema con el
fin de llegar a un resultado adecuado. Para garantizar esto último, el modelo se apoya de
los datos de validación que son incluidos durante el entrenamiento para comprobar que el
modelo sea capaz de realizar pronósticos generalizados y no memorice los datos de
entrenamiento. En cada iteración del entrenamiento el modelo realiza un pronóstico sobre
los datos de validación y compara esta N cantidad de pronósticos (ŷi) con los valores reales
(yi), apoyándose en una función de pérdida o función de coste que cuantifica el error
obtenido, siendo el objetivo final del entrenamiento encontrar el mínimo de dicha función
a través de algoritmos de optimización. La función pérdida a utilizar depende del tipo de
modelo y sus características. En la tabla 2.4 se pueden observar las funciones de pérdida
más utilizadas en modelos de redes neuronales10.
21
2.3.2.6 Optimizadores
22
2.3.2.7 Regularización y Dropout
Unos de los principales problemas que pueden presentar las redes neuronales es el
overfitting o sobreajuste, que se produce cuando una red “memoriza” los datos de
entrenamiento, de tal manera que solo puede realizar pronósticos acertadas sobre ellos,
limitando considerablemente su capacidad de generalizar y realizar pronósticos en bases
de datos desconocidas. Para solucionar este problema existen distintas técnicas, entre las
que se encuentran la regularización y el dropout.
• Lasso (L1): penaliza las variables de entrada que tienen poca incidencia en el
pronóstico final volviéndolas 0 por medio de un factor λ.
• Ridge (L2): también penaliza variables de entrada, pero no las lleva a 0, por lo
que al final del modelo todas las variables estarán presentes como variables de
pronósticos. También se apoya en un factor λ.
Por otra parte, el dropout consiste en apagar de manera aleatoria una cantidad
predefinida de neuronas, de modo que ciertas conexiones entre capas desaparecen,
eliminando posibles memorizaciones de patrones generadas entre neuronas adyacentes.
En la figura 2.13 se observa una red con un dropout de ratio 0.25, lo que quiere decir que
en cada iteración se apaga aleatoriamente el 25% de las neuronas. Cabe recalcar que el
ratio de dropout no necesariamente debe ser el mismo para todas las capas.
23
2.3.2.8 Optimización bayesiana de hiperparámetros
Para el caso de las redes neuronales, la optimización bayesiana se utiliza para calcular
los hiperparámetros del modelo, es decir, la cantidad de neuronas, la cantidad de capas,
las funciones de activación, el learning rate, el ratio de dropout, el factor lambda de
regularización, entre otros. La función objetivo es la función de pérdida, que depende de
los parámetros del modelo, y a su vez estos dependen de los hiperparámetros ya
mencionados, por lo tanto, el optimizador entrena el modelo una cantidad predefinida de
veces y entrega como resultados la mejor combinación de hiperparámetros encontrados.
24
En el gráfico 2.3 se observa un ejemplo de optimización bayesiana realizada a una
función dependiente de un único hiperparámetro x. En este caso la optimización comienza
por 2 valores aleatorios (el primer y penúltimo punto rojo) a partir de los cuales comienza
a realizar 10 inferencias intentando alcanzar el máximo de dicha función. En las zonas en
donde no existen iteraciones o puntos inferidos, la función asigna un área que representa
el intervalo de confianza de 95% de que la función se mueva por ese rango.
25
CAPITULO 3: DESARROLLO EXPERIMENTAL
26
• Temperatura del aire
• Temperatura de rocío
• Radiación solar
• Humedad relativa
• Presión atmosférica
• Precipitación líquida
Por otra parte, la actividad minera, en caso de no tomar los resguardos necesarios,
puede constituir una importante fuente de contaminación por material particulado. Debido
a la existencia de múltiples empresas mineras en los alrededores de Tierra Amarilla, y por
sobre todo la presencia de una explotación a cielo abierto, se decidió incluir como datos
de entrada para el modelo la información referente a tronaduras en efectuadas por Minera
Candelaria.
27
3.2.1 Obtención de variables de entrada
Las variables de entrada del modelo, fueron extraídas desde bases de datos de libre
acceso a cargo servicios públicos como la Superintendencia del Medio Ambiente (SMA),
la Dirección General de Aeronáutica Civil (DGAC) y el Servicio de Salud de Atacama.
La ventana de tiempo del modelo dependió exclusivamente de la disponibilidad de
información en estas bases de datos.
28
Para las concentraciones de MP10 y MP2.5 en la ciudad de Copiapó, se consultó el
Sistema de Información Nacional de Calidad de Aire (SINCA) a cargo del Ministerio del
Medio Ambiente, en donde se recopilan y publican en tiempo real los registros de
concentraciones ambientales de contaminantes normados en Chile. La estación consultada
fue Sivica. En la tabla 3.2 se presenta la información referente a dicha estación.
Para tener acceso a las variables meteorológicas se hizo uso de los Servicios
Climáticos a cargo de la Dirección Meteorológica de Chile (dependiente de la DGAC), en
donde se encuentra información histórica de los registros provenientes de la red de
estaciones nacional. En las estaciones, las principales variables meteorológicas están
medidas en intervalos regulares de 1 hora.
29
Coordenadas 377,889 E; 6,947,726 N
Variables meteorológicas Agua caída, evapotranspiración, humedad relativa
medidas del aire, presión atmosférica, radiación solar global
instantánea, temperatura de rocío, temperatura del
aire seco, dirección y rapidez del viento
30
es decir, temperatura absoluta de UDA con temperatura absoluta de Jotabeche, humedad
relativa de UDA con humedad relativa de Jotabeche, etc.
31
Gráficos 3.1: Relación entre variables Jotabeche-UDA
A raíz de los altos valores de correlación entre las variables equivalentes, se decidió
utilizar los datos meteorológicos de la estación UDA, ubicada en Copiapó, como valores
de entrada para el pronóstico de contaminación en Tierra Amarilla, y así aumentar la
ventana de tiempo de análisis del modelo. Esta decisión también se vio apoyada por la
cercanía geográfica entre la estación UDA y la estación Tama, que mide la contaminación
en Tierra Amarilla (aproximadamente 14.5 Km).
32
propias mediciones en dichas variables, por lo que se utilizaron estas últimas como
entradas para los pronósticos en Tierra Amarilla.
Origen de la información
Variable de entrada
Tierra Amarilla Copiapó
MP10 y MP2.5 Estación Tama Estación Sivica
Ts, Td, RadGInst, HR, QFE, RRR6 Estación UDA Estación UDA
Dirección y velocidad viento Estación Tama Estación UDA
Los datos sobre las cuarentenas en Tierra Amarilla y Copiapó fueron rescatados desde
las redes sociales del Servicio de Salud Atacama (perfil de Instagram), en donde se
publicaba de manera regular los avisos de cambio de fase del Plan Paso a Paso para las
comunas de la región de Atacama, entre las cuales se encontraban Tierra Amarilla y
Copiapó.
• Para cualquier otro caso, la información se registraba como “0” lo que indicaba
la ausencia de cuarentena para la población.
33
3.2.1.4 Actividad minera
• Las horas se registraron como valores entre 0 y 23, indicando cada uno la hora
en cuestión.
• Los meses se registraron como valores entre 1 y 12, siendo 1 el mes de enero
y 12 el mes de diciembre
Se decidió dejar fuera como variable de entrada a los años porque se consideró que la
ventana de tiempo era muy pequeña como para que se vieran reflejadas tendencias o
patrones anuales.
34
3.2.2 Estudio exploratorio de datos (EDA)
El primer paso fue analizar la disponibilidad de los datos para poder dimensionar la
cantidad de información con que se contaba para alimentar al modelo.
Cantidad de datos
Variable de entrada Periodo
Disponibles Faltantes
MP10_TAMA 34,719 1,065 2.976%
MP2.5_TAMA 34,845 939 2.624%
MP10_SIVICA 35,557 227 0.634%
MP2.5_SIVICA 35,090 694 1.939%
Temperatura_aire 33,652 2,132 5.958%
Temperatura_rocio 33,652 2,132 5.958%
Radiacion_solar Desde 33,621 2,163 6.045%
Humedad_relativa 01/12/2017 00:00 33,651 2,133 5.961%
Presion_atmosferica hasta 33,651 2,133 5.961%
Precipitacion_liquida 30/12/2021 23:00 33,652 2,132 5.958%
Velocidad_viento 33,652 2,132 5.958%
Direccion_viento 33,652 2,132 5.958%
Velocidad_viento_TAMA 35,771 13 0.036%
Direccion_viento_TAMA 35,688 96 0.268%
Cuarentena_Copiapo 35,784 0 0.000%
Cuarentena_Tierra_Amarilla 35,784 0 0.000%
Tronadura_Rajo Desde 24,360 0 0.000%
Tronadura_Subterranea 22/03/2019 00:00 24,360 0 0.000%
Tronadura_Santos hasta 24,360 0 0.000%
Tronadura_Alcaparrosa 30/12/2021 23:00 24,360 0 0.000%
35
A partir de lo registrado en la tabla 3.6 se pudo observar que las variables de entrada
poseían bajos niveles de información faltante, lo que permitió, en etapas posteriores,
realizar una interpolación para rellenar los espacios vacíos, sin que fuera necesario recurrir
a bases de datos adicionales.
36
3.2.2.1 Variables en el tiempo
37
38
En los gráficos 3.2 se observó el comportamiento de cada una de las variables a lo
largo de los años en estudio. Los casos más notables fueron las variables de concentración
de material particulado que presentaron picos de contaminación en momentos puntuales.
Por el lado de las variables meteorológicas, se observó un comportamiento cíclico o
estacional propio del paso del año entre estaciones cálida y frías, y en el gráfico de
precipitaciones se hizo notar la poca agua caída en la zona de estudio. Con respecto al
viento, dada la naturaleza de la unidad de medida de dirección (°), no se pudo apreciar
correctamente el comportamiento de este en la ventana de tiempo seleccionada, mientras
que la velocidad no presentó ningún comportamiento regular observable. En los gráficos
también se notó la ausencia de segmentos con información, producto de la pérdida de
mediciones en las estaciones de monitoreo.
39
40
Según lo observado en los gráficos 3.3 el comportamiento promedio a lo largo del día
en las variables de concentración de material particulado fue similar entre las ciudades de
Copiapó y Tierra Amarilla, con aumentos de MP10 durante las horas de la mañana y la
tarde, y aumentos de MP2.5 en la jornada de la mañana. Lo mismo ocurrió con la
velocidad del viento, que presentó un comportamiento similar entre ambas ciudades,
incluso en la magnitud de la variable (realizando la conversión correspondiente entre
nudos y metros por segundo). El resto de las variables meteorológicas presentaron un
comportamiento bastante esperable para ese tipo de datos.
Frecuencia promedio
Mina Total
Tronaduras por día Días entre tronaduras
Rajo Candelaria 682 0.672 1.488
Subterránea Candelaria 146 0.144 6.952
Santos 137 0.135 7.409
Alcaparrosa 129 0.127 7.868
41
Gráficos 3.4: Frecuencia acumulada de tronaduras
3.2.2.2 Histogramas
43
A partir de los gráficos 3.5 se pudo observar, a priori, que algunas variables como la
temperatura del aire, la temperatura de rocío, la presión atmosférica y la velocidad del
viento poseían un comportamiento normal o gaussiano esperable (es importante aclarar
que las variables de entrada para un modelo de redes neuronales no necesitan ser de
ninguna distribución de probabilidad en particular). Además, se logró identificar un
importante desbalance de clases en las variables referentes al material particulado, lo que
sugirió la presencia de valores extremos o outliers. Mismo fenómeno ocurrió en variables
atmosféricas como la radiación solar (explicable por las horas de la noche), la
44
precipitación líquida (dado el clima árido de la zona) y la dirección del viento (por una
dirección preferente).
45
46
De acuerdo a los diagramas de caja de las variables de concentración de material
particulado, se observó que, pese a que existe una cantidad menor de valores extremos o
outliers en comparación al total de información, estos presentaron magnitudes
extremadamente altas llegando a ser hasta 10 veces más grandes que la mediana, lo que
se explicó por episodios de alta contaminación por material particulado en momentos
puntuales. Por otro lado, las variables meteorológicas no presentaron outliers con
magnitudes significativamente mayores, excepto en el caso de la presión atmosférica, lo
que sugirió un posible error al momento de realizar la medición en la estación de
monitoreo. En la tabla 3.9 se tabuló la cantidad de outliers en cada variable estudiada
utilizando la misma metodología empleada en los diagramas de cajas, en donde un outlier
se definió como el valor que se encuentra a 1.5 veces el IQR (rango intercuartil) por debajo
del cuartil 1, o 1.5 veces el IQR por encima del cuartil 3
47
3.2.2.4 Correlaciones
A través de las múltiples herramientas estadísticas y gráficas que fueron utilizadas para
analizar la información de entrada para el modelo de redes neuronales, se concluyó que
las variables siguen un comportamiento totalmente esperable para este tipo de información
lo que sugirió que la medición y posterior publicación de datos se hizo sin cometer errores
significativos y que también la información, por lo menos a nivel general, no fue
manipulada. Además, se demostró la relación y dependencia que poseen las variables de
contaminación con respecto a las variables meteorológicas lo que hizo posible el
pronóstico de MP10 y MP2.5 en función de la información que se tenía disponible.
48
Figura 3.2: Matriz de correlación de Pearson – Variables meteorológicas y de contaminación
49
3.2.3 Preprocesamiento
Antes de alimentar a la red neuronal con las variables de entrada, la base de datos debió
someterse a una etapa de preprocesamiento con el fin de que esta fuera apta para el modelo
en cuestión y mejorara su desempeño y efectividad.
3.2.3.1 Interpolación
50
Tabla 3.10: Detalles sobre la información faltante en cada variable
Extensión de bloque
Número de bloques NA
(en horas)
Variable de entrada
Con extensión
Total Máxima Promedio
<=4 horas
MP10_TAMA 139 110 387 7.662
MP2.5_TAMA 166 146 387 5.657
MP10_SIVICA 58 43 21 3.914
MP2.5_SIVICA 198 167 26 3.379
Temperatura_aire 72 50 606 29.611
Temperatura_rocio 72 50 606 29.611
Radiacion_solar 66 48 606 32.773
Humedad_relativa 73 51 606 29.219
Presion_atmosferica 73 51 606 29.219
Precipitacion_liquida 72 50 606 29.611
Velocidad_viento 72 50 606 29.611
Direccion_viento 72 50 606 29.611
Velocidad_viento_TAMA 2 1 10 6.5
Direccion_viento_TAMA 67 65 10 1.433
51
3.2.3.2 Creación de variables
𝑡
1
𝑥𝑡𝑘 = ∑ 𝑥𝑖
𝑘
𝑖=𝑡−𝑘+1
En donde:
52
De acuerdo a lo observado en los gráficos 3.7, se disminuyó considerablemente el
rango de cada una de las variables, es decir se produjo un suavizamiento en las
concentraciones horarias de material particulado al ser transformadas en concentración de
24 horas, todo esto en comparación al comportamiento presente en los Gráficos 3.2:
Comportamiento de las variables en el tiempo del EDA. De igual forma, siguieron
existiendo picos de contaminación, sobre todo en las concentraciones de MP2.5.
53
Tabla 3.12: Distribución porcentual para cada episodio ambiental
Las variables relacionadas al tiempo, es decir, la hora del día, el día de la semana y el
mes, representaban ciclos que se iban repitiendo a lo largo de los 4 años de estudio, siendo
sumamente importante que la diferencia entre los valores numéricos que representaban a
cada variable fuera siempre constante. Esto no se cumplía entre el último valor de cada
ciclo y el primero del ciclo siguiente lo que representaba un problema ya que el modelo
de redes neuronales interpretaría que entre la hora 23 y la hora 0 había una diferencia de
23 horas, entre el día 6 (domingo) y el día 0 (lunes) había una diferencia de 6 días y entre
el mes 12 (diciembre) y el mes 1 (enero) había una diferencia de 11 meses. En los gráficos
3.8 se pudo observar claramente este problema, a modo de saltos bruscos entre cada ciclo.
54
Gráficos 3.8: Representación de los ciclos en cada variable de tiempo
Una posible solución a este problema fue aplicar a cada variable una función periódica,
como la función seno, de tal forma que el ciclo cumpla con la condición de mantener la
misma diferencia entre valores adyacentes. El inconveniente con esta posible solución fue
que, en algunos casos, valores que representaban horas, días o meses distintos pasaban a
tener el mismo resultado numérico, lo que también produciría errores en el modelo. La
solución final consistió en representar cada variable como 2 funciones periódicas distintas
(seno y coseno), de tal forma que se transformaron en variables bidimensionales. Esta
misma solución fue aplicada a las variables de entrada que utilizaban los grados como
unidades de medida (Direccion_viento y Direccion_viento_TAMA), ya que entre la
medición 360° y la medición 1° se producía el mismo problema. En los gráficos 3.9 se
pudo observar la nueva distribución de las variables ya señaladas.
55
Gráficos 3.9: Codificación cíclica variables temporales y variables en grados
56
3.2.3.4 Separación de la base de datos
El tipo de red neuronal seleccionada para el modelo fue una Long short-term memory
(LSTM), que se clasifica como recurrente, esto significó que la información de entrada
debió poseer una estructura en particular para que fuese válida para la red.
57
Originalmente la base de datos obtenida y ya procesada poseía una estructura
bidimensional, compuesta por filas y columnas, o también llamadas muestras (samples) y
características (features) respectivamente, pero para una red LSTM se necesitaba que la
información fuese tridimensional, por lo que se requirió añadir la dimensión pasos de
tiempo (timesteps), de manera que la estructura de la base de datos pasara a ser del tipo
[samples, timesteps, features]. Este tipo de estructura fue adoptada tanto en el set de
entrenamiento como el set de prueba para ambos casos, con y sin tronadura.
Features
{([𝑥1 , 𝑥2 , 𝑥3 , ⋯ , 𝑥𝑛 ](𝑡)−𝑘+1 ,
Timesteps ⋮
[𝑥1 , 𝑥2 , 𝑥3 , ⋯ , 𝑥𝑛 ](𝑡) ),
⋮ Samples
([𝑥1 , 𝑥2 , 𝑥3 , ⋯ , 𝑥𝑛 ](𝑡+1)−𝑘+1 ,
[𝑥1 , 𝑥2 , 𝑥3 , ⋯ , 𝑥𝑛 ](𝑡+1) )}
Donde:
58
particulado para las próximas 24 horas utilizando datos de las 24 últimas horas. (Es
necesario aclarar que las últimas 3 referencias a 24 horas corresponden a 3 conceptos
totalmente diferentes, por lo tanto, la redundancia gramatical es inevitable).
Variable enésima
Tiempo Variable 1 Variable 2 … (concentración 24 horas
M.P. requerida)
t-23
⁝
24 horas
Últimas
60
como variables de entrada se tuvieran. También cada subred contó con 2 capas
consecutivas del tipo LSTM (en púrpura), que procesaron las series de tiempo y que
poseían una cantidad, en este punto, aún no determinada de neuronas, para luego finalizar
con una capa densa (en azul) que confluyó en una capa de concatenación (en rosa claro)
que se encargó de entregar el aprendizaje de cada subred a una única capa de salida (en
rojo), la cual contó con una neurona por cada hora en la ventana de tiempo a pronosticar,
ya definida con anterioridad como 24 horas.
Para esta red en particular, sólo se utilizaron funciones de activación luego de cada
capa LSTM, ya que fueron estas las que generaron la mayor parte del aprendizaje, y por
lo tanto las que produjeron la mayor cantidad de parámetros a optimizar. La función de
activación seleccionada fue la tangente hiperbólica (tanh), que de acuerdo a sus
características ya estudiadas en el capítulo 3, evita que se produzcan errores en la
optimización de parámetros como el Vanishing Gradient o Exploding Gradient13. En el
caso de la capa de salida, en donde normalmente también se utilizan funciones de
activación, no se necesitó ninguna debido a que las salidas de la red eran valores números
continuos que representaban la concentración de 24 horas de material particulado en una
hora en concreto, y, por lo tanto, no requirieron ninguna discretización ni limitación de
rangos.
61
3.3.3 Función de pérdida y set de validación
𝑁
1
𝑀𝑆𝐸 = ∑( ŷ𝑖 − 𝑦𝑖 )2
𝑁
𝑖=1
Para que la función de pérdida pudiera realizar la comparación entre valores y así
calcular el MSE, se requirió extraer, desde el set de entramiento, una porción de los datos
para que funcionaran como set de validación. La extensión del set de validación
correspondió al último 33% del total del set de entrenamiento. La distribución final de la
información, incluyendo el set de prueba, resultó aproximadamente como lo observado en
la figura 3.5.
3.3.4 Optimizador
62
con recursos computacionales limitados. El learning rate del optimizador fue determinado
mediante optimización bayesiana en etapas posteriores.
63
ser el máximo. Para lograr esto simplemente se antepuso un signo negativo a la función
de la forma que se muestra a continuación:
𝑁
1
−𝑀𝑆𝐸 = − ∑( ŷ𝑖 − 𝑦𝑖 )2
𝑁
𝑖=1
Además, se debía seleccionar una red neuronal en particular para optimizar, debido a
que se contaba con 8 posibles redes neuronales que pronosticaban distintas
concentraciones de material particulado: MP10_SIVICA_24H, MP2.5_SIVICA_24H,
MP10_TAMA_24H y MP2.5_TAMA_24H, considerando escenarios con y sin tronadura.
Finalmente se decidió seleccionar la red neuronal que pronosticaba el MP10 en Copiapó
sin tronaduras (MP10_SIVICA_24H) ya que a nivel general los resultados serían similares
porque las 8 redes contaban con la misma arquitectura.
Hiperparámetro Límites
Número de neuronas por capa [51 - 512]
Factor λ de regularización [0.0001 - 0.1]
Ratio de dropout [0.1 - 0.8]
Learning rate [0.000001 - 0.01]
64
Para comenzar la optimización, se eligió partir con un total de 10 puntos, cada uno
compuesto por 13 valores distintos, seleccionados de forma aleatoria de acuerdo a los
límites estipulados. Luego, en base a los 10 puntos iniciales, el optimizador realizó 20
optimizaciones bayesianas en donde obtuvo nuevos valores de hiperparámetros, siendo su
objetivo final encontrar el valor máximo de la función.
Target -79.73
Neuronas1 305
Neuronas2 439
Neuronas3 108
Neuronas4 179
Regularizador1 0.002928
Regularizador2 0.0247
Regularizador3 0.08602
Regularizador4 0.05393
Dropout1 0.7461
Dropout2 0.5981
Dropout3 0.187
Dropout4 0.1139
Learning rate 0.000263
Neuronas activas
Subred Capa
N° neuronas * (1-dropout)
1 77
Últimas 24 horas
2 176
3 87
Siguientes 24 horas
4 158
Layer1_1 Input: [(None, 24, 29)] Layer1_2 Input: [(None, 24, 21)]
InputLayer Output: [(None, 24, 29)] InputLayer Output: [(None, 24, 21)]
Layer2_1 Input: (None, 24, 29) Layer2_2 Input: (None, 24, 21)
LSTM Output: (None, 24, 305) LSTM Output: (None, 24, 108)
Layer3_1 Input: (None, 24, 305) Layer3_2 Input: (None, 24, 108)
Dropout Output: (None, 24, 305) Dropout Output: (None, 24, 108)
Layer4_1 Input: (None, 24, 305) Layer4_2 Input: (None, 24, 108)
LSTM Output: (None, 439) LSTM Output: (None, 179)
67
Figura 3.7: Estructura detallada de la red neuronal con variables de tronadura
Layer1_1 Input: [(None, 24, 33)] Layer1_2 Input: [(None, 24, 25)]
InputLayer Output: [(None, 24, 33)] InputLayer Output: [(None, 24, 25)]
Layer2_1 Input: (None, 24, 33) Layer2_2 Input: (None, 24, 25)
LSTM Output: (None, 24, 305) LSTM Output: (None, 24, 108)
Layer3_1 Input: (None, 24, 305) Layer3_2 Input: (None, 24, 108)
Dropout Output: (None, 24, 305) Dropout Output: (None, 24, 108)
Layer4_1 Input: (None, 24, 305) Layer4_2 Input: (None, 24, 108)
LSTM Output: (None, 439) LSTM Output: (None, 179)
68
También, en este punto, ya se tenía acceso a la cantidad de parámetros que tendría la
red neuronal, detallados en la tabla 3.19. Son estos parámetros los que se actualizaban en
cada iteración a través del optimizador ADAM. Las capas que presentaban 0 parámetros
tenían un objetivo distinto al aprendizaje, como recibir las variables de entrada, actuar de
dropout y juntar las subredes neuronales en una sola red.
69
MP2.5_SIVICA_24H, MP10_TAMA_24H y MP2.5_TAMA_24H), y además, se tomó
en cuenta el escenario sin variables de tronadura y con variables de tronadura.
70
Gráfico 3.12: Pronóstico MP10_TAMA_24H (sin tronadura)
71
Gráfico 3.14: Pronóstico MP10_SIVICA_24H (con tronadura)
72
Gráfico 3.16: Pronóstico MP10_TAMA_24H (con tronadura)
73
CAPITULO 4: ANÁLISIS DE RESULTADOS
74
La primera métrica a analizar fue el coeficiente R2, que en este caso se interpretó como
el porcentaje de la variable a pronosticar que logró ser explicada por las variables de
entrada del modelo de redes neuronales. Para las concentraciones de MP10 se obtuvo un
valor relativamente alto, lo que probablemente se debió a que las variables meteorológicas
tenían una gran influencia sobre el material particulado más grueso. Para las variables de
concentración de MP2.5, se observó una disminución en el R2, lo que sugirió que las
principales fuentes de aumento para este contaminante no estaban presentes en las bases
de datos recogidas. Además, al estar incluida la concentración de MP2.5 dentro del MP10,
se pudo explicar una disminución en el R2 de este último por la presencia del material más
fino en su magnitud.
En este caso, la métrica de interés principal fue el R2, porque como se explicó con
anterioridad, reflejó el nivel de incidencia de las variables de entrada del problema sobre
la variable a pronosticar. Se observó una variación prácticamente nula en el R2 para los
escenarios sin y con tronaduras, lo que podría significar que dichas variables tuvieron una
incidencia insignificante en el pronóstico de material particulado, incluso en la ciudad de
Tierra Amarilla en donde se esperaría una repercusión mayor dada la cercanía geográfica
de la mina a cielo abierto de Candelaria con la ciudad. Sobre las métricas de precisión en
el pronóstico, también se observó una variación despreciable, lo que reforzó la idea de que
76
las variables de tronadura, de la forma en que fueron incluidas, no tuvieron una mayor
incidencia sobre los resultados del modelo de pronósticos.
77
Al quitar todas las variables de entrada, excepto las de concentración de material
particulado, se observó una clara disminución en el R2 para el pronóstico de MP10, en
comparación al escenario original del modelo, lo que confirmó la incidencia de las
variables de pronóstico seleccionadas para este contaminante en particular. Para el caso
del MP2.5, la disminución del R2 se observó en Sivica, pero en Tama hubo un aumento,
lo que refuerza el postulado de que las variables seleccionadas, sobre todos las
atmosféricas, no poseen una mayor incidencia sobre el MP2.5 (en la ventana de tiempo
seleccionada y en la zona geográfica en estudio). Con respecto a las métricas de exactitud,
el comportamiento fue similar a lo acontecido con el R2, aumentando el error para las
concentraciones de MP10 y de MP2.5_SIVICA, y disminuyendo para MP2.5_TAMA.
78
CAPITULO 5: CONCLUSIONES Y RECOMENDACIONES
El modelo de redes neuronales, basado en una arquitectura del tipo LSTM, fue capaz
de realizar pronósticos de MP10, para las ciudades de Copiapó y Tierra Amarilla, con un
margen de error aceptable, algo de suma importancia ya que fue este contaminante el que
produjo la declaración de zona saturada para las ciudades ya mencionadas. Con respecto
al MP2.5, si bien el margen de error para la ciudad de Copiapó también fue bueno, en
Tierra Amarilla se observó una magnitud mayor, lo que es explicó porque las variables
seleccionadas para alimentar al modelo (que eran las que se encontraban disponibles para
el uso público) no fueron suficientes para explicar el fenómeno modelado, algo que se vio
claramente reflejado en el coeficiente de correlación.
Se concluyó también, que posiblemente las variables que mas incidieron sobre los
niveles de MP10 fueron las variables climatológicas, algo coincidente con lo estudiado en
el marco teórico del presente trabajo, aunque no significa que estas variables sean las
únicas, ya que posiblemente existen fuentes emisoras de MP10 que no fueron recogidas
en la base de datos de este proyecto. Para el MP2.5, se presume que las variables
antropogénicas relacionadas a la actividad industrial fueron las que más afectaron los
niveles de este contaminante (variables a las que no se tuvo acceso).
Sobre los niveles de contaminación observados en ambas ciudades, si bien existe una
superación en la norma primaria anual para MP10, no se observaron episodios de
emergencia y ni preemergencia por MP10 y MP2.5 para la ciudad de Copiapó, siendo los
episodios más críticos las alertas que representaron, del total de mediciones estudiadas, el
0.05% para MP10 y el 0.03% para el MP2.5. En donde si se observaron episodios críticos
por contaminación fue en Tierra Amarilla, específicamente por MP2.5, lo que generó
momentos de emergencia ambiental en la ciudad, y una cantidad mayor de preemergencias
79
y alertas ambientales. Para el MP10, Tierra Amarilla no registró momentos de emergencia
ambiental, pero la cantidad de preemergencias y alertas fueron muchas más que en la
ciudad de Copiapó. Debido a lo anterior, si se hubiese deseado calcular la confiabilidad
del modelo de pronósticos en base a los episodios ambientales (tal y como se indicaba en
el ya derogado Decreto Supremo N°59 del año 1998), se habría llegado a más del 99% de
exactitud, por lo tanto, esta opción fue desechada.
80
• Utilizar mayor capacidad de procesamiento computacional, con el fin de poder
realizar entrenamientos con bases de datos mucho más extensas, permitiendo
además llevar a cabo técnicas como la validación cruzada lo que aumentarían
la precisión del modelo y la cantidad de información disponible para el
entrenamiento. También permitiría llevar a cabo una optimización bayesiana
incluyendo una cantidad mayor de hiperparámetros, y aumentando la cantidad
de iteraciones con inferencia bayesiana.
81
CAPITULO 6: BIBLIOGRAFÍA
3- Castro, P., Vera, J., Cifuentes, L., Wellenius, G., Verdejo, H., Sepúlveda, L.,
Vukasovic, J. L., & Llevaneras, S. (2010). Polución por material particulado fino (PM
2,5) incrementa las hospitalizaciones por insuficiencia cardiaca. Revista Chilena de
Cardiología, 29(3), 306–314. https://doi.org/10.4067/s0718-85602010000300004
4- Román A, O., Prieto C, M. J., Mancilla F, P., Astudillo O, P., Dussaubat A, A. M.,
Miguel W, C., & Lara M, J. (2009). Daño cardiovascular por material particulado del
aire. Puesta al día 2008. Revista Médica de Chile, 137(9), 1217–1224.
https://doi.org/10.4067/s0034-98872009000900013
82
10- Gupta, S. (2020, junio 26). Most common Loss functions in Machine Learning.
Towards Data Science. https://towardsdatascience.com/most-common-loss-functions-in-
machine-learning-c7212a99dae0
11- Lohr, S. (2014, agosto 18). For big-data scientists, ‘janitor work’ is key hurdle to
insights. The New York times. https://www.nytimes.com/2014/08/18/technology/for-
big-data-scientists-hurdle-to-insights-is-janitor-work.html
12- John L. Pearce, Jason Beringer, Neville Nicholls, Rob J. Hyndman, Nigel J.Tapper.
(2010). Quantifying the influence of local meteorology on air quality using generalized
additive models.
13- Pascanu, R., Mikolov, T., & Bengio, Y. (2012). On the difficulty of training
Recurrent Neural Networks. https://arxiv.org/pdf/1211.5063.pdf
15- Kingma, D. P., & Ba, J. (2014). Adam: A method for stochastic optimization.
https://arxiv.org/pdf/1412.6980.pdf
83
CAPITULO 7: ANEXO
UDA
Sivica
a
Tama
84
Gráficos 7.1: Dispersión de cada variable en función de MP10_TAMA
85
Gráficos 7.2: Dispersión de cada variable en función de MP2.5_TAMA
86
Gráficos 7.3: Dispersión de cada variable en función de MP10_SIVICA
87
Gráficos 7.4: Dispersión de cada variable en función de MP2.5_SIVICA
88
Gráficos 7.5: Dispersión de cada variable en función de Temperatura_aire
89
Gráficos 7.6: Dispersión de cada variable en función de Temperatura_rocio
90
Gráficos 7.7: Dispersión de cada variable en función de Radiacion_solar
91
Gráficos 7.8: Dispersión de cada variable en función de Humedad_relativa
92
Gráficos 7.9: Dispersión de cada variable en función de Presión atmosférica
93
Gráficos 7.10: Dispersión de cada variable en función de Precipitacion_liquida
94
Gráficos 7.11: Dispersión de cada variable en función de Velocidad_viento
95
Gráficos 7.12: Dispersión de cada variable en función de Direccion_viento
96
Gráficos 7.13: Dispersión de cada variable en función de Velocidad_viento TAMA
97
Gráficos 7.14: Dispersión de cada variable en función de Direccion_viento _TAMA
98
Tabla 7.1: Detalle de las iteraciones efectuadas por el Optimizador Bayesiano
99
17 -379.8 302 506 405 397 0.0072 0.0929 0.0616 0.0179 0.2679 0.7861 0.5639 0.4015 0.0060
18 -319.8 343 98 224 335 0.0079 0.0195 0.0529 0.0179 0.3130 0.2021 0.6673 0.2900 0.0079
19 -142.3 223 473 153 194 0.0255 0.0186 0.0650 0.0758 0.2732 0.5384 0.4984 0.7656 0.0006
20 -122.3 223 87 65 145 0.0374 0.0406 0.0892 0.0472 0.7794 0.5117 0.3502 0.7003 0.0008
21 -340.8 157 266 104 327 0.0096 0.0716 0.0210 0.0905 0.6385 0.2634 0.7847 0.6158 0.0025
22 -355 60 226 181 217 0.0171 0.0427 0.0911 0.0224 0.3990 0.3480 0.6678 0.7812 0.0070
23 -327.5 267 187 216 462 0.0610 0.0050 0.0439 0.0798 0.7801 0.3624 0.6906 0.3220 0.0010
24 -379.4 476 290 198 144 0.0146 0.0049 0.0253 0.0177 0.4637 0.7646 0.4057 0.3369 0.0094
25 -339.2 111 101 243 273 0.0153 0.0864 0.0141 0.0911 0.7430 0.7378 0.4927 0.7118 0.0049
26 -310.4 277 382 436 120 0.0446 0.0091 0.0940 0.0832 0.4174 0.7954 0.1248 0.3363 0.0054
27 -362.1 462 193 421 223 0.0273 0.0960 0.0066 0.0707 0.4173 0.4073 0.3523 0.2203 0.0066
28 -375.3 366 276 318 490 0.0132 0.0665 0.0540 0.0570 0.1341 0.1690 0.5378 0.5800 0.0086
29 -331.7 350 331 205 447 0.0060 0.0898 0.0365 0.0954 0.5708 0.1311 0.4528 0.2699 0.0039
30 -305.4 390 426 134 113 0.0573 0.0759 0.0200 0.0307 0.4692 0.6152 0.6265 0.2941 0.0062
100
Código principal del proyecto, escrito en lenguaje Python.
101
#Declarar la función para separar la base de datos en train y test
def split_data(df,time_steps,predicted_window,features1,features2,target):
train, test = df.iloc[0:27026], df.iloc[27026:len(df)]
x1_train, x2_train, y_train = create_dataset(train[features1], train[features2], train[target], time_steps,
__predicted_window)
x1_test, x2_test, y_test = create_dataset(test[features1], test[features2], test[target], time_steps,
__predicted_window)
return (x1_train, x2_train, x1_test, x2_test, y_train, y_test)
102
dense2 = Dense(50)(dropout2_2)
#Unir ambas partes de la red
merge = concatenate([dense1, dense2])
output=Dense(units=predicted_window)(merge)
#Definir las capas input y ouput, y compilar el modelo
model = Model(inputs=[input1, input2], outputs=output)
model.compile(loss=loss, optimizer=optimizer)
return (model)
#Definir la función que entrena y guarda el modelo en base a la arquitectura antes declarada
def training(x1_train, x2_train, y_train, x1_test, x2_test, y_test):
model = LSTM_network()
history=model.fit([x1_train, x2_train], y_train, batch_size=256, epochs=150,
__verbose=1,validation_split=0.33, shuffle=False)
predictions = model.predict([x1_test,x2_test])
model.save('/content/drive/MyDrive/model.h5')
return (predictions, history, model)
#Definir la función que evalúa los pronósticos de la red neuronal en base a ciertas métricas
def performance_evaluation(original, predictions):
MAPE = mean_absolute_percentage_error(original, predictions)
r2 = r2_score(original, predictions)
MSE = mean_squared_error(original, predictions)
RMSE = mean_squared_error(original, predictions, squared=False)
MAE = mean_absolute_error(original, predictions)
MBE = np.mean(predictions - original)
eval_list = [r2, RMSE, MSE, MAPE, MAE, MBE]
columns = ['Coefficient of Determination (R2)', 'Root Mean Square Error (RMSE)', 'Mean Squared Error (MSE)',
'Mean Absolute Percent Error (MAPE)', 'Mean Absolute Error (MAE)', 'Mean Bias Error (MBE)']
103
dataframe = pd.DataFrame([eval_list], columns=columns)
return (dataframe)
104
#Declarar las variables de entrada para la segunda ventana de tiempo
features_ALL2=[
'Velocidad_viento_TAMA',
'Temperatura_aire',
'Temperatura_rocio',
'Radiacion_solar',
'Humedad_relativa',
'Presion_atmosferica',
'Velocidad_viento',
'Precipitacion_liquida',
'Hora_sin', 'Hora_cos',
'Dia_semana_sin', 'Dia_semana_cos',
'Mes_sin', 'Mes_cos',
'Direccion_viento_sin', 'Direccion_viento_cos',
'Direccion_viento_TAMA_sin', 'Direccion_viento_TAMA_cos',
'Feriado/fin_de_semana',
'Cuarentena_Copiapo',
'Cuarentena_Tierra_Amarilla']
#Declarar los parámetros del modelo, en este caso el pronóstico fue para MP10_SIVICA_24H
time_steps = 24
predicted_window = 24
features1 = features_ALL
features2 = features_ALL2
target = 'MP10_SIVICA_24H'
#Dividir la base de datos en ‘x’ e ‘y’ en ‘train’ y ‘test’ con la función correspondiente
x1_train, x2_train, x1_test, x2_test, y_train, y_test = split_data(df=final_dataset, time_steps=time_steps,
predicted_window=predicted_window, features1=features1, features2=features2, target=target)
105
#Iniciar el entrenamiento de la red neuronal con la función correspondiente
predictions, history, model = training(x1_train=x1_train, x2_train=x2_train, y_train=y_train, x1_test=x1_test,
x2_test=x2_test, y_test=y_test)
#Evaluar la calidad de los pronósticos con la función correspondiente y guardar los resultados
performance_evaluation(original=y_test, predictions=predictions)
pd.DataFrame(predictions).to_excel("/content/drive/MyDrive/ypredict.xlsx",index=True)
pd.DataFrame(y_test).to_excel("/content/drive/MyDrive/ytest.xlsx",index=True)
106