Nous tenons à remercier Dieu qui nous a
donné la patience, la force, et l’inspiration
pour la réalisation de ce projet.
Avant d’entamer ce rapport, nous profitons
de l’occasion pour remercier tout d’abord
notre professeur : R. Allaoui pour ses
conseils précieux, ses remarques
constructives et la confiance qu’elle nous a
témoigné et de nous avoir incité à travailler
en mettant à notre disposition ses
expériences et ses compétences.
Equipe de PROJET
Après avoir acquis des connaissances approfondies en
algorithmique et langage C, nous avons pu réinvestir la
majorité de ces notions afin de donner naissance à un
projet qui nous a permet d’améliorer nos compétences
dans le domaine d’informatique, développer la manière de
voir les choses, renforcer l’esprit d’équipe et organiser le
temps de travail.
Il s’agit de réaliser un programme dans C qui permet de
regrouper des données entrées par un individus dans la
classe la plus proche à l’aide d’une présentation
graphique dans un repère dont les axes sont les 2
variables déjà définies par l’utilisateur.
Nous avons réussi à implémenter en C un programme de
l’analyse discriminante pour prédire les classes de
nouvelles données à partir des données d’apprentissage,
les figures ci-dessous présentent les résultats finals :
Introduction ....................................................................................... 4
I. Problématique ...................................................................................................................... 4
II. Contexte ................................................................................................................................... 4
a. La classification supervisée ...................................................................................... 4
b. Analyse des données .................................................................................................... 5
c. Analyse discriminante ................................................................................................. 5
d. Les défis ........................................................................................................................... 5
III. Méthodologie du travail ................................................................................................. 6
Etude théorique ............................................................................... 7
I. Analyse Discriminante .................................................................................................... 7
II. Travail à réaliser ................................................................................................................ 7
a. Apprentissage du modèle LDA .................................................................................. 8
b. Test du modèle LDA ...................................................................................................... 8
III. Principaux Algorithme ..................................................................................................... 9
a. Organigrammes du modèle LDA ............................................................................... 9
b. Algorithme principal .................................................................................................... 10
c. Sous-Algorithmes ........................................................................................................ 11
Programme C ................................................................................. 13
I. Programme principal ..................................................................................................... 13
II. Sous-Programmes .......................................................................................................... 14
III. Interface Graphique ........................................................................................................ 17
Exemple et Test du programme ........................................ 18
Conclusion ........................................................................................ 20
Bibliographie ................................................................................... 21
I. Problématique :
Dans beaucoup de domaines, les professionnels sont
amenés à prévoir les comportements sur la base de
certains critères.
Une stratégie très empirique mais suffisamment
éprouvée consiste à comparer ces caractéristiques aux
relevés effectués sur un ensemble d’observations.
La solution proposée dès 1936 par Fisher consiste à
chercher des combinaisons linéaires de descripteurs
quantitatifs qui permettent de classer les individus
correctement dans chacun des groupes.
II. Contexte : a. La classification supervisée :
Dite aussi discrimination est la tâche qui consiste à
discriminer des données de façon supervisée, un
ensemble d’objets, de telle manière que les objets d’un
même groupe sont plus proches les unes au autres que
celles des autres groupes.
Généralement, on passe par une première étape dite
d’apprentissage où il s’agit d’apprendre une règle de
classification (Analyse des données) partir de données
annotées (étiquetées) par l’expert et donc pour lesquelles
les classes sont connues, pour prédire les classes de
nouvelles données.
b. Analyse des données :
Un ensemble de techniques descriptives, dont l'outil
mathématique majeur est l'algèbre matricielle, et qui
s'exprime sans supposer a priori un modèle probabiliste.
c. Analyse discriminante :
L’objectif est de prédire une variable qualitative à k
classe à l’aide de p prédicteurs quantitatives de ce fait on
peut distinguer deux aspects :
-descriptif : quelles sont les combinaisons linéaires de
variables qui permettent de séparer le mieux possible les
k catégories ?
-décisionnel : connaissant les valeurs des prédicteurs
pour un nouvel individu, il s’agit alors de décider dans
quelle catégorie on peut l’affecter.
L’approche descriptive est essentiellement géométrique,
alors que l’approche décisionnelle est probabiliste.
d. Les défis :
Avant de récolter les fruits de notre travail, nous avons
été confrontés à un planning très serré en regard de la
charge de travail, les divers obstacles rencontrés :
- la compréhension des formules utilisées (algorithme)
- Besoin des connaissances approfondies en langage C
- la réalisation d’une interface graphique (GTK+)
- la représentation graphique des données (Gnuplot)
III. Méthodologie du travail :
Après la précision de l'objectif du projet, on a Désigné un
chef qui a pour mission principale de gérer l’équipe
(organisation des réunions, communication …), et on a
assigné les tâches en fonction de nos compétences afin
d’atteindre les objectifs fixés préalablement.
Nous avons suivi une méthode structurée pour organiser
notre travail :
• Pendant la période des examens:(22/04/2013 23/05/2013)
On s’est concentré sur la compréhension du sujet en
faisant des recherches individuelles afin de réaliser ce
qu’est demandé avec rigueur.
• Après la période des examens: à partir du 23/05/2013
Le travail durant cette période était très acharné, nous
avons distribué les tâches comme suit:
-Etude théorique du projet.
-Implémentation du programme dans C.
-L’utilisation de la bibliothèque GNUPLOT pour tracer les
résultats.
-Etude des bases des GTK+ pour ma réalisation d’une
interface graphique qui gère le programme.
-Transformer le programme en une installation pour
rendre le programme plus fiable.
• Estimation des heures de travail:
Presque 6 heures/jours dans les dix derniers jours ce qui
donne plus que 100 heures de travail.
I. Analyse Discriminante :
C’est une approche probabiliste qui consiste à regrouper
les données où une donnée sera considérée proche de
l’autre si elle provient de la même densité (loi) de
probabilité plutôt qu’en effectuant un simple calcul de
distance déterministe.
Chaque classe de données pourra donc être résumée par
les paramètres de sa loi de probabilité.
Chaque classe est supposée être Gaussienne.
On considérera la loi Gaussienne qui est bien adaptée à
beaucoup de phénomènes physiques et naturels. Elle est
simplement décrite par sa moyenne uk et sa matrice de
covariance et Σ est donnée par :
II. Travail à réaliser :
Il s’agit d’implémenter en C l’algorithme de l’analyse
discriminante pour prédire les classes de nouvelles
données à partir de données étiquetées (données
d’apprentissage). On commencera par l’analyse
discriminante linéaire (LDA).
a. Apprentissage du modèle LDA :
L’apprentissage du modèle LDA consiste en l’estimation
des paramètres uk et Σ à partir des données
d’apprentissage. Ces estimations sont données par :
Où nk est le cardinal de la classe k, zi est l’étiquette de
classe de l’exemple xi et zi = k désigne le fait que l’exemple
xi appartient à la classe k.
L’estimation des paramètres uk (les moyennes) et Σ
(matrice de covariance) à partir des données
d’apprentissage sont données par :
Et
b. Test du modèle LDA :
Une fois les paramètres sont estimés, on peut prédire les
classes des données de test par la règle du MAP
(maximum a posteriori). Cette règle consiste à maximiser
les probabilités a posteriori, ç-à-d affecter chaque donnée
de test xi à la classe ayant la plus grande probabilité
a posteriori :
Et on a donc :
III. Principaux Algorithme : a. Organigrammes du modèle LDA :
Organigramme de l’algorithme
d’apprentissage du modèle LDA : Organigramme de l’algorithme
de test :
c. Sous-Algorithmes :
Procédure permet de calculer la densité fik :
Fonction permet de calculer πk :
Procédure permet de calculer les moyennes de chaque classe :
Fonction permet de calculer la matrice de covariance :
Procédure permet de maximiser les probabilités a posteriori :
III. Interface Graphique :
GTK+ est une bibliothèque développée en C
permettant de créer des interfaces graphiques
(GUI).
GTK+ a été développé pour les besoins du logiciel
de traitement d'images GIMP (GNU Image
Manipulation Program).
Un exemple simple qui explique comment afficher une fenêtre :
Notre programme de GTK+ contient xxx lignes
#include <stdlib.h>
#include <gtk/gtk.h>
int main(int argc,char **argv)
{
/* Declaration du widget */
GtkWidget *pWindow;
gtk_init(&argc,&argv);
/* Création de la fenêtre */
pWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
/* Affichage de la fenêtre */
gtk_widget_show(pWindow);
/* Destruction de la fenêtre */
gtk_widget_destroy(pWindow);
return EXIT_SUCCESS;
}
Exemple d’apprentissage :
Les données traitées dans cet exemple furent publiées initialement
par Fisher, est un jeu de données de référence dans le domaine de
la classification.
Le problème de la classification de ces données et particulièrement
intéressant car une classe est linéairement séparable des deux
autres,
Nous avons choisi d’appliquer notre méthode à cet exemple car il
est fréquemment utilisé et facilement disponible. l’échantillon étudié
comporte 200 iris représentés par deux variables quantitatives :
la largeur et la longueur des pétales.
Chaque individu est identifié par sa largeur et sa longueur des
pétales et son appartenance à l’une des trois populations est
renseignée par un code d’espèce (1 pour Setosa, 2 pour Versicolor
et 3 pour Virginica). (1,2,3 représenter les Groupes)
Début de ficher qui comporte les Début de fichier qui comporte les classes
individus identifiés par les 2 variables : (les groupes) des individus :
Ce projet nous a permis de faire face à la
pression par moment et a des situations
proches de celles que nous pourrions
rencontrer dans le milieu professionnel.
Malgré cela le fait de mener un projet de
bout en bout en partant de zéros a été
une expérience enrichissante et motivante
pour nous.
Equipe de PROJET
Des livres et des ouvrages :
*Cours magistral.
*la bible du programmeur (C/C+/C++).
-document qui explique l’analyse discriminante :
http://chamroukhi.univ-tln.fr/courses/2012-2013/i41/Projets/projet-2-i41-
LDA-QDA.pdf
-exemple traité dans le programme :
http://chamroukhi.univ-tln.fr/courses/2012-2013/i41/Projets/data/
-GNUPLOT : bibliothèque utilisée pour tracé les résultats :
http://www.gnuplot.info/
-GTK++ : des bases vues dans :
http://www.gtk.developpez.com/
http://www.siteduzero.com/informatique/tutoriels/creez-une-interface-avec-
gtk
-La vérité sur les tableaux et pointeurs en C :
http://www.siteduzero.com/informatique/tutoriels/la-verite-sur-les-
tableaux-et-pointeurs-en-c
-Comment Créer une installation :
http://www.siteduzero.com/informatique/tutoriels/creer-une-installation