Está en la página 1de 4

Aplicación de TimeGan

Un caso de estudio

Ing. Julio César Cesano González Curso de Redes Neuronales Generativas Profundas:
jcesano@gmail.com. fundamentos y resolución de problemas.

Curso de Posgrado/Educación permanente.


Facultad de Ingeniería, Universidad de la República.
Montevideo, Uruguay.

Abstract—Este trabajo presenta un caso de aplicación de un En la sección de Ejecición del Modelo se describen las
conjunto datos reales que representan una serie temporal de características principales del modelo utilizado para la
medidas de polución tomdas de 5 sensores ubicados en la cuidad de generacion de datos sintéticos.
Madrid, España. Estos datos fueron utilizados en un modelo
TimeGan a efectos de generar nuevos datos sintéticos que En la sección de Resultados se muestra las medidas y
preserven la fidelidad y características de los datos reales. gráficas con medidas de evaluación de los datos generados
versus los datos reales.
Se logró la generación de nuevos datos sintéticos preservando en
una medida razonable la similitud de datos y características. Como Finalmente en la sección Implementación se detallan
medida de evaluación se usó principales PCA y TSNE. apreciaciones al código implementación así como la url donde
se ubica el proyecto complento y los archivos principales
Keywords— formatting; preprocess; TimeGans, PCA, TSNE, modificados en relación al código original utilizado y facilitado
Dataset, Train, Test; en el curso.

I. INTRODUCCIÓN II. DESCRIPCIÓN DE DATOS


El estudio de series de tiempo requiere un esfuerzo de Se utilizó un conjunto de datos que representa una serie
recursos técnicos para la recolección y procesamiento de temporal con datos reales medidos en forma horaria (cada una
información que representan en muchos casos costos hora) de datos de polución tomados de 5 sensores de la cuidad
económicos significativos. Por tal motivo, existe el interés en de Madrid, España. Los datos están comprendidos entre el 1 de
la capacidad de generar nuevos datos sintéticos a partir enero de 2014 a las 00:00 hs y el 30 de noviembre de 2021 a
información existente, que logren preservar no solo las las 23:00 hs.
distribuciones de las caracaterísticas del conjunto de datos real, El cabezal de la tabla conteniendo el conjunto de datos es:
sino que también se debe poder capturar la dinámica compleja
de dichas características a lo largo del tiempo.  DATETIME: columna que contiene la fecha y hora en
que se tomó la medida en formato AAAA-MM-DD
El modelo TimeGAN tiene por objetivo la generación de hh:mm:ss.
datos sintéticos preservando la dinámica temporal de las series
de tiempo.  S008: columna que contiene las medidas capturadas
por el sensor que para este trabajo se identifica con el
En el presente trabajo se aplica el modelo TimeGan a un nombre S008.
conjunto de datos reales que representan una serie temporal de
mediciones de polución tomadas por 5 sensores, para generar  S035: columna que contiene las medidas capturadas
datos sintéticos relacionados a los datos reales utilizados. por el sensor que para este trabajo se identifica con el
nombre S035.
En la sección Descripción de datos se describe el origen y
formato de los originales utilizados.  S038: columna que contiene las medidas capturadas
por el sensor que para este trabajo se identifica con el
En la sección Procesamiento de Información se describen nombre S038.
las tareas realizadas sobre el conjunto de datos original para el
tratamiento de datos faltantes como de registros duplicados.  S048: columna que contiene las medidas capturadas
Luego se explican las tareas de procesamiento realizadas para por el sensor que para este trabajo se identifica con el
adaptar el formato de los datos para utilizarlo en el modelo nombre S048.
TimeGAN.
 S050: columna que contiene las medidas capturadas
por el sensor que para este trabajo se identifica con el
nombre S050.
El conjunto de datos contiene un total de 168.116 registros.

A. Errores y datos faltantes en el conjunto de datos.


