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

Post on 13-Mar-2016

53 views 1 download

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. (Clase Nº 4: Ideas Preliminares). Material digital elaborado por: Miguel Vera. Mérida, Mayo de 2009. Universidad de Los Andes - PowerPoint PPT Presentation

Transcript of 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

GIBULAGIBULA

Máquinas de Soporte Vectorial.(Clase Nº 4: Ideas Preliminares)

Material digital elaborado por:

Miguel Vera

Mérida, Mayo de 2009

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

GIBULAGIBULA

Mérida, Mayo de 2009

Preliminar Nº 5

Algoritmo Expectación-Maximización (EM):Algoritmo Expectación-Maximización (EM):

Consideraciones teóricas y AplicacionesConsideraciones teóricas y Aplicaciones

Algoritmo EM: Modelo Teórico

Donde:

Inconvenientes:

Mezcla de Gaussianas

Mezcla de Gaussianas

Mezcla de Gaussianas

Mezcla de Gaussianas

Ejemplo de Código para el algoritmo EM

function gMM = EMLISTO(datos,k)data = load(datos);mx = max(data);mn = min(data);plot(data(:,1),data(:,2),'b.','MarkerSize',15); axis([0 120 0 80]),hold on;gMM.k = k;gMM.d = size(data,2);%Inicializacion de los parametros de la mezcla gaussiana (gMM)gMM.mu = [ ]; for i=1:k mux = (rand(size(mx)).*(mx-mn))'; gMM.mu = [gMM.mu mux]; end initSD = (mx-mn)/(k^(1/gMM.d));initCovar = ((mean(initSD)/k)^2)*eye(gMM.d); for i=1:k gMM.covar(:,:,i) = initCovar; endgMM.weights = ones(k,1)/k;

Ejemplo de Código para el algoritmo EM%ExpectacionnIter = 50;for i=1:nIter i responsabilidades = []; for i=1:gMM.k weight = gMM.weights(i); mu = gMM.mu(:,i); covar = gMM.covar(:,:,i); end [n,gMM.d] = size(data);z = (2*pi)^(0.5*gMM.d);S = zeros(1,gMM.k);r = zeros(gMM.d,gMM.d,gMM.k); for j=1:gMM.k, if gMM.covar(:,:,j)==zeros(gMM.d,gMM.d), gMM.covar(:,:,j)=ones(gMM.d,gMM.d)*eps; end S(j) = sqrt(det(gMM.covar(:,:,j))); r(:,:,j) = inv(gMM .covar(:,:,j)); end

Ejemplo de Código para el algoritmo EM

responsabilidades = zeros(n,gMM.k); for q=1:n, for j=1:gMM.k, rXM = data(q,:)'-gMM.mu(:,j); tt = exp(-0.5*rXM'*r(:,:,j)*rXM)/(z*S(j)); responsabilidades(q,j) = gMM.weights(j)*tt; end resp=responsabilidades(:,j); end responsabilidades = responsabilidades ./repmat(sum(responsabilidades,2),1,gMM.k);plot(data(:,1),data(:,2),'b.','MarkerSize',15); k = size(responsabilidades,2); if k <= 3 colorExpectacion = [responsabilidades zeros(size(data,1),3-k)]; for i=1:size(data,1) plot(data(i,1),data(i,2),'color',colorExpectacion(i,:),...

'marker','.','MarkerSize',15); end end

Ejemplo de Código para el algoritmo EM% MaximizaciongMMOld = gMM;for i=1:gMM.k resp = responsabilidades(:,i); [n,gMM.d] = size(data);gMM.weights = zeros(1,gMM.k); gMM.mu = zeros(gMM.d,gMM.k);gMM.covar = zeros(gMM.d,gMM.d,gMM.k);for i=1:gMM.k, % Calculo de los pesos finales for j=1:n, gMM.weights(i) = gMM.weights(i) + responsabilidades(j,i); gMM.mu(:,i) = gMM.mu(:,i) + responsabilidades(j,i)*data(j,:)'; end gMM.mu(:,i) = gMM.mu(:,i)/gMM.weights(i);% Calculo de las medias finales endfor i=1:gMM.k, for j=1:n, rXM = data(j,:)'-gMM.mu(:,i); gMM.covar(:,:,i) = gMM.covar(:,:,i) + responsabilidades(j,i)*rXM*rXM';% cov finales end gMM.covar(:,:,i) = gMM.covar(:,:,i)/gMM.weights(i);endgMM.weights = gMM.weights/n;

Ejemplo de Código para el algoritmo EM

% Valores finales de los parametros del gMM weight = gMM.weights(i);mu = gMM.mu(:,i);covar = gMM.covar(:,:,i);endplot(data(:,1),data(:,2),'b.','MarkerSize',15); k = size(responsabilidades,2); if k <= 3 colores = [responsabilidades zeros(size(data,1),3-k)]; for i=1:size(data,1) plot(data(i,1),data(i,2),'color',colores(i,:),...

'marker','.','MarkerSize',15); endend criterioparada = sum(sum((gMMOld.mu - gMM.mu).^2))if criterioparada <= 0.0000000000001 criterioparadabreak;end end

Asignación

1.- Descargar de la carpeta materialelectiva, ubicada en:www.tach.ula.ve/vermigLos siguientes archivos: EM.rar, tarea5.pdf y reportemerida.doc2.- Seguir las instrucciones dadas en tarea5.pdf3.- Para verificar si los programas fueron bien diseñados se deben correr y obtener resultados similares a los contenidos en el archivo reportemerida.doc. Nota: Replicar para todos los casos presentados en ese documento.Entregar via email: veramig@gmail.comFecha Tope: 02/06/2009Hora: 12 del medio día