21
Universidad de Los Andes Universidad de Los Andes Facultad de Ingeniería Facultad de Ingeniería Escuela de Ingeniería Eléctrica Escuela de Ingeniería Eléctrica Maestría en Ingeniería Biomédica Maestría en Ingeniería Biomédica GIBULA GIBULA Máquinas de Soporte Vectorial de Mínimos Cuadrados. (L.S.S.V.M) (Clase Nº 6:Una Aplicación a Señales de ECG) Material digital elaborado por: Miguel Vera Con la Colaboración de: Ing. José Avila Mérida, Junio de 2009

Universidad de Los Andes Facultad de Ingeniería Escuela de Ingeniería Eléctrica

  • Upload
    caitir

  • View
    80

  • Download
    5

Embed Size (px)

DESCRIPTION

Universidad de Los Andes Facultad de Ingeniería Escuela de Ingeniería Eléctrica Maestría en Ingeniería Biomédica GIBULA. Máquinas de Soporte Vectorial de Mínimos Cuadrados. (L.S.S.V.M) (Clase Nº 6:Una Aplicación a Señales de ECG). Material digital elaborado por: Miguel Vera - PowerPoint PPT Presentation

Citation preview

Page 1: Universidad de Los Andes Facultad de Ingeniería Escuela de Ingeniería Eléctrica

Universidad de Los AndesUniversidad de Los Andes

Facultad de IngenieríaFacultad de Ingeniería

Escuela de Ingeniería EléctricaEscuela de Ingeniería Eléctrica

Maestría en Ingeniería BiomédicaMaestría en Ingeniería Biomédica

GIBULAGIBULAMáquinas de Soporte Vectorial de Mínimos

Cuadrados.

(L.S.S.V.M)

(Clase Nº 6:Una Aplicación a Señales de ECG)

Material digital elaborado por:

Miguel Vera

Con la Colaboración de:

Ing. José Avila Mérida, Junio de 2009

Page 2: Universidad de Los Andes Facultad de Ingeniería Escuela de Ingeniería Eléctrica

Tutorial para implementar, en la práctica, una LSSVM Binaria.

Caso3: Señal ECG.

Versión 1.1.

Autor: Miguel Vera

Universidad de los Andes Universidad de los Andes Facultad de Ingeniería Facultad de Ingeniería Escuela de Ingeniería Eléctrica Escuela de Ingeniería Eléctrica Maestría en Ingeniería BiomédicaMaestría en Ingeniería BiomédicaGIBULAGIBULA

Page 3: Universidad de Los Andes Facultad de Ingeniería Escuela de Ingeniería Eléctrica

Antes de entrenar, simular y validar una LSSVM, se debe:

A.- Preparar la base de datos, para que sirva de entrada a la LSSVM. Para ello:

- Guardar la base de datos, que contiene la señal ECG, en el directorio del toolbox que permite implementar la LSSVM.

-La señal ECG que se va a utilizar posee aproximadamente50 mil muestras. Esta señal debe ser cargada en el workspace de Matlab con la función load. Luego de ello, se procede a larespectiva Normalización de la referida señal.

-De manera arbitraria, se reservan las primeras 5 mil muestras de la señal normalizada, para construir el conjunto de Entrenamiento. Por tanto, el conjunto de Validación preliminar quedará representado por las 45 mil muestras restantes.

Page 4: Universidad de Los Andes Facultad de Ingeniería Escuela de Ingeniería Eléctrica

Antes de entrenar, simular y validar una LSSVM, se debe:

-Debido a que se va a implementar una Máquina Binaria, se debe proceder a crear las dos clases respectivas:

a.- De forma Manual, se seleccionan los primeros 7 complejos QRS para crear las zonas de interés (ROI), es decir, se está interesado en detectar el mencionado complejo.

b.- De manera análoga, se seleccionan partes de la señal que no correspondan al referido complejo para construir las zonas de no interés (NROI). Por ejemplo, se puede utilizar como NROI las ondas P y T.

- Proceso de Vectorización:

a- La señal normalizada, se vectorizará utilizando arreglos de 77 muestras. Este dato se obtuvo de inspeccionar, detalladamente, la duración del citado complejo.

b.- Crear la matriz que va a contener las ROI y NROI, denominada P, usando la relación 1:6. Esto significa que por cada ROI se deben colocar 6 NROI. Adicionalmente, crear la matriz de etiquetas, denominada T, con la misma relación asignando -1 a ROI Y 1 a NROI.

Page 5: Universidad de Los Andes Facultad de Ingeniería Escuela de Ingeniería Eléctrica

Antes de entrenar, simular y validar una LSSVM, se debe:

B.- Seleccionar un Kernel y los Hiperparámetros:

