Você está na página 1de 7

POSGRADO

MAESTRIA EN ELECTRONICA, SISTEMAS APLICADOS INTELIGENTES

AUTOR: LESCAS HERNANDEZ RODRIGO rodrigolescas@hotmail.com

MTODO EXPECTATION MAXIMIZATION

HUAJUAPAN DE LEON, OAX., 25 DE NOVIEMBRE DE 2014

Introduccin

En estadstica, el algoritmo Expectation Maximization( EM ) es un mtodo


iterativo para encontrar la mxima verosimilitud de parmetros en modelos
estadsticos. Las iteraciones EM alternan entre el desarrollo de una expectativa
(E), lo que crea una funcin de la expectativa de la log-verosimilitud evaluando
la estimacin de parmetros actuales, y una etapa de maximizacin (M), que
calcula los parmetros a maximizar la esperada log-verosimilitud encontrada
en el paso de expectation. Estos parmetros-estimaciones a continuacin se
utilizan para determinar la distribucin de las variables latentes en la siguiente
etapa E.
Esto se realiza hasta obtener un error mnimo. En la Figura 1 observamos una
serie de puntos y dos medias y distribuciones que se ajustaran a estos puntos.

Figura 1.- Distribucin de puntos con una media y varianza aleatoria

En travs de las iteraciones que realizaremos posteriormente ajustaremos los


parmetros de media y varianza de manera que se ajusten a la distribucin de
puntos. De manera que nos puedan describir esta serie de puntos. Como se
muestra en la Figura 2.

Figura 2.- Distribucion de puntos con media y varianza ajustados por el mtodo
Expectation Maximization

El algoritmo EM se utiliza para encontrar las de mxima verosimilitud


parmetros de un modelo estadstico en los casos en que las ecuaciones no
pueden resolverse directamente. Normalmente, estos modelos incluyen
variables latentes, adems de parmetros desconocidos y observaciones de
datos conocidos.

