150 likes | 354 Views
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
E N D
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 Facultad de Ingeniería Escuela de Ingeniería Eléctrica Maestría en Ingeniería Biomédica GIBULA Preliminar Nº 5 Algoritmo Expectación-Maximización (EM): Consideraciones teóricas y Aplicaciones Mérida, Mayo de 2009
Algoritmo EM: Modelo Teórico Donde:
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; end gMM.weights = ones(k,1)/k;
Ejemplo de Código para el algoritmo EM %Expectacion nIter = 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 % Maximizacion gMMOld = 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 end for 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); end gMM.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); end plot(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); end end criterioparada = sum(sum((gMMOld.mu - gMM.mu).^2)) if criterioparada <= 0.0000000000001 criterioparada break; end end
Asignación 1.- Descargar de la carpeta materialelectiva, ubicada en: www.tach.ula.ve/vermig Los siguientes archivos: EM.rar, tarea5.pdf y reportemerida.doc 2.- Seguir las instrucciones dadas en tarea5.pdf 3.- 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.com Fecha Tope: 02/06/2009 Hora: 12 del medio día