Énoncé Devoir 2

publicité
Apprentissage et reconnaissance (GIF-4101 / GIF-7005)
Département de génie électrique et de génie informatique
Automne 2016
Devoir 2
Instructions : – GIF-4101 : Le devoir est réalisé en équipe de deux à trois étudiants.
– GIF-7005 : Le devoir est réalisé individuellement.
– Utilisez Python et scikit-learn autant que possible.
– Remise : rapport et code source déposés dans l’ENA
– Date limite : au plus tard le mercredi 9 novembre, à 9h30
Pondération : Ce devoir compte pour 5% de la note finale.
1. Algorithme Espérance-Maximisation (5pt)
La vraisemblance p(x|p) d’une variable x suivant une loi de Bernoulli multivariée à D dimensions indépendantes, où xi ∼ BD (p), est décrite par l’équation suivante :
p(x|p) =
D
Y
pxi i (1 − pi )(1−xi ) ,
i=1
où x = [x1 x2 · · · xD ]T est un vecteur de variables aléatoires booléennes xi ∈ {0,1}, et p =
[p1 p2 · · · pD ]T est la paramétrisation de la loi de probabilité.
Supposons que l’on veut calculer l’implémentation de l’algorithme Espérance-Maximisation
pour une densité-mélange avec K composantes, chacune suivant (x|Gj ) ∼ BD (pj ), une loi de
Bernoulli à D dimensions indépendantes définie comme suit :
p(x|P) =
K
X
p(x|Gj )P (Gj ),
j=1
avec P = {p1 ,p2 , . . . ,pK }.
(a) Donnez le développement de la fonction Q(Φ|Φl ) utilisée à l’étape M.
(b) Donnez le développement de la fonction de mise à jour des valeurs pj,i de l’étape M.
(c) Donnez le pseudo-code de l’implémentation de l’algorithme EM pour une densité-mélange
de composantes suivant une loi de Bernoulli multivariée. Prenez bien soin de spécifier toutes
les équations nécessaires pour calculer les variables de l’algorithme.
(d) Faite une implémentation de cet algorithme en Python, en offrant l’interface des algorithmes
de scikit-learn. Pour ce faire, implémenter au minimum les fonctions fit, predict et
score. Pour la fonction score, retourner l’espérance de vraisemblance sur le jeu X fourni
en entrée (calculez Q(Φ|Φl ) pour Φ = Φl ). Fournissez le code de votre implémentation lors
du dépôt de votre devoir dans l’ENA.
Remarque : Limitez les valeurs de πi → 0 et pj,i → 0, en les forçant à avoir une valeur
minimale (typiquement = 10−6 ), afin d’éviter les erreurs de calcul numérique.
1
2. Clustering de données de textes (5pt)
Soit le jeu de données CSDMC2010 SPAM corpus 1 , dont nous avons extrait un jeu de données
avec 1000 caractéristiques binaires, indiquant la présence ou non d’un mot particulier. Ce jeu
binarisé est disponible sur le site Web du cours à l’adresse suivante.
http://vision.gel.ulaval.ca/˜cgagne/enseignement/apprentissage/
A2016/donnees/csdmc-spam-binary.zip
L’archive zip comporte trois fichiers :
— data : les données du jeu, chaque ligne représentant une instance et chaque colonne une
caractéristique ;
— target : les étiquettes de classe des données, 0 indiquant que l’instance est un pourriel, 1
indiquant que c’est un message légitime ;
— feature : la liste des 1000 mots d’intérêt, dans le même ordre que les colonnes du fichier
data.
(a) En utilisant l’algorithme K-means, faites le clustering de ces données selon K = 5 clusters.
Analysez les résultats pour chaque cluster en rapportant les cinq mots les plus fréquents dans
chacun de ceux-ci. Faites une analyse brève de ces résultats.
(b) Toujours en utilisant l’algorithme K-means, faites varier le nombre de clusters utilisés entre
K = 2,4, . . . ,50 et comparez les résultats en utilisant les mesures de l’indice de Rand ajusté 2 ,
le score basé sur l’information mutuelle 3 et la mesure V 4 . Pour déterminer l’étiquette prédite,
assignez au cluster l’étiquette (pourriel ou message légitime) la plus fréquente parmi les
données appartenant au cluster. Tracez les résultats dans une figure comparant la valeur des
mesures de performance selon le nombre de clusters. Indiquez quel serait d’après vous le bon
nombre de clusters à utiliser.
(c) Répétez la question 2(b) précédente, avec K = 2,4, . . . ,10, en utilisant cette fois l’implémentation de l’algorithme EM pour une loi de Bernoulli multivariée que vous avez fait pour
la question 1(d). Comparez ces résultats à ceux obtenus avec K-means pour 100 variables et
1000 variables.
Pour évaluer les performances du clustering de EM, il faut assigner à chaque donnée une
probabilité a posteriori de classement P (Ci |xt ) selon :
P
P t
t
t
j P (Ci |Gj ) P (Gj |x )
t
t ri P (Gj |x )
P
P
,
P
(C
|G
)
=
.
P (Ci |x ) = P P
i j
t
t
t
i
j P (Ci |Gj ) P (Gj |x )
i
t ri P (Gj |x )
Le classement se fait en assignant la donnée à la classe dont la probabilité de classement est
la plus élevée :
1 si i = argmaxl P (Cl |xt )
t
yi =
.
0
autrement
Pour ces expérimentations avec EM, utilisez seulement les 100 premières variables du jeu
de données, qui correspondent aux 100 mots les plus fréquents du corpus. Il s’avère que la
gestion des 1000 variables du jeu CSDMC2010 est difficile pour l’algorithme EM avec une
loi de multiples Bernoulli indépendantes. Pouvez-vous expliquer pourquoi ?
1.
2.
3.
4.
Disponible à http://csmining.org/index.php/spam-email-datasets-.html.
Fonction metrics.adjusted rand score dans scikit-learn.
Fonction metrics.adjusted mutual info score.
Fonction metrics.v measure score.
2
(d) Si l’on compare les traitements algorithmiques faits par K-means et l’algorithme EM pour
une loi de Bernoulli multivariée, donnez les principales ressemblances et les principales
différences que l’on peut noter.
3. Sélection de variables (5pt)
Supposons que l’on veut sélectionner les variables d’intérêt pour le jeu de données CSDMC2010
SPAM corpus de la question précédente, comprenant 1000 variables binaires, indiquant la présence
ou non d’un mot particulier. Pour le besoin de la question, faites une partition stratifiée du jeu de
données en deux partitions distinctes, soit une partition d’entraı̂nement et une partition de test,
chacune comprenant 50 % des données, et utilisez-la pour les manipulations demandées dans les
questions suivantes.
(a) Effectuez une sélection univariée en conservant les 10 meilleures variables parmi les 1000,
selon le test 5 du χ2 et le critère d’information mutuelle 6 . Effectuez cette sélection sur la
partition d’entraı̂nement. Rapportez les variables sélectionnées les deux critères de sélection
utilisés. Rapportez également la performance de classement sur la partition de test, en utilisant
un SVM linéaire 7 comme modèle de classement généré sur la partition d’entraı̂nement. Comparez les résultats avec ceux obtenus avec la même configuration, mais utilisant l’ensemble
des 1000 variables.
(b) Répétez les expérimentations de la sous-question précédente avec la sélection séquentielle
arrière implémentée dans la fonction feature selection.RFE de scikit-learn. Faites
les expérimentations en utilisant un SVM linéaire comme modèle de base, en faisant un
réentraı̂nement à chaque itération de l’algorithme (step=1).
(c) Implémentez un algorithme de sélection avant séquentielle qui ajoute les variables une à la
fois, en démarrant d’un ensemble vide de variables, tel que présenté en classe. Portez attention
au fait que la sélection de variables se base sur un nouvel entraı̂nement d’un modèle de classement pour chaque sous-ensemble candidat, contrairement à l’algorithme implémenté dans la
fonction feature selection.RFE, qui se base sur les cœfficients fournis par le modèle
de classement. Votre classe doit au minimum posséder les fonctions fit, get support et
transform. Fournissez le code de votre implémentation lors du dépôt de votre devoir dans
l’ENA.
(d) Appliquez l’algorithme de sélection séquentielle avant implémenté à la sous-question précédente (c) sur le jeu de données CSDMC2010 SPAM corpus selon ce qui a été demandé à la
sous-question (a). Utiliser un SVM linéaire généré sur l’ensemble d’entraı̂nement. Comparez
les résultats avec ceux obtenus avec les approches testées aux sous-questions (a) et (b).
(e) Expliquez pourquoi un algorithme de sélection arrière séquentielle est souvent préféré à un
algorithme de sélection avant séquentielle pour des données comportant des dépendances
non linéaires complexes entre les variables. Expliquez également pourquoi l’algorithme de
sélection séquentielle arrière peut difficilement procéder à un nouvel entraı̂nement pour chaque
sous-ensemble candidat de variables pour des cas où il y a un grand nombre de variables (D
grand) et un nombre relativement faible de variables à sélectionner (K D), comme c’est
le cas pour une sélection de 10 variables parmi 1000.
5. Fonction feature selection.chi2.
6. Fonction feature selection.mutual info classif.
7. Classe svm.LinearSVC.
3
4. Analyse en composantes principales et analyse discriminante linéaire (5pt)
Soit les trois jeux de données suivants.
— Iris de Fisher : jeu de 150 données pour l’identification d’iris, avec données en 4 dimensions
et 3 classes. Le jeu est disponible avec la fonction datasets.load iris de scikit-learn.
— Digits : jeu de 1797 caractères (chiffres) numérisés en images de 8 × 8 pixels en ton de gris
(représentés comme des entiers 0 et 16), donc organisé en 64 dimensions et 10 classes. Le jeu
est disponible avec la fonction datasets.load digits de scikit-learn.
— Olivetti : jeu de 400 images de visages, soit dix images de 40 sujets différents, prises dans
différentes conditions. Chaque image comporte 64 × 64 pixels (4096 dimensions) en ton de
gris (256 tons), convertis en nombres réels dans [0,1]. Le jeu est disponible avec la fonction
datasets.fetch olivetti faces, qui téléchargera les données lors du premier appel
à la fonction.
En un premier temps, appliquez une analyse en composantes principales à chacun de ces jeux de
données.
(a) Pour chaque jeu de données, donnez le nombre de composantes permettant de capturer 60 %
de la variance.
(b) Donnez les dimensions qui influencent le plus la direction du vecteur correspondant à la
variance principale.
(c) Tracez les données en deux dimensions, en utilisant les deux premières composantes principales.
En un deuxième temps, appliquez une analyse discriminante linéaire à ces données.
(d) Tracez les données projetées selon l’analyse discriminante linéaire en deux dimensions, en
utilisant les deux premiers axes de l’hyperplan si les données comportent plus de trois classes
(deux composantes principales de la matrice S−1
W SB ).
(e) Déterminez le taux de classement avec un classifieur à la plus proche moyenne appliqué à la
projection des données obtenues par l’analyse discriminante linéaire. Comparez vos résultats
avec une projection de dimensionnalité identique, obtenue par une analyse en composantes
principales.
11/10/2016 (modifié : 12/10/2016 et 7/11/2016)
CG & AD
4
Téléchargement