Algorithme EM, mélanges gaussiens, clustering et sélection de mod

publicité
École Polytechnique
Année 2
Mathématiques Appliquées
TP6
MAP441 – Modal SNA
Florent Benaych-Georges
Stefano De Marco
Stéphane Gaiffas
Emmanuel Gobet
Christelle Vergé
Algorithme EM, mélanges gaussiens, clustering
et sélection de modèle
1
Introduction
Dans ce TP, nous proposons de mettre en oeuvre la méthode d’optimisation décrite en cours 5 : l’algorithme
EM, appliqué à la maximisation de la vraisemblance dans le modèle de mélange gaussien, puis de s’en servir
pour effectuer un clustering de points dans le plan. On pourra ensuite, si le temps le permet, utiliser la
méthode BIC pour sélectionner automatiquement le nombre de clusters.
Il faudra travailler entre 1h et 1h30 sur ce TP, pas plus, le but étant maintenant de travailler principalement
sur votre projet. Pour vous faire gagner du temps, nous fournissons un code à trou, disponible sur la page
http://www.cmap.polytechnique.fr/~gaiffas/index.php?main=teaching
le but étant de compléter le code scilab pour traiter les questions, sans avoir à gérer les problèmes de
programmation scilab associés.
2
Mélanges gaussiens
La densité d’un mélange gaussien à K clusters, de paramètre θ = (p1 , . . . , pK , µ1 , . . . , µK , Σ1 , . . . , ΣK ) ∈ Θ
s’écrit
K
X
fθ (x) =
pk φµk ,Σk (x),
k=1
où φµk ,Σk est la densité de la loi gaussienne N (µk , Σk ) donnée par
φµk ,Σk (x) =
(2π)d/2
1
p
1
exp − (x − µk )> Σ−1
k (x − µk ) ,
2
det(Σk )
et où l’ensemble de paramètres est
K
n
o
X
Θ = (p1 , . . . , pK ) ∈ (R+ )K :
pk = 1 × RK×d × (S0 )K ,
k=1
avec S0 = {Σ ∈ Rd×d : Σ> = Σ, Σ 0}.
Question 1. Simuler n = 1000 réalisations d’un mélange gaussien de paramètres
• K = 3, decal = 5, σ = 2
• p = (p1 , p2 , p3 ) = (0.3, 0.5, 0.2)
• µ1 = (−decal, decal), µ2 = (decal, decal), µ3 = (0, −decal)
• Σ1 = σ 2 I2 , Σ2 = σ 2 I2 , Σ3 = σ 2 I2 où Id est la matrice identité dans Rd .
Compléter pour cela les trous dans le fichier sim_gauss_mixture_question.sce (qui contient la fonction
de simulation) et lancer le calcul avec le fichier sim_gauss_mixture_main.sce. On pourra jouer sur les
paramètres decal et σ, rajouter des clusters, etc, pour observer l’impact sur les points simulés.
1
3
Algorithme EM
On suppose que l’on observe X = (X1 , . . . , Xn ) où les Xi ∈ Rd sont i.i.d de densité fθ0 , avec θ0 ∈ Θ inconnu.
La fonction de log-vraisemblance de ce modèle est
`(θ; X) =
n
X
log
K
X
i=1
pk φµk ,Σk (Xi ) ,
k=1
et un estimateur au maximum de vraisemblance (MLE) de θ0 vérifie
θ̂ ∈ argmax `(θ; X).
θ∈Θ
On peut obtenir une approximation d’un MLE en utilisant l’algorithme EM, qui consiste dans ce cadre à
itérer, pour t = 0, 1, . . ., les calculs suivants jusqu’à convergence :
(t)
πi,k (θ
(t)
pk φµ(t) ,Σ(t) (Xi )
) = PK
k
k
(t)
k0 =1 pk0 φµ(t) ,Σ(t) (Xi )
k0
(t+1)
pk
(t+1)
µk
(t+1)
Σk
k0
n
1X
=
πi,k (θ(t) )
n i=1
Pn
(t)
i=1 πi,k (θ )Xi
= P
n
(t)
i=1 πi,k (θ )
Pn
(t+1)
(t+1) >
πi,k (θ(t) )(Xi − µk
)(Xi − µk
)
Pn
= i=1
.
(t)
i=1 πi,k (θ )
On note alors θ̂ = (p̂1 , . . . , p̂K , µ̂1 , . . . , µ̂K , Σ̂1 , . . . , Σ̂K ) l’approximation de l’estimateur au maximum de
vraisemblance ainsi obtenue. Une fois qu’un estimateur θ̂ est calculé, on peut affecter les classes en utilisant
la règle du MAP :
i ∈ Ck si πi,k (θ̂) > πi,k0 (θ̂) pour tout k 0 6= k.
Question 2. Ecrire une fonction qui utilise l’algorithme EM pour calculer le MLE dans le modèle de mélange
gaussien. On complétera les trous du fichier fit_gauss_mixture_question.sce contenant la fonction
de calcul de l’estimateur, on utilisera le fichier init_em_unif.sce contenant une fonction qui initialise
aléatoirement l’algorithme EM et le fichier fit_gauss_mixture_main.sce pour lancer le calcul. On
pourra observer l’évolution des affectations des points le long des étapes de l’algorithme (utilisant la
règle du MAP) et le fait qu’il augmente effectivement la vraisemblance à chaque étape.
4
Sélection de modèle
On peut choisir automatiquement le nombre de clusters K en utilisant le critère BIC :
K̂ = argmin
n
− `(θ̂K ; X) +
K≥1
df(K) log n o
2
où
• θ̂K est l’estimateur MLE dans le modèle de mélange avec K clusters
• df(K) est le nombre de degrés de libertés (degrees of freedom) du modèle de mélange utilisé avec K
clusters.
Question 3. Appliquer le critère BIC pour sélectionner automatiquement le nombre de clusters. On balaiera
des valeurs de K allant de 2 à 10, et on observera le fait que le critère est bien minimal pour K = 3. On
pourra considérer d’autres modèles simulés, avec plus de clusters, une forme plus complexe des matrices
de covariance, etc. On complétera le fichier model_selection_question.sce pour répondre à cette
question. On enlèvera tous les affichages effectués dans la fonction fit_gauss_mixture pour gagner du
temps.
2
Téléchargement