M1 : Probabilité Statistique et Théorie de l'Information

By Alexandre Allauzen

Site du cours de M1 Probabilité Statistique et Théorie de l'Information en construction.

Les ressources liées au cours sont accessibles sur ce drive.

Planning des soutenances du 15/04

Il est prévu 20 minutes par groupe et quelques pauses en fin de chaque session. Les 3 séssions prévues sont:

13h30

  • Monteiro Simon, Nicolas Mamet
  • Timothée Babinet
  • Alban Petit

14h45

  • Adrien Chesnau, Rémi Bardes, Antonin Gallot
  • Pistol et Ouadane
  • Raphael Guérin, A. Minello, Aurélien Terrain.

16h00

  • Nicolas et Atouch Ilyes
  • Xu et Thibaud
  • Julien Guyot, Medhi Chakhoukh, Yves Sabourin

17h15

  • Léo Andrès

Séance 1

Le 14/01/19:

  • Cours: introduction et notions de bases
  • TP : Intro à python

Les TP utiliseront pour la plupart des notebooks. Un notebook a l'extension .ipynb est il se manipule via l'outil jupyter-notebook:

  • lancer un server jupyter-notebook
  • utiliser le navigateur internet pour se connecter à ce server

Séance 2

Le 21/01/19:

  • Cours : introduction au probabilité
  • TD/TP : Exercices sur les probabilités et intro à numpy

Séance 3

Le 23/01/19

  • Cours : fin des probabilités (variable continue)
  • TD/TP : Exercices sur les probabilités et fin du TP sur MNIST et les corrélations

Séance 4

Le 04/02/19, TP noté : Recherche Bayesienne. Le notebook associé est sur le drive.

Travail à rendre: le notebook avec vos contributions à m'envoyer par mail avant le cours suivant du 11/02.

Séance 5

Le 11/02/19

  • Cours: Classication Bayesienne, Bayesien Naif
  • TP: Bayésien Naif Gaussien (+ Bernoulli) sur les images MNIST

Séance 6

Le 18/02/19

  • Cours: modéle de mélange de gaussienne, alogorithme EM
  • TP : Implémentation d'EM pour des GMM sur l'exemple du cours

Séance 7

Le 11/03/19

  • Cours: Théorie de l'information, incertitude, et entropie
  • TP: Le codage d'Huffman

Séance 8

Le 18/03/19

  • Cours: Théorie de l'information, entropie conditionnelle, information mutuelle
  • TP: Arbre de décision (avec sklearn)

Séance 9

Le 01/04/19

  • TP : Projet, préparation, soutien, questions …

Séance 10: Soutenance

Le 15/04/19

Projet et soutenance

Consignes

Ce travail est à faire en binôme ou trinôme. Ce projet fera objet d'une soutenance qui aura lieu lors de la dernière séance de cours, le 15/04. Vous devez, avant le 14/04 rendre un notebook avec vos contributions (ou si vous préférez un rapport au format pdf et un fichier source pour le code). La rédaction du notebook, ou du rapport, compte pour une part importante. Elle doit mettre en évidence votre reflexion et votre démarche expérimentale. De plus le code doit être aussi soigné.

Lors de la soutenance, vous devrez présenter rapidement ce que vous avez fait et les résultats importants, en 10 minutes maximum. Il faudra donc sélectionner les points présentés. Par exemple, les réponses aux questions "de cours", doivent être mise dans le rapport ou le notebook, mais pas nécessairement dans la présentation. La soutenance sera complétée par 10 minutes de questions portant sur les exercices et donc le cours (partie théorique et pratique).

Vous pouvez utiliser votre propre implémentation et/ou utiliser des librairies existantes. Dans ce cas, il suffit de le mentionner.

Le total des points excède 20 points. Les points qui dépasseraient le maximum seront reportés sur les autres notes concernant les travaux rendus.

Exercices

Hypothèse Gaussienne sur MNIST (7 pts)

