Algorithme EM

publicité
Algorithme EM
Y vecteur des variables observées
loi f (y; θ), f connue, θ à estimer
J.-C. Massé
Université Laval
Algorithme EM
Y vecteur des variables observées
loi f (y; θ), f connue, θ à estimer
Log-vraisemblance relative à Y = y
l(θ) = log f (y; θ)
en situation où le calcul ou la maximisation est difficile
J.-C. Massé
Université Laval
Algorithme EM
Y vecteur des variables observées
loi f (y; θ), f connue, θ à estimer
Log-vraisemblance relative à Y = y
l(θ) = log f (y; θ)
en situation où le calcul ou la maximisation est difficile
U vecteur de variables partiellement ou non observées
de loi paramétrisée par le même θ
J.-C. Massé
Université Laval
Algorithme EM
Y vecteur des variables observées
loi f (y; θ), f connue, θ à estimer
Log-vraisemblance relative à Y = y
l(θ) = log f (y; θ)
en situation où le calcul ou la maximisation est difficile
U vecteur de variables partiellement ou non observées
de loi paramétrisée par le même θ
X ∼ (Y, U ) (même paramétrisation que Y )
Vecteur des données augmentées
J.-C. Massé
Université Laval
Algorithme EM
Y vecteur des variables observées
loi f (y; θ), f connue, θ à estimer
Log-vraisemblance relative à Y = y
l(θ) = log f (y; θ)
en situation où le calcul ou la maximisation est difficile
U vecteur de variables partiellement ou non observées
de loi paramétrisée par le même θ
X ∼ (Y, U ) (même paramétrisation que Y )
Vecteur des données augmentées
Identité à la base: log-vraisemblance relative à (y, u)
log f (y, u; θ) = l(θ) + log f (u|y; θ)
obtenue de l’équation f (y, u; θ) = f (y; θ)f (u|y; θ).
J.-C. Massé
Université Laval
Algorithme EM (suite)
L’algorithme repose beaucoup sur la fonction
log f (y, u; θ).
J.-C. Massé
Université Laval
Algorithme EM (suite)
L’algorithme repose beaucoup sur la fonction
log f (y, u; θ).
Loi conditionnelle f (u|y; θ): loi du vecteur non observé
étant donné la valeur observée Y = y . Loi connue
lorsque U est bien choisi.
J.-C. Massé
Université Laval
Algorithme EM (suite)
L’algorithme repose beaucoup sur la fonction
log f (y, u; θ).
Loi conditionnelle f (u|y; θ): loi du vecteur non observé
étant donné la valeur observée Y = y . Loi connue
lorsque U est bien choisi.
Algorithme EM : méthode itérative. Chaque itération
comporte 2 phases: espérance (E ) et maximisation (M )
J.-C. Massé
Université Laval
Algorithme EM (suite)
L’algorithme repose beaucoup sur la fonction
log f (y, u; θ).
Loi conditionnelle f (u|y; θ): loi du vecteur non observé
étant donné la valeur observée Y = y . Loi connue
lorsque U est bien choisi.
Algorithme EM : méthode itérative. Chaque itération
comporte 2 phases: espérance (E ) et maximisation (M )
θ0 : estimation initiale, θm : estimation à l’étape m
J.-C. Massé
Université Laval
Algorithme EM (suite)
L’algorithme repose beaucoup sur la fonction
log f (y, u; θ).
Loi conditionnelle f (u|y; θ): loi du vecteur non observé
étant donné la valeur observée Y = y . Loi connue
lorsque U est bien choisi.
Algorithme EM : méthode itérative. Chaque itération
comporte 2 phases: espérance (E ) et maximisation (M )
θ0 : estimation initiale, θm : estimation à l’étape m
Phase E
E[log f (Y, U ; θ)|Y = y; θm ] = l(θ)+E[log f (U |Y ; θ)|Y = y; θm ]
J.-C. Massé
Université Laval
Algorithme EM (suite)
L’algorithme repose beaucoup sur la fonction
log f (y, u; θ).
Loi conditionnelle f (u|y; θ): loi du vecteur non observé
étant donné la valeur observée Y = y . Loi connue
lorsque U est bien choisi.
Algorithme EM : méthode itérative. Chaque itération
comporte 2 phases: espérance (E ) et maximisation (M )
θ0 : estimation initiale, θm : estimation à l’étape m
Phase E
E[log f (Y, U ; θ)|Y = y; θm ] = l(θ)+E[log f (U |Y ; θ)|Y = y; θm ]
⇐⇒ Q(θ; θm ) = l(θ) + C(θ; θm )
J.-C. Massé
Université Laval
Algorithme EM (suite)
Comme log f (y, u; θ) n’est pas complètement connue,
on s’intéresse plutôt à sa valeur moyenne Q(θ; θm ). En
principe, cette fonction est calculable si la loi
conditionnelle f (u|y; θ) est connue.
J.-C. Massé
Université Laval
Algorithme EM (suite)
Comme log f (y, u; θ) n’est pas complètement connue,
on s’intéresse plutôt à sa valeur moyenne Q(θ; θm ). En
principe, cette fonction est calculable si la loi
conditionnelle f (u|y; θ) est connue.
Phase M
θm+1 = argmaxθ Q(θ; θm )
J.-C. Massé
Université Laval
Algorithme EM (suite)
Comme log f (y, u; θ) n’est pas complètement connue,
on s’intéresse plutôt à sa valeur moyenne Q(θ; θm ). En
principe, cette fonction est calculable si la loi
conditionnelle f (u|y; θ) est connue.
Phase M
θm+1 = argmaxθ Q(θ; θm )
L’inégalité de Jensen implique que
l(θm+1 ) = log f (y; θm+1 ) > l(θm ) = log f (y; θm )
J.-C. Massé
Université Laval
Algorithme EM (suite)
Comme log f (y, u; θ) n’est pas complètement connue,
on s’intéresse plutôt à sa valeur moyenne Q(θ; θm ). En
principe, cette fonction est calculable si la loi
conditionnelle f (u|y; θ) est connue.
Phase M
θm+1 = argmaxθ Q(θ; θm )
L’inégalité de Jensen implique que
l(θm+1 ) = log f (y; θm+1 ) > l(θm ) = log f (y; θm )
On met fin à l’itération lorsque
|Q(θm+1 ; θm ) − Q(θm ; θm )|, ou |θm+1 − θm |, ou
l(θm+1 ) − l(θm ) sont suffisamment petits.
J.-C. Massé
Université Laval
Exemple 1
4 groupes sanguins (phénotypes): A, B, AB, O.
J.-C. Massé
Université Laval
Exemple 1
4 groupes sanguins (phénotypes): A, B, AB, O.
Ne pas confondre avec les 3 allèles A, B, O agissant
par paires, où A, B sont dominants et O récessif.
Exemple: groupe A ⇐⇒ A|A ou A|O (2 génotypes).
J.-C. Massé
Université Laval
Exemple 1
4 groupes sanguins (phénotypes): A, B, AB, O.
Ne pas confondre avec les 3 allèles A, B, O agissant
par paires, où A, B sont dominants et O récessif.
Exemple: groupe A ⇐⇒ A|A ou A|O (2 génotypes).
Problème: estimer la proportion de chaque allèle dans
la population: p = (pA , pB , pO ) sous la contrainte
pA + pB + pO = 1.
J.-C. Massé
Université Laval
Exemple 1
4 groupes sanguins (phénotypes): A, B, AB, O.
Ne pas confondre avec les 3 allèles A, B, O agissant
par paires, où A, B sont dominants et O récessif.
Exemple: groupe A ⇐⇒ A|A ou A|O (2 génotypes).
Problème: estimer la proportion de chaque allèle dans
la population: p = (pA , pB , pO ) sous la contrainte
pA + pB + pO = 1.
Observations: fréquences des groupes sanguins
Y = (nA , nB , nAB , nO ) multinomiale
J.-C. Massé
Université Laval
Exemple 1
4 groupes sanguins (phénotypes): A, B, AB, O.
Ne pas confondre avec les 3 allèles A, B, O agissant
par paires, où A, B sont dominants et O récessif.
Exemple: groupe A ⇐⇒ A|A ou A|O (2 génotypes).
Problème: estimer la proportion de chaque allèle dans
la population: p = (pA , pB , pO ) sous la contrainte
pA + pB + pO = 1.
Observations: fréquences des groupes sanguins
Y = (nA , nB , nAB , nO ) multinomiale
Données augmentées: fréquences des 6 génotypes
X = (nA/A , nA/O , nB/B , nB/O , nAB , nO ) multinomiale
J.-C. Massé
Université Laval
Exemple 1
4 groupes sanguins (phénotypes): A, B, AB, O.
Ne pas confondre avec les 3 allèles A, B, O agissant
par paires, où A, B sont dominants et O récessif.
Exemple: groupe A ⇐⇒ A|A ou A|O (2 génotypes).
Problème: estimer la proportion de chaque allèle dans
la population: p = (pA , pB , pO ) sous la contrainte
pA + pB + pO = 1.
Observations: fréquences des groupes sanguins
Y = (nA , nB , nAB , nO ) multinomiale
Données augmentées: fréquences des 6 génotypes
X = (nA/A , nA/O , nB/B , nB/O , nAB , nO ) multinomiale
X ∼ (Y, U ), où U = (nA/A , nB/B ) n’est pas observé.
J.-C. Massé
Université Laval
Exemple 1
4 groupes sanguins (phénotypes): A, B, AB, O.
Ne pas confondre avec les 3 allèles A, B, O agissant
par paires, où A, B sont dominants et O récessif.
Exemple: groupe A ⇐⇒ A|A ou A|O (2 génotypes).
Problème: estimer la proportion de chaque allèle dans
la population: p = (pA , pB , pO ) sous la contrainte
pA + pB + pO = 1.
Observations: fréquences des groupes sanguins
Y = (nA , nB , nAB , nO ) multinomiale
Données augmentées: fréquences des 6 génotypes
X = (nA/A , nA/O , nB/B , nB/O , nAB , nO ) multinomiale
X ∼ (Y, U ), où U = (nA/A , nB/B ) n’est pas observé.
Les vraisemblances sont fonctions de p = (pA , pB , pO ).
J.-C. Massé
Université Laval
Code R pour l’exemple 1
Fréquences observées sur 521 individus
> n = 521; nA = 186; nB = 38
> nAB = 13; nO = 284
J.-C. Massé
Université Laval
Code R pour l’exemple 1
Fréquences observées sur 521 individus
> n = 521; nA = 186; nB = 38
> nAB = 13; nO = 284
Initialisation
> it = 0 #numéro d’itération
> p = matrix(rep(0,300), ncol=3)
#matrice 100 × 3 dont toutes les entrées sont 0.
> p[1,] = c(.3,.2,.5) #p0 = (p0A , p0B , p0O ) (estimation
initiale du paramètre p et première ligne de p)
#les lignes de p deviendront les θm et on limitera à 100
le nombre d’itérations
> diff = 1 # valeur initiale du paramètre mesurant le
changement de valeur de θm d’une itération à l’autre
J.-C. Massé
Université Laval
Code R de l’exemple 1 (suite)
Boucle while : nombre de répétitions inconnu
J.-C. Massé
Université Laval
Code R de l’exemple 1 (suite)
Boucle while : nombre de répétitions inconnu
> while(diff > 1e-6&&(it = it+1)<100){
nAA = nA*p[it,1]ˆ2/(p[it,1]ˆ2+2*p[it,1]*p[it,3])
nAO = nA*2*p[it,1]*p[it,3]/(p[it,1]ˆ2+2*p[it,1]*p[it,3])
nBB = nB*p[it,2]ˆ2/(p[it,2]ˆ2+2*p[it,2]*p[it,3])
nBO = nB*2*p[it,2]*p[it,3]/(p[it,2]ˆ2+2*p[it,2]*p[it,3])
p[it+1, ] = c((2*nAA+nAO+nAB)/(2*n),
(2*nBB+nBO+nAB)/(2*n),(nAO+nBO+2*nO)/(2*n))
diff = max(abs(p[it+1,]-p[it,])) #mesure du changement
cat(it-1,diff,p[it,],’\n’)}
#La dernière ligne demande d’afficher les résultats
#après chaque exécution des instructions, soit le
#numéro m d’itération, une mesure numérique de la
différence vectorielle pm+1 − pm et pm .
J.-C. Massé
Université Laval
Résultats
Première colonne: numéro d’itération
Deuxième colonne: max3i=1 |pm+1,i − pm,i |
Colonnes 3, 4 et 5: pm = (pmA , pmB , pmO )
0 0.2128057 0.3 0.2 0.5
1 0.02091656 0.2321719 0.05502239 0.7128057
2 0.002244480 0.2159781 0.05029955 0.7337223
3 0.0002615762 0.2138803 0.05015293 0.7359668
4 3.113671e-05 0.2136257 0.05014597 0.7362284
5 3.723316e-06 0.2135951 0.0501454 0.7362595
6 4.456550e-07 0.2135914 0.05014534 0.7362632
J.-C. Massé
Université Laval
Résultats
Première colonne: numéro d’itération
Deuxième colonne: max3i=1 |pm+1,i − pm,i |
Colonnes 3, 4 et 5: pm = (pmA , pmB , pmO )
0 0.2128057 0.3 0.2 0.5
1 0.02091656 0.2321719 0.05502239 0.7128057
2 0.002244480 0.2159781 0.05029955 0.7337223
3 0.0002615762 0.2138803 0.05015293 0.7359668
4 3.113671e-05 0.2136257 0.05014597 0.7362284
5 3.723316e-06 0.2135951 0.0501454 0.7362595
6 4.456550e-07 0.2135914 0.05014534 0.7362632
J.-C. Massé
pbM V obtenu à l’itération numéro 6
pbA = 0.2136
pbB = 0.0501
pbO = 0.7363
Université Laval
Exemple 2
Jeu de données geyser
> library(MASS); attach(geyser)
> y = waiting #n = 299 temps d’attente
0.00
0.01
0.02
0.03
0.04
Histogramme
40
50
60
70
80
90
100
110
Temps d'attente
J.-C. Massé
Université Laval
Exemple 2
L’estimation de densité montre deux modes. Il est
naturel de vouloir modéliser par une loi mélange.
J.-C. Massé
Université Laval
Exemple 2
L’estimation de densité montre deux modes. Il est
naturel de vouloir modéliser par une loi mélange.
Mélange de deux lois N (µ1 , σ12 ) et N (µ2 , σ22 )
x − µ1
1
x − µ2
1
+ (1 − p) φ
f (x; θ) = p φ
σ1
σ1
σ2
σ2
1
φ(x) = √ exp(−x2 /2)
2π
θ = (p, 1 − p, µ1 , σ1 , µ2 , σ2 )
(6 paramètres)
0 < p < 1, −∞ < µ1 , µ2 < ∞, σ1 > 0, σ2 > 0
J.-C. Massé
Université Laval
Exemple 2
L’estimation de densité montre deux modes. Il est
naturel de vouloir modéliser par une loi mélange.
Mélange de deux lois N (µ1 , σ12 ) et N (µ2 , σ22 )
x − µ1
1
x − µ2
1
+ (1 − p) φ
f (x; θ) = p φ
σ1
σ1
σ2
σ2
1
φ(x) = √ exp(−x2 /2)
2π
θ = (p, 1 − p, µ1 , σ1 , µ2 , σ2 )
(6 paramètres)
0 < p < 1, −∞ < µ1 , µ2 < ∞, σ1 > 0, σ2 > 0
Les données sont les 299 temps d’attente. La
vraisemblance d’une loi mélange est difficile à
maximiser.
J.-C. Massé
Université Laval
Estimation par l’algorithme EM
Initialisation
> it = 0
> diff = 1
> theta = matrix(rep(0,600),ncol=6) #initialisation de la
matrice servant à représenter les 6 composantes de θm
J.-C. Massé
Université Laval
Estimation par l’algorithme EM
Initialisation
> it = 0
> diff = 1
> theta = matrix(rep(0,600),ncol=6) #initialisation de la
matrice servant à représenter les 6 composantes de θm
Valeur initiale de θ = (p, 1 − p, µ1 , σ1 , µ2 , σ2 )
> theta[1,] = c(.3612,.6388,50,5,80,5) #estimation
initiale de θ et première ligne de la matrice de
représentation
.3612 = mean(waiting < 70) #proportion des
#observations < 70
Autres paramètres estimés à l’œil à partir de
l’histogramme.
J.-C. Massé
Université Laval
Estimation par l’algorithme EM
Initialisation
> it = 0
> diff = 1
> theta = matrix(rep(0,600),ncol=6) #initialisation de la
matrice servant à représenter les 6 composantes de θm
Valeur initiale de θ = (p, 1 − p, µ1 , σ1 , µ2 , σ2 )
> theta[1,] = c(.3612,.6388,50,5,80,5) #estimation
initiale de θ et première ligne de la matrice de
représentation
.3612 = mean(waiting < 70) #proportion des
#observations < 70
Autres paramètres estimés à l’œil à partir de
l’histogramme.
On prend X = (Y, U1 , U2 ), où les Ui sont Bernoulli t.q.
P (U1 = 1) = p = 1 − P (U2 = 1). Voir notes de cours.
J.-C. Massé
Université Laval
Algorithme EM
θm obtenus dans les notes de cours
J.-C. Massé
Université Laval
Algorithme EM
θm obtenus dans les notes de cours
J.-C. Massé
Boucle while
> options(digits=4) #4 décimales
> while(diff >1e-6&&(it = it+1)<100){
w = matrix(rep(0,length(y)*6),ncol=6)
for (i in 1:2) w[,i] = (theta[it,i]*dnorm(y,theta[it,2*i
+1],theta[it,2*i+2]))/(theta[it,1]*dnorm(y,theta[it,3],theta[it,4])
+theta[it,2]*dnorm(y,theta[it,5],theta[it,6]))
for (i in 1:2) theta[it+1,i] = sum(w[,i])/length(y) #pm+1,i
for (i in c(3,5)) theta[it+1,i] =
sum(w[,(i-1)/2]*y)/sum(w[,(i-1)/2]) #µm+1,i
for (i in c(4,6)) theta[it+1,i] = #σm+1,i
sqrt(sum(w[,i/2-1]*(y-theta[it+1,i-1])ˆ2)/sum(w[,i/2-1]) )
diff = max(abs(theta[it+1,]-theta[it,]))
cat(it-1,diff,theta[it,],’\n’)}
Université Laval
Résultats
Convergence après 41 itérations
0 4.332 0.3612 0.6388 50 5 80 5
1 0.1374 0.3147 0.6853 54.33 4.963 80.57 7.253
2 0.03927 0.3122 0.6878 54.33 5.041 80.48 7.39
3 0.02368 0.311 0.689 54.3 5.031 80.44 7.43
4 0.01857 0.3102 0.6898 54.28 5.014 80.42 7.45
5 0.01419 0.3095 0.6905 54.26 4.999 80.4 7.464
6 0.0108 0.3091 0.6909 54.25 4.988 80.4 7.474
7 0.008218 0.3087 0.6913 54.24 4.979 80.39 7.482
...
39 1.442e-06 0.3076 0.6924 54.2 4.952 80.36 7.508
40 1.101e-06 0.3076 0.6924 54.2 4.952 80.36 7.508
41 8.403e-07 0.3076 0.6924 54.2 4.952 80.36 7.508
J.-C. Massé
Université Laval
Résultats
Convergence après 41 itérations
0 4.332 0.3612 0.6388 50 5 80 5
1 0.1374 0.3147 0.6853 54.33 4.963 80.57 7.253
2 0.03927 0.3122 0.6878 54.33 5.041 80.48 7.39
3 0.02368 0.311 0.689 54.3 5.031 80.44 7.43
4 0.01857 0.3102 0.6898 54.28 5.014 80.42 7.45
5 0.01419 0.3095 0.6905 54.26 4.999 80.4 7.464
6 0.0108 0.3091 0.6909 54.25 4.988 80.4 7.474
7 0.008218 0.3087 0.6913 54.24 4.979 80.39 7.482
...
39 1.442e-06 0.3076 0.6924 54.2 4.952 80.36 7.508
40 1.101e-06 0.3076 0.6924 54.2 4.952 80.36 7.508
41 8.403e-07 0.3076 0.6924 54.2 4.952 80.36 7.508
J.-C. Massé
pb = 0.3076, µ
b1 = 54.2, σ
b1 = 4.952, µ
b2 = 80.36, σ
b2 = 7.508
Université Laval
Vérification de l’ajustement
Définition de la fonction de densité mélange
> mel = function(x,p,mu1,mu2,sigma1,sigma2){
p*dnorm((x-mu1)/sigma1)/sigma1+(1-p)*dnorm((xmu2)/sigma2)/sigma2}
J.-C. Massé
Université Laval
Vérification de l’ajustement
Définition de la fonction de densité mélange
> mel = function(x,p,mu1,mu2,sigma1,sigma2){
p*dnorm((x-mu1)/sigma1)/sigma1+(1-p)*dnorm((xmu2)/sigma2)/sigma2}
Histogramme du temps d’attente
> hist(waiting,col=’orange’,xlim=c(40,110),
ylim=c(0,.04),probability=T,xlab="Temps
d’attente",ylab="",main="Ajustement d’un mélange")
J.-C. Massé
Université Laval
Vérification de l’ajustement
Définition de la fonction de densité mélange
> mel = function(x,p,mu1,mu2,sigma1,sigma2){
p*dnorm((x-mu1)/sigma1)/sigma1+(1-p)*dnorm((xmu2)/sigma2)/sigma2}
Histogramme du temps d’attente
> hist(waiting,col=’orange’,xlim=c(40,110),
ylim=c(0,.04),probability=T,xlab="Temps
d’attente",ylab="",main="Ajustement d’un mélange")
Superposition des graphiques
> x = seq(35,110,by=.1)#grille de points sur l’abscisse
> par(new=T) #superposition
> plot(x,mel(x,0.3076,54.2, 80.36 , 4.952, 7.508),
xlim=c(40,110),ylim=c(0,.04),type=’l’,xlab="",ylab="",
main="")
J.-C. Massé
Université Laval
Vérification de l’ajustement
0.00
0.01
0.02
0.03
0.04
Ajustement d'un mélange
40
50
60
70
80
90
100
110
Temps d'attente
J.-C. Massé
Université Laval
Autre approche à l’estimation du mélange
Méthode de Nelder-Mead
> mel.obj = function(th,x){ e = th[1]*dnorm((xth[2])/th[3])/th[3]+(1-th[1])*dnorm((x-th[4])/th[5])/th[5]
-sum(log(e)) }
#fonction à minimiser −l(θ)
> th0 = c(0.3612, 50, 5, 80, 5)#valeur initiale du
paramètre th
> optim(th0,mel.obj,x=waiting)$par
[1] 0.3073 54.1964 4.9483 80.3602 7.5110
J.-C. Massé
Université Laval
Autre approche à l’estimation du mélange
Méthode de Nelder-Mead
> mel.obj = function(th,x){ e = th[1]*dnorm((xth[2])/th[3])/th[3]+(1-th[1])*dnorm((x-th[4])/th[5])/th[5]
-sum(log(e)) }
#fonction à minimiser −l(θ)
> th0 = c(0.3612, 50, 5, 80, 5)#valeur initiale du
paramètre th
> optim(th0,mel.obj,x=waiting)$par
[1] 0.3073 54.1964 4.9483 80.3602 7.5110
Méthode BFGS
> optim(th0,mel.obj,x=waiting,
method="BFGS",control=list(parscale=c(0.1,rep(1,4))))$par
[1] 0.3077 54.2047 4.9546 80.3630 7.5057
J.-C. Massé
Université Laval
Téléchargement