-Tal y como se analizó en teoría, la LSSVM requiere de dos HiperParámetros denominados gamma y sigma2 . En una primeraaproximación ellos serán asignados de forma heurística.

Existe una clara relación entre el tipo de Kernel a utilizar y el sigma2.

Por ejemplo:

Si se elige un kernel lineal la forma de introducir los parámetros es:kernel = ‘RBF_kernel';gam = 10;sig2 =35;

C.- Crear, entrenar, simular y validar la LSSVM

Page 6: Universidad de Los Andes Facultad de Ingeniería Escuela de Ingeniería Eléctrica

Ejemplo de Código Ejemplo de Código

clc,clear,close all load CARDEX.mat; C = X(1:5500); clear X % signal trainload CARDEX.mat; Q = X(1:1000); clear X % signal validation ent = C./max(C); % Normalizacion val = Q./max(Q); NE = numel(ent);NV = numel(val); % Deteccion de ondas Rx = 0;up = 0; % indicador de subida o bajadafor i = 1:NE if ent(i) > 0.7 & up == 0; % threshold subida up = 1; % indicador de subida x = x + 1; t_up(x) = i+10; A(x) = ent(i+10); % amplitud de cada muestra detectada else if ent(i) < 0.7 & up == 1; % threshold bajada up = 0; % indicador de bajada end endend

Page 7: Universidad de Los Andes Facultad de Ingeniería Escuela de Ingeniería Eléctrica

Ejemplo de CódigoEjemplo de Código

% seleccion de ROIk = 0;for i = 1:numel(t_up)-1 marca = ent(t_up(i)-30:t_up(i)+46); for j = 1:numel(marca) k = k + 1; marcadores1(k) = marca(j); end clear marcaend a1 = marcadores1(1:77)';a2 = marcadores1(78:154)';a3 = marcadores1(155:231)';a4 = marcadores1(232:308)';a5 = marcadores1(309:385)';a6 = marcadores1(386:462)';a7 = marcadores1(463:539)';% seleccion de NROI I1 = ent(1:77)';I2 = ent(78:154)';I3 = ent(156:232)';I4 = ent(234:310)';I5 = ent(312:388)';I6 = ent(390:466)';I7=ent(580:656)';I8= ent(658:734)';I9=ent(736:812)';I10=ent(814:890)';I11=ent(892:968)';I12= ent(970:1046)';I13=ent(1359:1435)';. . . I41 = ent(2388:2464)';I42 = ent(2466:2542)';

Page 8: Universidad de Los Andes Facultad de Ingeniería Escuela de Ingeniería Eléctrica

Ejemplo de CódigoEjemplo de Código

% Entrenamiento de la red P = [a1 I1 I2 I3 I4 I5 I6 a2 I7 I8 I9 I10 I11 I12 ... a3 I13 I14 I15 I16 I17 I18 a4 I19 I20 I21 I22 I23 I24 ... a5 I25 I26 I27 I28 I29 I30 a6 I31 I32 I33 I34 I35 I36 ... a7 I37 I38 I39 I40 I41 I42];T = [-1 1 1 1 1 1 1 -1 1 1 1 1 1 1 -1 1 1 1 1 1 1 ... -1 1 1 1 1 1 1 -1 1 1 1 1 1 1 -1 1 1 1 1 1 1 ... -1 1 1 1 1 1 1];X=P';Y=T';gam =1000;sig2 = 150; type = 'classification';[alpha,b] = trainlssvm({X,Y,type,gam,sig2,'RBF_kernel'});[alpha,b] = trainlssvm({X,Y,type,gam,sig2,'RBF_kernel','preprocess'});% Validación de la redYtest = simlssvm({X,Y,type,gam,sig2,'RBF_kernel','preprocess'},{alpha,b},X); s=find(Ytest<0)

Page 9: Universidad de Los Andes Facultad de Ingeniería Escuela de Ingeniería Eléctrica

Ejemplo de CódigoEjemplo de Código

a = 0;for i = 1:NV-76 lb = i; % Ventana de Observación la = 76+i; a = val(lb:la)'; % Posiciona la ventana en la señal Yt_1(i) = simlssvm({X,Y,type,gam,sig2,'RBF_kernel','preprocess'},... {alpha,b},a');ends_1 = find(Yt_1 == -1);% Encuentra la coordenada del marcador respecto de la señal de validación Ima_1 = val(s_1);% Evalúa dicha coordenada en la señal de validación para poder graficarla

val_inv = val(1,end:-1:1); % Inversión de la señal de validación.

Page 10: Universidad de Los Andes Facultad de Ingeniería Escuela de Ingeniería Eléctrica

