projet c programme de l’analyse discriminante

22

Upload: uh1

Post on 10-Nov-2023

0 views

Category:

Documents


0 download

TRANSCRIPT

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 :

b. Algorithme principal :

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 :

I. Programme principal :

II. Sous-Programmes :

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 :

Test du programme :

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