Resultados
Para probar este algoritmo se implement la funcin EM en la cual envas
distribuciones con medias, varianzas y los pesos de probabilidades, y esta
genera una serie de puntos pseudo-aleatorios con ayuda de la siguiente
funcin: mvnrnd(m(:,dist)',Se(:,:,dist),1)
Y a partir de estos puntos la funcin estima la media, varianza y probabilidad
de esta serie de datos. Por lo cual esperaramos una estimacin similar a la
enviada originalmente.
El cdigo de la funcin, realizada en Matlab, se muestra a continuacin:

function [ mf, Sf,Pf ] = EM( m1,m2,m3,s1,s2,s3,p1,p2,p3 )


%Funcion Expectation Maximization
clc;
N=500;
m=[m1' m2' m3'];
S=[s1 s2 s3];
P=[p1 p2 p3];
P_acc=[P(1) P(1)+P(2) P(1)+P(2)+P(3)];
Se(:,:,1)=S(1)*eye(length(m(:,1)));
Se(:,:,2)=S(2)*eye(length(m(:,1)));
Se(:,:,3)=S(3)*eye(length(m(:,1)));
X=[];
for i=1:N
t=rand;
dist=sum(t>P_acc)+1;
X=[X;mvnrnd(m(:,dist)',Se(:,:,dist),1)];
end
X=X';
figure(1), plot(X(1,:),X(2,:),'.');
figure(1), axis equal
figure(1), axis([-4 8 -4 8]);
%%Estimaciones iniciales....
mi_1=[0 2]';
mi_2=[5 2]';
mi_3=[5 5]';
Si=[0.15 0.27 0.4];
Si_0(:,:,1)=Si(1)*eye(length(m(:,1)));
Si_0(:,:,2)=Si(2)*eye(length(m(:,1)));
Si_0(:,:,3)=Si(3)*eye(length(m(:,1)));
Pi=[1/3 1/3 1/3];
mi=[mi_1 mi_2 mi_3];
Ynk=[];
e_min=10^(-7);
e=10;
%Proceso iterativo de Expectation Maximization
%hasta que se obtenga un error deseado.
while e>e_min
for k=1:N
%EXPECTATION
%Evalua probabilidad de cada vector en cada componente gaussiano
vec=X(:,k);
Nxn=[];
for j=1:length(Pi)
Nxn=[Nxn (1/(sqrt(2*pi)*det(Si_0(:,:,j))^(0.5)))*exp(0.5*((vec-mi(:,j))'*inv(Si_0(:,:,j))*(vec-mi(:,j))))];

end
P_tot=Nxn*Pi';
for j=1:length(Pi)
Ynk(j,k)=(Nxn(j)*Pi(j))/P_tot;
end
end
Q1=0;
for k=1:N
for j=1:length(Pi)
aux1=-log(2*pi*Si(j));
aux2=((sum(X(:,k))-sum(m(:,j))).^2)/(2*Si(j));
aux3=log(Pi(j));
Q1=Q1+(Ynk(j,k)*(aux1-aux2+aux3));
end
end
% MAXIMIZATION
% Determina las nuevas medias
for j=1:length(Pi)
a=zeros(1,length(mi(:,1)));
for k=1:N
a = a + Ynk(j,k)*(X(:,k)');
end
m_n(:,j)=a/sum(Ynk(j,:));
end
% Determinar las varianzas
S_n=[];
for j=1:length(Pi)
b=0;
for k=1:N
b = b+Ynk(j,k)*((X(:,k)'-m_n(:,j)')*(X(:,k)'m_n(:,j)')');
end
S_n(j)=b/(length(Pi)*sum(Ynk(j,:)));
if S_n(j)<10^(-10)
S_n(j)=0.001;
end
end
% Determina las probabilidades de cada componente
for j=1:length(Pi)
q=0;
for k=1:N
q=q+Ynk(j,k);
end
P_n(j)=q/N;
end
%Calculo el error
e=sum(abs(P_n-Pi))+sum(sum(abs(m_n-mi)))+sum(abs(S_n-Si));
%Asignacion de las nuevas medias, varianzas y probabilidades
%para la siguiente iteracin
Pi=P_n;
Si=S_n;
mi=m_n;
end
mf=mi
Sf=Si

Pf=Pi
end

Para efectos de demostracin se enviaron los sets de datos que se muestran a


la izquierda y la funcin regreso las estimaciones de esos parmetros
mostrados a la derecha.

Set 1

Estimacin Set 1

M1=[0,2]
M2=[5,2]
M3=[5,5]

M1=[ 0.06011 1.98014]


M2=[ 5.02573 1.99118]
M3=[ 5.02664 5.01665]

S1=0.15
S2=0.27
S3=0.4

S1 = 0.0906
S2 = 0.1652
S3 = 0.2686

P1=P2=P3=1/3

P1 = 0.3660
P2 = 0.3357
P3 = 0.2983

Set 2

Estimacin Set 2

M1=[1.6,1.4]
M2=[1.4,1.6]
M3=[1.3,1.5]

M1=[ 0.8152 1.6474]


M2=[ 1.4019 1.4605]
M3=[ 1.1912 1.7809]

S1=0.2
S2=0.4
S3=0.3

S1 = 0.0911
S2 = 0.1737
S3 = 0.2618

P1=0.2
P2=P3=0.4

P1 = 0.0911
P2 = 0.7722
P3 = 0.1367

Set 3

Estimacin Set 3

M1=[1.6,1.4]
M2=[1.4,1.6]

M1=[ 0.6702 2.3101]


M2=[ 1.5639 1.4112]

S1=0.2
S2=0.4

S1 = 0.1749
S2 = 0.2818

P1=P2=1/2

P1 = 0.0474
P2 = 0.9526

Como podemos observar el primer set tuvo una aproximacin bastante buena,
sin embargo los otros dos Sets no tuvieron tan favorable respuesta esto debido
a que los puntos estn muy cerca entre si y no se logra apreciar una tendencia
clara. A continuacin se muestra los puntos generados para el 3er Set.

-2

-4
-4

-2

Figura 3.- Puntos generados por la 3era distribucin

Conclusiones
Este mtodo es muy til para hacer las aproximaciones de los parmetros que
describen a una distribucin de puntos, y al hacer muchas iteraciones se logra
un error pequeo. Las aplicaciones que se le pueden dar a este mtodo son
muchas y muy diversas como por ejemplo el reconocimiento de diversos
patrones, como puede ser voz o imgenes. Sin embargo este mtodo se
muestra poco eficiente cuando los datos estn muy cerca entre s, y esto es
lgico ya que ni a simple vista se podra identificar una tendencia a algn lugar
en el plano.

Você também pode gostar