Lors d'un TP précédent, nous avons implémenté un classifieur Bayésien Naif sur les données MNIST. Deux hypothèses ont alors été faites:

  • Conditionnellement à la classe, chaque pixel est indépendant des autres.
  • Conditionnellement à la classe, chaque pixel a une densité de probabilité gaussienne.

Considérons la seconde hypothèse ci-dessus et regardons si cette hypothèse est juste. L'idée est de chercher les pixels qui ne seraient pas "Gaussiens".

  • Pour la classe 4, sélectionner quelques pixels à grande variance et tracer leur histogramme. Commenter les résultats.
  • Faire de même pour les classes 0,1,2 et 3. Commenter les résultats.

Pour améliorer le classifieur, nous allons utiliser une méthode d'estimation de densité de probabilité plus fine pour chaque pixel: au lieu de la considérer comme gaussienne, nous allons donc considérer un mélange de \(K\) gaussiennes. Pour cela, une suggestion est de commencer par une par une classe (par exemple la classe 5):

  • Pour une classe, on sélectionne \(N\) pixels à forte variance (par exemple \(N=10\)).
  • Ecrire la foncion qui implémente l'algorithme E.M (en partant du TP5 par exemple), afin d'estimer le mélange de \(K\) gaussiennes sur cette sélection de pixels.
  • Puis faire cela pour toutes les classes, et intégrer les mélanges de gaussiennes au classifieur Bayésien.
  • Evaluer le nouveau classifieur, en faisant varier d'abord $K=2,4,6,…$ puis $N=10,20,50,100,…$.

Bayésien Naif de Bernoulli (8 pts)

Dans le TP sur le Bayésien Naif, il y a un exercice sur l'implémentation et l'expérimentation d'un classifieur Bayésien Naif, version Bernoulli, pour les images binarisées. Vous deviez le faire, c'est l'occasion.

  • Un problème est que certains pixels sont constants, en général, ou pour une classe donnée. Propoer un implémenter une solution.
  • Comparer les performances de votre classifieur avec le Bayésien Naif Gaussien du TP4.
  • Pour cela utiliser les données train pour l'apprentissage et le test pour l'évaluation.

Clustering: Mélange de Bernoulli (8 pts)

Repartons sur les données MNIST qu'il est donc possible de binariser. Dans ce cas chaque pixel peut être considéré comme la réalisation d'une variable aléatoire binaire. Nous allons faire du clustering sur ces données (train) en ignorant dans la phase d'estimation les informations sur les étiquettes. Pour faire du clustering, nous allons utiliser un modèle de mélange de loi de Bernoulli.

L'hypothèse que chaque pixel est indépendant des autres est maintenu. Une image est supposée être engendrée par un mélange de \(K\) distribution de Bernoulli. \[ P(\mathbf{X} = \mathbf{x}) = \sum_{k=1}^K \pi_k P(\mathbf{X} = \mathbf{x} ;\mu_k), \] avec \((\pi_k,\mu_k)\) les paramètres du mélange.

Si on s'interesse à une des composantes \(k\) du mélange, la probabilité d'une image est : \[ P(\mathbf{X} = \mathbf{x} ;\mu_k) = \prod_{i=1}^d \mu_{ki}^{x_i} (1-\mu_{ki})^{1-x_i} \]

Chaque composante du mélange est donc une loi de Bernoulli sur les images et représente un "cluster". L'objectif est d'implémenter l'algorithme E.M pour ce modèle de mélange afin de de faire du clustering sur la base d'image MNIST et d'en regarder les résultat.

  • Implémenter les deux fonctions (pour l'étape E et l'étape M), avec \(K\) comme paramètre. Pour cela il est important d'écrire les équations avant. Il faut donc reprendre le cours sur les mélanges de gaussiennes et ré-écrire les équations qui définissent ces 2 étapes.
  • Lancer l'algorithme de clustering sur les images et visualiser le résultats pour les valeurs de \(K=5,10,15,20,25\). Pour cela il est possible de représenter l'image qui représente chaque cluster, en considérant le vecteur \(\mu_k\) comme une image.
  • Pour les différentes valeurs de \(K\) , comparer les valeurs de la vraisemblance.