Evaluación Experimental de Técnicas de Caracterización de Series

Anuncio
Evaluación Experimental de Técnicas de Caracterización
de Series de Tiempo Aplicadas a Electrocardiogramas
Abstract
Due to the always increasing capabilities of computer systems, it is now practical to store and process
large amounts of electronic electrocardiography records. This represents a great research opportunity
for developing new storage models for efficient pattern search in these data bases. Efficient pattern
matching algorithms are the stepping stone for complex operations of data mining and knowledge
discovery. As the electrocardiogram is a sequence of records measuring the heart’s electric activity, it
can be treated as a time series. Therefore, indexing and querying techniques developed for time series
data should produce correct and adequate
results when
applied
to electrocardiograms.
However, we still need to evaluate the effectiveness of these techniques for producing efficient
similarity searches. In this work we evaluate these techniques by counting the number of false alarms
raised when doing a similarity search. Our results show that techniques based on segmentation and
quantization are the most promising
Técnicas de Caracterización
Para caracterizar series de tiempo se ha propuesto el uso de la transformada discreta de Fourier (DFT).
Con esta técnica, las series de tiempo son representadas como un vector de baja dimensionalidad en el
espacio de frecuencias (al utilizar los primeros coeficientes de la DFT). La DFT puede calcularse de
modo muy eficiente mediante el algoritmo FFT (Fast Fourier Transform). Otra técnica para la
caracterización de serie de tiempo es Piecewise Aggregate Approximation (PAA). Aquí, el vector
característico se obtiene dividiendo la serie de tiempo en segmentos de la misma longitud y calculando
la media de cada segmento. El vector formado por los valores obtenidos será la nueva representación
de la serie de tiempo en un espacio dimensional inferior al original. Esta transformación es
equivalente a la transformada Haar cuando el número de segmentos (o de coeficientes de la
transformada) es una potencia de dos. Otra técnica propuesta para la representación de series de tiempo
es la Adaptive Piecewise Constant Approximation (APCA). Este método consiste en dividir la serie de
tiempo en segmentos, y utilizar dos valores para caracterizar a cada segmento (que en este caso son de
longitud variable para adaptarse mejor a la forma de la serie de tiempo), el primer valor es promedio de
los valores en el segmento, mientras que el segundo valor registra la longitud del segmento.
Experimentos
En la evaluación de la búsqueda de patrones sobre el vector característico, resultado de aplicar a la serie
de tiempo de un ECG la técnica de caracterización seleccionada, se implementó el algoritmo de
búsqueda de patrones basado en un método de coincidencia de subsecuencia (llamadas motifs) para una
búsqueda temporalmente eficiente. La solución del algoritmo propuesto es equivalente a la que se
genera tras examinar exhaustivamente cada posible par de patrones en la serie de tiempo para una
coincidencia, dando como resultado el par de patrones con mayor semejanza. A este par de patrones se
le conoce como primer motif.
La dimensionalidad de los vectores característicos utilizada en nuestros experimentos varía entre 8, 16
y 32 dimensiones. En la búsqueda de motifs, se consideraron solamente patrones con una separación
de 8, 16, 32 y 64 posiciones en el tiempo. Es decir, se compararon solamente pares de patrones cuyos
puntos de inicio están separados al menos ese número de posiciones en el tiempo. Por su parte, en la
búsqueda los patrones se consideraron secuencias de 128, 256 y 512 valores. Como se indicó
anteriormente, los algoritmos de búsqueda sobre vectores característicos generan falsos positivos que
tienen que ser verificados después en una etapa de filtrado. En este caso, un falso positivo es un patrón
que se propone inicialmente como parte de la solución de la búsqueda, pero que después de la etapa de
filtrado este resulta no ser el patrón buscado. Si al generar un vector característico a partir de un ECG
se pierde poca información, es decir si los datos originales son similares de los datos obtenidos al
utilizar el vector característico, entonces el número de falsos positivos se reduce y en consecuencia la
calidad y eficiencia en la búsqueda se incrementa.
En nuestros experimentos, la variable a medir es el número de falsos positivos generados en el
proceso de búsqueda. El objetivo de este trabajo es evaluar las técnicas de caracterización al medir el
número de falsos positivos utilizando vectores característicos de diferentes tamaños
(dimensionalidades). Por otro lado, al utilizar patrones de diferentes tamaños buscamos evaluar si el
tamaño del patrón influye en la eficacia del algoritmo de búsqueda.
Ejecución de los Experimentos en ambiente de escritorio
$ ./exp_PAA_bak.sh $PROGRAMA $DB $RESULTADOS $INDICE $COLUMNAS
DONDE:
$PROGRAMA
: ES EL NOMBRE DEL PROGRAMA QUE SE EJECUTARÁ
$DB
: ES LA DIRECCIÓN A LA BASE DE DATOS CON LOS ARCHIVOS ASCII
$RESULTADOS
RESULTANTES
: ES LA DIRECCIÓN DONDE SE GUARDARÁN LOS ARCHIVOS
$INDICE
: COLUMNA DE DATOS QUE SE UTILIZARÁ DEL ARCHIVO ASCII
$COLUMNAS
: CANTIDAD DE COLUMNAS DE DATOS EN EL ARCHIVO ASCII
LA EJECUCIÓN DE LOS SCRIPTS ES EN EL DIRECTORIO:
/home/gerardo/Experimentos/caracterizacion
UN EJEMPLO DE EJECUCIÓN DE LOS EXPERIMENTOS SERÍA:
./exp_PAA.bak.sh BusquedaPAA ../Databases/PAA ../resultados/PAA
DONDE:
*BusquedaPAA ,es el programa que se ejecutará por el script
*../Databases/PAA/ ,contiene los electros que se analizarán
*../resultados/PAA/ ,es la carpeta donde se depositarán todos los archivos resultantes
* 0 ,en todos los archivos, la columna de datos que se utilizara será el indice 0
* 1 ,el archivo solo tiene una columna de datos
NOTA:
El archivo ASCII del electrocardiograma, consta de distintas columnas, tiene la columna de tiempo
y distintas columnas de datos, dependiendo del archivo, un simple cat sobre el archivo
arroja la cantidad de columnas que este tiene. Sin embargo las que le interesan al programa
son las columnas de datos, no las de tiempo.
archivo.txt: Este archivo tiene 1 columna de datos y esta en el indice 0.
tiempo
datos
1
123
2
457
3
568
4
789
5
678
6
556
Resultados de Latin America 2 2010 - Joint GISELA/EPIKH School for Application Porting
Los resutados obtenidos en esta escuela se dividieron en 3 Etapas.
Primer Etapa.
Se logro en la portabilidad de la aplicación a un ambiente grid diseñando un par de script que enviara y
procesara la aplicación al igual que la base de datos necesaria.
Teniendo un archivo .jdl como el siguiente
Type = "Job";
JobType = "Normal";
Executable = "grid.sh";
StdOutput = "output.txt";
StdError = "error.txt";
InputSandbox = {"grid.sh",”db.tar.gz”,"exp_PAA_bak.sh","Busqueda"};
OutputSandbox = {"resultados.tar.gz","output.txt", "error.txt"};
y un script de ejecucion:
#!/bin/bash
#Extrae archivos de la base de datos
tar -zxvf $1
#Crea directorio de resultados
mkdir -p resultados/PAA
#Asigna Permisos de ejecucion
chmod +x exp_PAA_bak.sh
chmod +x Busqueda
# Ejecuta la aplicacion
./exp_PAA_bak.sh Busqueda Databases/PAA/ resultados/PAA/ 0 2
# Comprime y empaca los resultados
tar -zcvf resultados.tar.gz resultados
Segunda Etapa.
Una segunda solución en ambiente de grid consistió en colocar la bases de datos en un Storage Element
la cual era descargada por los worked node para su procesamiento por el script de ejecucion. Para esto
se diseño un par de script como los siguientes:
# Archivo .jdl
Type = "Job";
JobType = "Normal";
Executable = "grid_se.sh";
StdOutput = "output.txt";
StdError = "error.txt";
InputSandbox = {"grid_se.sh","exp_PAA_bak.sh","Busqueda"};
OutputSandbox = {"resultados.tar.gz","output.txt", "error.txt"};
#!/bin/bash
# Archivo de Ejecucion de Aplicacion
#Descargar Archivo de SE (db.tar.gz)
export LFC_HOST=lfc.grid.unam.mx
lcg-cp --vo prod.vo.eu-eela.eu lfn:/grid/prod.vo.eu-eela.eu/gerardo/db.tar.gz db.tar.gz
#Extrae archivos de la base de datos
tar -zxvf db.tar.gz
#Crea directorio de resultados
mkdir -p resultados/PAA
#Asigna Permisos de ejecucion
chmod +x exp_PAA_bak.sh
chmod +x Busqueda
# Ejecuta la aplicacion
./exp_PAA_bak.sh Busqueda Databases/PAA/ resultados/PAA/ 0 2
Tercer Etapa
Esta tercer solución de portabilidad de la aplicación a la grid consistió en establecer conexiones
remotas a la base de datos colocada en un Storage Element. Para esta solución se utilizo la Biblioteca
de funciones GFIL, misma que permitió crear una función que llevara a cabo la transferencia de
archivos hacia la aplicación. Esta función se ilustra a continuación:
#include "gfal_api.h"
char *get_file(char *nomArch);
char *get_file(char *nomArch){
int block_size =1, FD;
int *readValues;
struct stat datos_archivo; //Informacion del archivo remoto
char str[999];
char *read_buffer;
int j=0, i=0;
FD = gfal_open ( nomArch, O_RDONLY,0 );
if(FD < 0) {
perror ("error in gfal_open");
exit(1);
}
// Determina informacion del Archivo abierto
gfal_stat(nomArch,&datos_archivo);
// Crea buffer para los datos del archivo
read_buffer=(char *)malloc(datos_archivo.st_size);
// Lee el archivo de la Grid
gfal_read(FD,read_buffer,datos_archivo.st_size);
return read_buffer;
}
Descargar