TP1 : Initiation Matlab et Théorie Bayesienne
I. But du TP
Le but de ce TP est de vous familiariser avec l'environnement de calcul numérique
Matlab en travaillant sur un problème de reconnaissance de formes d'origine
biomédicale.
II. Présentation des données
Les données sur lesquelles vous allez travailler sont des données biomédicales d'aide au
diagnostic du diabète. Les données ont été obtenues à partir d'un échantillon de 709
femmes amérindiennes Pimas. Les Pimas sont connus pour avoir le plus important taux
de diabétiques et d'obésité au monde, ils sont à ce titre un sujet d'étude pour les
scientifiques.
Le but est de prédire si un sujet est diabétique à partir d'un certain nombre de variables
mesurées pour chaque sujet :
1. Nombre de grossesse.
2. Concentration en glucose du plasma 2 heures après un test de tolérance au glucose
oral.
3. Pression sanguine diastolique (mm Hg)
4. Epaisseur de la peau sur le triceps (mm)
5. 2-heures d'insuline en sérum ( µU/ml)
Publicité
6. Indice de masse corporelle (poids en kg/(taille en m)2)
7. Fonction de pedigree du diabète
8. Age (années)
Bien que dans la pratique, l'utilisation de toutes les variables permet d'obtenir de
meilleurs taux de reconnaissance, dans ce TP, nous nous concentrerons sur deux
variables : la concentration en glucose (2) et l'indice de masse corporelle (6). Ceci nous
permettra de visualiser à la fois les données et les fonctions de classification.
Les données sont originaires du site web de l'université de Californie1
Le fichier « pima.mat » contient trois variables :
xall : matrice de taille 709×8 contenant les données biomédicales.
y : vecteur de taille 709 contenant la classe de chaque sujet
(-1 : non diabétique, +1 : diabétique).
n : variable égale à 709, le nombre d'exemples d'apprentissage.
Notez que nous avons au préalable retiré un certain nombre de sujets ayant des données
manquantes.
1. http://archive.ics.uci.edu/ml/datasets/Pima+Indians+Diabetes
III. Analyse exploratoire des données
1. Chargement des données
- Charger ce fichier sous matlab en utilisant la fonction load.
- Extraire les variables (2) et (6). Stocker le résultat dans une matrice
Publicité
d'apprentissage xtemp.
2. Visualisation du problème
- Visualiser des histogrammes de chaque classe pour chaque variable (fonction
hist).
- Visualiser les exemples de chaque classe en 2D en leur mettant des couleurs
différentes (fonction plot).
3. Classifieur Bayesien : cas où
Premièrement, vous allez implémenter le classifieur Bayesien correspondant au cas où
les caractéristiques sont statistiquement indépendants et de même variance pour toutes
les classes.
- Estimer les probabilités empiriques P(wi) d'appartenir à chaque classe.
- Extraire les variables (2) et (6) et les normaliser (centrer et réduire) en conservant
leur moyenne et leur écart-type. Stocker le résultat dans la matrice d'apprentissage x.
La variance σ est connue et égale à un car les données ont été normalisée.
- Calculer les moyennes µi de chaque classe.
- Préparer une grille qui permettra de visualiser les fonctions de décision (fonction
meshgrid). Cette grille doit être mise sous la forme d'exemples de test en utilisant la
fonction reshape.
- Calculer les valeurs des fonctions gi(x) pour chaque exemple de test.
- Calculer la valeur de la fonction de prédiction f(x) = g1(x) – g-1(x) pour les exemples
de test.
- Réorganiser les valeurs prédites sur les exemples de test sous forme de grille
Publicité
(fonction reshape).
- Visualiser la fonction de prédiction en utilisant la fonction contour.
4. Classifieur Bayesien : cas où
Finalement, vous aller coder le classifieur Bayesien correspondant au cas général. Ce
dernier peut être utilisé quelque soit votre a priori sur la matrice de covariance.
- Estimer les probabilités empiriques P(ωi) d'appartenir à chaque classe.
- Calculer les moyennes µi de chaque classe.
- Estimer les covariances Σi de chaque classe avec la fonction cov. La matrice de
covariance Σ est estimée empiriquement sur une matrice X par la formule :
jiIi2
où Σi,j est le terme générale de Σ contenant la covariance entre les variables i et j, et
la valeur moyenne de la variable i (0 dans notre cas car les données sont normalisées).
- Calculer les valeurs des fonctions gi(x) pour chaque classe et chaque exemple de test.
- Calculer la valeur de la fonction de prédiction f(x) = g1(x) – g-1(x) pour les exemples
de test.
- Réorganiser les valeurs prédites sur les exemples de test sous forme de grille
(fonction reshape).
- Visualiser la fonction de prédiction en utilisant la fonction contour. Quelle est la
différence avec la fonction de décision précédente ?