En primer lugar se verificó por la presencia de valores
faltantes (vacíos) en el conjuntos de datos (es decir, valores
NaN).
En este sentido se detectaron los siguientes errores en cada
sensor:

Luego se verificó la presencia de valores -1, que se


consideraron como errores de los sensores al momento de
tomar la medida. En este sentido se detectaron los siguientes
errores en cada sensor:

Se detectaron registros correspondientes a una misma fecha


y hora. Estos fueron considerados como errores de registros
duplicados.
cada valor fecha-hora y así tener una serie de tiempo completa
y con valores consistentes.
Para ello, se generó un nuevo conjunto de datos agrupando
las tuplas por la columna DATETIME y agregando como
nuevas columnas el promedio de las medidas de cada sensor.
Se obtuvo el siguiente nuevo formato:

El cuadro anterior indica que hubo 24 valores de fecha-hora  DATETIME: columna que contiene la fecha y hora en
que se repitieron 3 veces comprendiendo un total de 72 que se tomó la medida en formato AAAA-MM-DD
registros, 32.784 valores de fecha-hora que se repitieron 4 hh:mm:ss.
veces comprendiendo un total de 131.116 registros y  Mean_S008: columna que contiene el promedio de
finalmente 48 valores de fechas-hora que se repitieron 8 veces las medidas capturadas por el sensor para la fecha
comprendiendo un total de 384 registros. indicada en la columna DATETIME en el sensor
También se detectaron fechas y horas para los que no se S008.
tiene ningún registro. Los datos están comprendidos entre el 1  Mean_S035: columna que contiene el promedio de
de enero de 2014 a las 00:00 hs y el 30 de noviembre de 2021 a las medidas capturadas por el sensor para la fecha
las 23:00 hs. Se detectaron 4 valores de fecha-hora entre los indicada en la columna DATETIME en el sensor
valores anteriormente indicados para los cuales no se tiene S035.
ningún registro.
 Mean_S038: columna que contiene el promedio de
Las fechas sin medidas registradas son: 2018-03-25 las medidas capturadas por el sensor para la fecha
02:00:00, 2019-03-31 02:00:00, 2020-03-29 02:00:00 y 2021- indicada en la columna DATETIME en el sensor
03-28 02:00:00. S038.
En la siguiente sección se presentan las acciones realizadas  Mean_S048: columna que contiene el promedio de
para el tratamiento de las situaciónes antes mencionadas y la las medidas capturadas por el sensor para la fecha
adaptación del conjunto de datos para poder ser utilizado en el indicada en la columna DATETIME en el sensor
modelo TimeGAN. S008.
 Mean_S050: columna que contiene el promedio de