Ejemplo de CódigoEjemplo de Código

clear afor i = 1:NV-76 lb = NV-76-(i-1); la = NV-(i-1); a = val(lb:la)'; Yt_2(i) = simlssvm({X,Y,type,gam,sig2,'RBF_kernel','preprocess'},... {alpha,b},a'); ends_2 = find(Yt_2 == -1);Ima_2 = val_inv(s_2); figure;subplot(2,1,1);plot(val,'g'); hold on; plot(s_1,Ima_1,'+r');subplot(2,1,2); plot(val_inv,'g'); hold on; plot(s_2,Ima_2,'+r');

Page 11: Universidad de Los Andes Facultad de Ingeniería Escuela de Ingeniería Eléctrica

Ejemplo de CódigoEjemplo de Código

s_11 = minele(s_1); % Eliminación de marcadores repetidosIma_1 = val(s_11); % Imágenes de dichos marcadores s_22 = minele(s_2);for i=1:numel(s_22)s_22(i) = NV-s_22(i); % Ubicación temporal real de marcadoresend % invertidos en señal sin invertirs_22 = sort(s_22);Ima_2 = val(s_22); figure;plot(val,'g')hold onplot(s_11,Ima_1,'+r')plot(s_22,Ima_2,'+r')

for i = 1:numel(s_11) QRS = ent(s_11(i):s_22(i)); IR(i) = max(QRS); tR(i) = min(find(QRS == IR(i))) + s_11(i);end plot(tR,IR,'+r')

Page 12: Universidad de Los Andes Facultad de Ingeniería Escuela de Ingeniería Eléctrica

Función mineleFunción minele

function salida = minele(s) NS = numel(s); x = [ ]; j = 0;for i=1:NS-1 if abs(s(i) - s(i+1)) < 5 % Determina que tan parecida es una muestra j = j+1; % a la siguiente x(j) = min(s(i:i+1)); % Almacena el valor mínimo entre ellas s(i+1) = x(j); % Dicho valor es asignado al siguiente end % del vector de entrada, es decir, end % Al final se obtiene vector con muestras repetidasNX = numel(x);for i = 1:NX-1 % Determina los valores iguales, dejando solo unoif x(i) == x(i+1); x(i) = 10000; endendj = 0;for i = 1:NX if x(i) ~= 10000; j = j + 1; salida(j) = x(i); endend

Page 13: Universidad de Los Andes Facultad de Ingeniería Escuela de Ingeniería Eléctrica

Resultados luego de aplicar el Código anterior

SIMULACIÓN

Resultados luego de aplicar el Código anterior

SIMULACIÓN

Page 14: Universidad de Los Andes Facultad de Ingeniería Escuela de Ingeniería Eléctrica

Resultados luego de aplicar el Código anterior

SIMULACIÓN

Resultados luego de aplicar el Código anterior

SIMULACIÓN

Page 15: Universidad de Los Andes Facultad de Ingeniería Escuela de Ingeniería Eléctrica

Resultados luego de aplicar el Código anterior

SIMULACIÓN

Resultados luego de aplicar el Código anterior

SIMULACIÓN

Page 16: Universidad de Los Andes Facultad de Ingeniería Escuela de Ingeniería Eléctrica

Resultados luego de aplicar el Código anterior

SIMULACIÓN

Resultados luego de aplicar el Código anterior

SIMULACIÓN

Page 17: Universidad de Los Andes Facultad de Ingeniería Escuela de Ingeniería Eléctrica

Resultados luego de aplicar el Código anterior

VALIDACIÓN

Resultados luego de aplicar el Código anterior

VALIDACIÓN

Page 18: Universidad de Los Andes Facultad de Ingeniería Escuela de Ingeniería Eléctrica

Resultados luego de aplicar el Código anterior

VALIDACIÓN

Resultados luego de aplicar el Código anterior

VALIDACIÓN

Page 19: Universidad de Los Andes Facultad de Ingeniería Escuela de Ingeniería Eléctrica

Resultados luego de aplicar el Código anterior

VALIDACIÓN

Resultados luego de aplicar el Código anterior

VALIDACIÓN

Page 20: Universidad de Los Andes Facultad de Ingeniería Escuela de Ingeniería Eléctrica

Resultados luego de aplicar el Código anterior

VALIDACIÓN

Resultados luego de aplicar el Código anterior

VALIDACIÓN

Page 21: Universidad de Los Andes Facultad de Ingeniería Escuela de Ingeniería Eléctrica

AsignaciónAsignación

1.- Replicar lo realizado en esta clase con las bases de datos denominadas:

A (Entrenamiento) y J (Validación)

Entregar via email: [email protected] Tope: 16/06/2009Hora: 12 del medio día