III. PROCESAMIENTO DE INFORMACIÓN las medidas capturadas por el sensor para la fecha
indicada en la columna DATETIME en el sensor
A. Tratamiento de valores negativos
S050.
Los registros con valores negativos fueron tratados como
errores de medición, por lo tanto se trataron de igual modo que Se obtuvo una serie de tiempo con un total 69.380 registros
los valores faltantes. y 5 columnas (una para cada sensor).
Se transformó cada valor negativo en un valor NaN, para E. Formato para el modelo TimeGAN
así unificar el conjunto de valores faltantes y aplicar un mismo
criterio para el tratamiento de estos casos (valores NaN). Una vez obtenida la tabla conteniendo la serie de tiempo de
medidas de polución, el paso a seguir fue utilizar un modelo
TimeGAN para la generación de datos.
B. Tratamiento de valores faltantes
Considerando que el primer registro de la tabla se Como modelo TimeGAN, se utilizó la implementación
encuentra completo y con valores correctos, se implementó un brindada en el curso de un modelo de ejemplo que utiliza un
algoritmo que sustituye cada valor NaN en cada columna con conjuto de datos de stock.
el último valor (válido) inmediato anterior de la misma Para utilizar nuestro conjunto de datos, se estudió el código
columna. de la implementación del modelo TimeGAN otorgada en el
curso para entender los detalles de implementación para el
C. Tratamiento de agujeros (gaps) preprocesamiento de los datos de entrada y se analizó también
En cuanto a las cuatro fechas para las cuales no se presentó el formato del conjunto de datos de entrada de stock.
ningún registro, se agregó un registro para cada fecha y se Luego, se implementó el preprocesamiento de los datos
completo cada valor con el valor inmediato anterior, siguiendo para dar el formato necesario para ser utilizado en el modelo
el criterio utilizado para los valores faltantes (NaN). (que se ejecuta en el main2.py). Se creó una nueva columna
con forma YYYYMMDD con nombre Idx. Dado que los datos
D. Tratamiento de registros duplicados se registran por hora, esto hace que tengan 24 registros para
Una vez obtenida una tabla con valores válidos, solo cada día. Esta columna "Idx" es utilizada por el método
restaba tomar un criterio para obtener un registro único para data_preprocess() dentro del módulo data_preprocess.py del
modelo TimeGAN. En el juego de datos de stock el campo Idx
original se formaban bloques de 7 registros. Por ello, en forma En este caso se observa que los datos no están mezclados
análoga se implementó un nuevo campo Idx = YYYYMMDD como el la imagen de PCA. Sin embargo, al lado de la cada
generando bloques de 24 registros. nube de puntos azules (datos reales) se genera una nube de
puntos naranja ubicado próximo la nube azul, que es de similar
El dataframe resultante genera un archivo CSV llamado
tamaño. Y en el caso de la nube de mayor tamaño azúl, existe
Sensors_data_formatted.csv que se carga en Main2.py y se
una nube naranja que además de tener tamaño similar, también
ejecuta todo el proceso de TimeGAN.
presenta una forma similar.

IV. EJECUCIÓN DEL MODELO TIMEGAN VI. IMPLEMENTACIÓN


El modelo tiene tres fases de entrenamiento.
Se implementó un módulo denominado preprocess.py que
La fase de entramiento del espacio latente (Embedding contiene el código necesario para el tratamiento de datos
Network Training) se configuró para ejecutar 600 épocas,
faltanes así como para dar el formato requerido para utilizarse
logrando un valor de función de pérdida de 0.0174. en el modelo TimeGAN. El resultado es una tabla guardada en
La fase de entrenamiento supervisado también fue configurado
un archivo csv llamado Sensors_data_formatted.csv que se
con 600 épocas logrando un valor de pérdida de 0.0187. levanta y se ejecuta el modelo dentro del archivo main2.py.
La fase de entrenamiento también requirió de 600 épocas
El proyecto completo se ejecuta desde el archivo
obteniendo los valores de E: 0.3318, G: 2.3378 y D:1.7784.
Copy_of_TimeGAN_6_1.ipynb.
El tiempo total de ejecución del modelo es de 185 minutos El proyecto completo puede descargarse desde .
aproximadamente. https://github.com/jcesano/TimeGAN.git
Igualmente se hace entrega del proyecto completo en el sitio
V. RESULTADOS OBTENIDOS EVA mediante un archivo TimeGAN-master.zip.
Se aplicaron dos técnicas de reducción de dimensiones a
efectos de observar visualmente la distribución de los datos AGRADECIMIENTOS
reales y los datos sintéticos. Se aplicó la técnica PCA y TSNE. Quisiera agradecer a los docentes del curso Sergio
Nesmachnow y Jamal Toutouh. El curso realmente muy bueno
A. PCA y el tema muy interesante. Me gustaría seguir profundizando
A continación se muestra el resultado de la aplicacion de respecto a las GAN y las redes neuronales en general. 
PCA en el conjunto de datos sintéticos y reales.

La imagen anterior, muestra los puntos naranjas (datos


sintéticos) concentrados dentro de nubes azules (datos reales.
Por lo que los puntos se muestran mezclados o pertenecientes a
un mismo "cluster" de datos.

B. TSNE
A continuación se muestra el resutado de la técnica TSNE.

También podría gustarte