Outils d`extraction d`informations à partir de documents numérisés

publicité
U NIVERSITÉ DE LA R ÉUNION - M2
I NFORMATIQUE
R APPORT DE STAGE DE M ASTER M2-I NFORMATIQUE
Outils d’extraction d’informations à
partir de documents numérisés
Encadrants :
Jean D IATTA
Cynthia P ITOU
Auteur :
MANGATA Nicky
31001630
9 juin 2015
1
Resume
Ce document est un rapport de stage dans le cadre d’un master 2 informatique à
l’Université de la Réunion située à St-Denis. Ce travail d’étude et de recherche
concerne un projet informatique et se fait sur une durée de 6 mois. Le projet
informatique effectué est encadré par deux experts en analyse de données et en
recherche : Cynthia PITOU et Jean DIATTA, ce projet concerne la mise en place
d’outils d’extraction d’informations à partir de documents numérisés et d’études
de méthodes de classifications sur ces informations. Ainsi dans une génération où
l’information numérisées joue un rôle primordial et où son volume ne cesse de
croitre, tirer le maximum de bénéfice de ces données par le biais de techniques,
d’outil et de technologies serait un atout considérable. Ce rapport mets donc en
avant plusieurs dispositifs permettant de générer des documents numérisés, d’organiser, de stocker, d’extraire et d’analyser des masses d’informations de ces documents numérisés afin de localiser celles qui seraient pertinentes relativement à
un besoin en information d’un utilisateur sans avoir eu au préalable des indications
sur son emplacement.
Mots clés : Data Mining , JAVA , classification supervisée, classification non
supervisée, méthodes d’évalutations, R, SQL.
Abstract
This paper is an internship report in connection with a last-year master’s degree
in computer sciences at the University of Reunion Island located in Saint-Denis.
This work of study and research involves a computer project and was done over
a period of six months. The IT project done was provided by two data mining
and research experts : Cynthia Pitou and Jean DIATTA, this project talk about
the implementation of data extract tool from scanned document and the study
of classifications methods on it. In this way, within a generation where scanned
data plays an crucial role and has a volume which are becoming more and more
important, obtaining the maximum of benefits of this data through methods, tools,
technologies will be a considerable asset. This report is therefore highlighting
devices allowing to generate scanned documents, organize, record, extract and
analyze wealth of information in order to locate those relevant in the context in an
informations needs to a user without any indications about the location.
Key-words : DataMining, java, clusterings, evaluation methods, r, sql.
2
Table des matières
1
Introduction
1.1 Contexte de l’étude . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Description du laboratoire d’accueil . . . . . . . . . . . . . . . .
5
5
6
2
Analyse des besoins et spécifications
2.1 Définition du problème . . . . . . . . . . . . . . . . . . . . . . .
2.2 Existant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3 Solutions apportées au projet . . . . . . . . . . . . . . . . . . . .
8
8
8
9
3
Développement
10
3.1 Outil de génération de facture automatisées . . . . . . . . . . . . 10
3.2 Base de données . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.3 Générateur de fichier csv . . . . . . . . . . . . . . . . . . . . . . 17
4
Les méthodes de classification non supervisées
4.1 La méthode de classification ascendante hiérarchique . . . . . . .
4.1.1 Mise en oeuvre de la CAH avec la fonction agnes et le
critère d’agregation : "lien complet" . . . . . . . . . . . .
4.1.2 Mise en oeuvre de la CAH avec la fonction agnes et le
critère d’agregation : ward . . . . . . . . . . . . . . . . .
4.1.3 Comparaison entre la librairie agnes et la librairie stats . .
4.1.4 Exploitation des résultats . . . . . . . . . . . . . . . . . .
4.2 L’analyse en composante principale . . . . . . . . . . . . . . . .
4.2.1 Mise en oeuvre de l’ACP . . . . . . . . . . . . . . . . . .
4.3 K-means . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3.1 Mise en oeuvre de la méthode K-means . . . . . . . . . .
4.4 K-medoids . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.4.1 Mise en oeuvre de la méthode K-medoids . . . . . . . . .
20
20
Les méthodes de classification supervisées
5.1 Les Forêts aléatoires (ou Forêt Decisionnels)
38
38
5
3
. . . . . . . . . . .
22
25
26
28
30
30
34
35
36
36
5.2
5.3
5.4
5.5
5.6
5.1.1 Mise en oeuvre de la forêt aléatoire . . . . . . . . .
Les arbres de décisions . . . . . . . . . . . . . . . . . . . .
5.2.1 Mise en oeuvre des arbres de décisions . . . . . . .
Classification naïve bayésienne . . . . . . . . . . . . . . . .
5.3.1 Mise en oeuvre de la classification naives bayésienne
Les Règles d’Associations . . . . . . . . . . . . . . . . . .
Mise en oeuvre des règles d’associations . . . . . . . . . . .
Les méthodes d’évaluations . . . . . . . . . . . . . . . . . .
5.6.1 Le taux d’erreur . . . . . . . . . . . . . . . . . . . .
5.6.2 Mesure de performance . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
39
41
42
47
47
48
48
49
49
49
6
Le résultat
50
7
Conclusion
52
8
Annexe
8.1 Fonctions codées sous R . . . . . . . . . . . . . . . . . . . . . .
53
53
Table des figures
56
Bibliographie
57
4
Chapitre 1
Introduction
1.1
Contexte de l’étude
De nos jours, l’information joue un rôle primordial dans le quotidien des individus et dans l’essor des entreprises. Cependant, le développement de technologies
dans tous les domaines ont conduit à la production d’un volume d’informations
numérisés sans précédent. Il est par conséquent, de plus en plus difficile de localiser précisément ce que l’on recherche dans cette masse d’informations numérisées. Il est alors intéressant de mettre en place un dispositif permettant de stocker
et d’organiser des masses d’informations de ces documents numérisés et de localiser celles qui seraient pertinentes relativement à un besoin en information d’un
utilisateur.
L’objectif de ce travail est donc de mettre en place des outils permettant l’extraction et la classification de données à partir de documents numérisés. Toutes les
données étant maintenant numérisées, il est nécessaire de pouvoir correctement les
traitées, pour cela il existe ce qu’on appelle les méthodes de classifications. Ces
méthodes vont permettre d’analyser de gros corpus de données quelque soit le domaine. En procédant à une classification, on construit des ensembles homogènes
d’individus, c’est-à-dire partageant un certain nombre de caractéristiques identiques. Ainsi la classification permet de mettre en évidence des regroupements
sans connaissance à priori sur les données traitées.
Dans ce travail afin d’avancer dans la recherche, il faut prendre des données
d’entrées qui ont la même nature mais sont différentes dans leur conception. Les
factures étant un type de document qui répond à cette attente, nous considérons
donc que les données d’entrées seront des factures. Pour produire une masse de
factures il est nécessaire de développer un outil permettant la génération automa5
tique de factures numérisées qui soit proche de la réalité et d’y tester les méthodes
de classifications.
Les méthodes de classifications utilisées dans ce travail sont :
–
–
–
–
–
–
–
La Classification Ascendante Hiérarchique.
K-means
K-medoids
Forêt Aléatoire
Les arbres de décisions
Naïves Bayes
Les Règles d’associations
Ce travail comporte deux grandes étapes, une partie développement pour préparer les données d’entrées et une partie d’analyse de données pour classifier ces
données d’entrées.
1.2
Description du laboratoire d’accueil
Le Laboratoire d’informatique et de Mathématiques (LIM) de l’université de
la Réunion (UR) est une équipe d’accueil (EA2525) structurée en trois axes :
- Epistémologie et Didactique de l’Informatique et des Mathématiques (EDIM)
- InformaTique et Applications (ITA)
- Mathématiques (MATHS)
Mon stage se situe dans l’axe ITA, plus précisément dans le thème des données,
des connaissances et de la décision (DCoD).
Selon le lim, [2] des études récentes ont montré que la quantité de données
numériques créées va doubler tous les deux ans d’ici 2020 où elle atteindra 40
zettaoctets, soit plus de 5 200 gigaoctets par personne.
De part l’augmentation importante de quantité de données numériques qualifiées
de "Big Data", le DCoD du LIM a pour défi de tirer le maximum de bénéfice
de ces données par le biais de techniques, d’outil et de technologies permettant
d’analyser les données.
6
Mon maitre de stage est Jean Diatta, directeur du LIM et enseignant chercheur
à l’Université de la Réunion, son domaine de recherche se situe plus précisément
dans :
– La Classification
– La Fouille de données
– L’analyse de concept
– Les indices de dissimilarités.
Ma tutrice de stage est Cynthia PITOU, doctorante au LIM, son domaine de recherche se situe précisément dans :
– L’extraction de connaissance
– La classification supervisée
– La fouille de données.
F IGURE 1.1 – Organigramme du LIM
7
Chapitre 2
Analyse des besoins et spécifications
2.1
Définition du problème
Il existe de nos jours des scanners permettant de lire des chèques ou cartes bancaires. Par exemple, le scanner va permettre de lire et décoder la piste magnétique,
vérifier la présence de signature, lire les champs complémentaire etc... L’emplacement de ces champs étant connus, il est plus facile de vérifier si l’information est
présente ou non, mais imaginons que l’on souhaite scanner des documents où les
informations peuvent être présentes à divers emplacements, cela rendrait la tache
plus compliquée.
Les factures sont l’exemple même de ce type de document, car en effet selon
le prestataire, la disposition des informations changent. Par conséquent, si l’on
souhaite scanner et retrouver des informations sur des factures, il est important
d’au préalable utilisé une méthode de classification qui donnera par son résultat la
probabilité de présence la plus forte de l’information à un emplacement donné.
Il faut également prévoir un programme permettant de générer des documents
numériques de ce type de manière automatique et en très grand nombres pour
pouvoir obtenir de bon résultats lors de la classification.
2.2
Existant
Il existe des outils permettant la création de factures automatique numérisées
mais il s’avère que ces outils sont pour la plupart payants et ne permettent pas un
contrôle total de l’emplacement des informations. Cela n’est donc pas intéressant
pour la problématique posée, car l’on cherche justement d’avoir la possibilité de
8
disposer les informations comme on le souhaite étant donnée que la disposition
des informations d’une facture changent pour chaque prestataire. Les méthodes
de classifications étant essentielles dans ce projet, il est nécessaire d’utiliser le
logiciel R. R est un logiciel de traitement de données et d’analyse statistique. C’est
un projet GNU développé par John Chambers et ses collègues dans les laboratoires
Bell et il est disponible en open source sur le Web. R est largement utilisé dans la
littérature pour des analyses et des tests statistiques.
R dispose de plusieurs librairies qui sont des fonctions codées sous R et compilées dans un format bien défini. Ces librairies seront nécessaires pour utiliser les
méthodes de classification, en effet chaque fonction de méthode de classification
sont disponibles dans une ou plusieurs librairies.
2.3
Solutions apportées au projet
Afin de mener à bien ce projet, il est important de distinguer les deux grandes
étapes du projet c’est à dire d’une part le développement et d’autre part l’analyse
des données.
Pour ce qui est de l’analyse de données, il aura donc fallu faire le répertoire des
méthodes supervisées et non supervisées sous R afin de classifier les données, et
des méthodes d’évaluations de celles-ci en utilisant plusieurs librairies que l’on
décrira ci-dessous. Ce répertoire passe par les algorithmes mis en ?uvre, les paramètres à considérer et les représentations graphiques des modèles et des résultats.
Pour la partie développement, il était primordial de mettre en place un outil
de génération de documents numérisés. Pour ce faire, l’utilisation de Eclipse a été
choisi et donc le langage de programmation objet JAVA. Il est important de stocker
les informations et ses emplacements sous une base de données. La plate-forme
de développement WampServer administrée par phpmyadmin a été utilisée pour
gérer plus facilement la base de donnée.
Il était par la suite primordial de pouvoir extraire les données de la base de
données et de les rendre sous un format ".csv" afin de pouvoir importer ces mêmes
données sous R. Un outil a donc été développé permettant, à l’aide de la librairie
"opencsv" de lire et d’écrire un format csv.
9
Chapitre 3
Développement
Dans ce chapitre nous allons voir et expliquer le développement de l’outil permettant de générer des documents automatisés ainsi que de l’outil permettant de
transformer les données de la base de donnée en données d’entrées (format .csv)
sous R. Ces outils ont tous deux été développés en Java (langage programmation
objet) sous Eclipse.
Le langage de programmation objet JAVA a été choisi car lors de la compilation,
Java dispose de sa propre machine virtuelle, ce qui le donne une indépendance vis
à vis du matériel. Eclipse est un projet, décliné et organisé en un ensemble de sousprojets de développements logiciels, de la Fondation Eclipse visant à développer
un environnement de production de logiciels libre qui soit extensible, universel et
polyvalent, en s’appuyant principalement sur Java.
3.1
Outil de génération de facture automatisées
Comme dit précédemment chaque prestataire dispose de sa propre méthode afin
de produire une facture. C’est à dire que les informations et la disposition de celleci peuvent différées d’un prestataire à l’autre. Afin de produire des factures qui
soient proche de la réalité, il est important de pouvoir disposer les informations
aux emplacements que l’on souhaite. C’est pourquoi l’utilisateur dispose d’une
grille lui permettant de placer ses informations :
10
F IGURE 3.1 – Grille d’aide à l’écriture pour la génération de factures
Cette grille permet à l’utilisateur de placer ses informations avec précision et
de les aligner s’il le souhaite (faire par exemple une disposition en tableau). En
effet, le clic de l’utilisateur sur une case de la grille entraine l’apparition d’un
formulaire permettant d’entrer l’information que l’on souhaite. Il est courant dans
les factures que les informations sont systématiquement disposées deux à deux,
c’est-à-dire que l’on a d’une part le libellé et ensuite la valeur. La valeur se trouve
généralement toujours à côté ou en dessous du libellé.
De plus, pour chaque prestataire, malgré l’emplacement différent des informations d’une facture à l’autre, le type des informations quant à lui est quasiment
similaire d’un prestataire à un autre. En effet, les informations telles que : l’immatriculation, le numéro de siret, la date, le numéro de facture , le code de dossier
etc.. sont toujours présentes d’une facture à l’autre.
Par conséquent, le programme va prendre en compte ces types de données et
aussi donné le choix à l’utilisateur d’en ajouter de nouvelles. Voici une illustration
de ce qui se passe lorsque l’utilisateur clic à un emplacement sur la grille :
Il est de ce fait possible via le formulaire de choisir le libellé que l’on souhaite
entrer à l’emplacement sélectionné. Ce libellé peut être saisie manuellement ou
alors être automatiquement généré. En effet, par exemple le libellé pour le Siret
d’une facture à l’autre peut prendre diverses valeurs tel que : "numéro de siret" ,
"n˚ :" , "Siret"..
Une fois le libellé sélectionné, il ne reste plus qu’à entrer la valeur correspondante au libellé que l’on a précédemment entré.
La valeur correspondant au libellé peut être entrée manuellement ou générée
automatiquement. En effet, le programme prend en charge le fait de générer des
11
F IGURE 3.2 – Formulaire pour la génération des libellés
valeurs automatiquement en fonction du type d’information que l’on souhaite.
Par exemple le programme va reconnaitre que l’on souhaite générer un numéro
de facture aléatoire ou un numéro de siret aléatoire. Étant donnée que dans les
factures, les valeurs sont systématiquement à côté ou en dessous du libellé, le
choix est donné à l’utilisateur de placer la valeur en dessous ou à côté.
Avec ces différentes fonctionnalités, nous pouvons donc créer une facture et
choisir de contrôler ou non le contenue des informations. Les informations peuvent
être placées où l’on souhaite et on peut maitriser le côté aléatoire du contenue des
informations.
Il faut cependant noter que certaines informations apparaissent dans divers endroits dans une facture et n’ont pas réellement de logique quant à leur emplacement. Il est donc nécessaire d’ajouter la possibilité de positionner des éléments
dans la facture de manière totalement aléatoire c’est-à-dire aussi bien au niveau
de la position que du contenu. Le programme dispose d’un bouton "aléatoire"
(fig. programme) permettant de générer les informations (fig formulaire) relatives
à une facture qui n’ont pas encore été placée de manière totalement aléatoire (position et valeur).
12
F IGURE 3.3 – Programme JAVA
Dans la figure précédente, il est notable que l’on peut générer autant de factures
que l’on souhaite via le champ "Nombre de document à générer" . Les factures
une fois générées seront enregistrer au format ".jpg" au chemin indiqué par le
formulaire et les informations relatives à la facture seront stockées dans une base
de données.
Il faut donc indiquer le chemin où l’on souhaite enregistrer les factures au format .jpg et spécifier le nombre de facture que l’on souhaite générer en fonction du
corps de la facture que l’on a créé.
Il est important de noter que, certains éléments seront positionnés en tant que
valeur et position fixe , d’autres en valeur variable et position fixe , et enfin des
valeurs aléatoires aussi bien en position qu’en contenu. Lorsque plusieurs factures
sont générées, les éléments définis en tant que valeur et position fixe resteront les
mêmes d’une facture à l’autre. Les éléments définis en tant que valeur aléatoire
et position fixe changeront simplement de valeur et enfin les éléments définis en
tant qu’aléatoire se verront changés aussi bien dans leur position que dans leur
contenus d’une facture à l’autre.
13
Les deux factures ci-dessous illustre le paragraphe ci-dessus. En bleu : les éléments aléatoires en position et en valeur
En rouge : les éléments fixe en position et aléatoire en valeur
En vert : les éléments fixe en position et en valeur
Les factures peuvent donc être créées avec un total contrôle non seulement sur
la valeur mais aussi sur la position que l’on peut désigner manuellement ou aléatoirement. Cela va permettre de créer une large diversité de factures ressemblantes
ou non aux factures réelles et ainsi d’avoir de meilleurs résultats afin de tirer des
conclusions lors de l’analyse des données.
14
3.2
Base de données
Pour pouvoir utiliser les méthodes de classification sur les informations relatives aux factures, il est nécessaire de stocker les différentes informations des
factures dans une base de données. La plate forme de développement WampSever
administré par phpmyadmin a été choisie pour stocker la base de données car c’est
une interface de gestion simple de base de données en SQL.
PhpmyAdmin visible ci-dessus contient la base de donnée "facture" avec les
tables : image_ facture,image_ information,region et type_ information.
Ainsi les informations relatives aux factures seront stockées dans ces tables.
Voici un descriptif rapide des différentes tables et champs de la base de données :
– Dans la table région : les coordonnées x et y de l’information , w la largeur
du rectangle dans lequel est stocké l’information et h la hauteur.
– Le type de l’information : le libellé, par exemple s’il s’agit de l’immatriculation ou du numéro de Siret.
– La facture : le titre de la facture , le chemin de l’image représentant la facture , l’extension de l’image.
– image_ information : le numéro de la facture , le numéro de région présent dans cette facture , le numéro de type d’information présent dans cette
facture et la description qui correspond à la valeur de l’information.
15
Pour chaque facture on aura donc les informations qu’il contient et leurs
positions. Ces données sont essentielles pour y appliquer les méthodes de
classification, ainsi on pourra grâce aux emplacements des données prédire l’appartenance à une classe d’une nouvelle facture. La prochaine étape
consiste alors de faire passer les données de la base de données à un format
lisible sous R.
Il est important de prendre en considération le format des données d’entrée. Sous R il est possible d’utiliser des jeux de données au format texte
(.txt) et au format tableur (.csv). Par exemple, un jeu de données au format
.csv peut être créé avec Excel. Les valeurs du jeu de données seront séparées par une virgule. Au format texte les valeurs doivent être séparées par
un espace ou une tabulation.
16
3.3
Générateur de fichier csv
Pour disposer d’un jeu de données sous R, il faut au préalable sélectionner
ces données sur la base de donnée à l’aide d’une requête SQL Select. Il
a donc été primordial de procéder au développement d’un générateur de
requête SQL Select simplifié sous Eclipse en java, permettant d’exécuter
des requêtes simples. Ainsi, on pourra avoir les jeux de données que l’on
souhaite et les transformer au format csv.
Pour la transformation du jeu de données sous mysql en csv, la librairie
opencsv est requise. Opencsv est une librairie simple permettant de parser
le format csv en java. Cette librairie a été développée car tous les parseurs
csv actuellement développés sont payants ou ne disposent pas de licence.
Opencsv permet donc de lire et de parser un fichier csv, il permet également
de créer et d’écrire dans un fichier csv.
La base de données contient tous les données en clair, mais sous R lorsque
l’on souhaite faire une analyse avec les méthodes de classification cela nécessite qu’en entrée nous ayons des tableaux de données. Ce tableau de
données doit contenir les informations suivantes :
– En colonne : les variables
– En ligne : les individus
Étant donnée que ce sont les factures que l’on souhaite classifier, dans notre
cas les variables seront les informations que l’on souhaite prélever pour
faire la classification (variables prédictives) telles que les régions des informations , les types d’informations , les valeurs ect.. Les individus seront les
factures ,de ce fait à chaque ligne correspond une facture.
En choisissant de classifiées les factures par la position de ses informations, on peut prendre par exemple, la valeur centrée de x et y ainsi que la
surface comme résultat de la requête. La requête SQL sera donc la suivante :
F IGURE 3.4 – Requête SQL Select
17
Cela permet d’obtenir les résultats suivants sous Mysql :
Le problème est que l’on souhaite qu’une ligne du tableau sous R soit
équivalente à une facture, il faudrait par exemple que le numéro d’image
475 soit une ligne du tableau de données avec les variables associées à elles
en colonnes et donc qu’ils ne se repartissent pas en plusieurs lignes comme
ci-dessus.
Dans le programme JAVA, nous spécifions le fait qu’une ligne soit équivalente à une facture et que les colonnes correspondent aux valeurs des
différentes variables de cette même facture.
18
Cela donnera donc le fichier csv suivant :
On observe bien que chaque ligne correspond à une facture. Ici on a par
exemple pour la facture numéro 475 les données centrées xmoy , ymoy et
la surface de chaque information de la facture.
Il suffit maintenant d’importer ce fichier sous R pour y appliquer nos méthodes de classification. Pour lire le fichier csv, il faut utiliser la commande
read.table comme le montre la figure ci-dessous. Etant donné que c’est un
fichier csv et que nous avons décidé de séparer les valeurs par une virgule,
il faudra spécifier que le séparateur est égal à une virgule.
Afin de classifier les factures et de pouvoir prédire la classe à laquelle appartient une nouvelle facture et donc quelles sont ses caractéristiques et où
se trouvent ses informations, il est important d’étudier les méthodes de classification supervisées et non supervisées.
19
Chapitre 4
Les méthodes de classification
non supervisées
La classification non supervisée, ou "clustering", est un thème de recherche
majeur en apprentissage automatique, en analyse et en fouille de données
ainsi qu’en reconnaissance de formes. Il fait partie intégrante de tout un
processus d’analyse exploratoire de données permettant de produire des
outils de synthétisation, de prédiction, de visualisation et d’interprétation
d’un ensemble d’individus (personnes, objets, processus, etc.). L’objectif
est, à partir de données constituées d’un ensemble d’individus ou objets(ici
les factures) et d’une relation de proximité entre ceux-ci (les variables), de
construire des groupes d’individus homogènes dans le sens où :
– deux individus proches doivent appartenir à un même groupe.
– deux individus éloignés doivent appartenir à des groupes différents.
En classification non supervisée, l’appartenance d’un individu à une catégorie n’est pas connue. C’est justement cette appartenance qu’il s’agit de
retrouver.
4.1 La méthode de classification ascendante hiérarchique
La classification hiérarchique est une approche algorithmique qui propose
de construire une structure hiérarchique appelée dendrogramme. Il s’agit
d’un arbre dans lequel chaque niveau correspond à une partition de l’ensemble des individus. Chaque noeud, appelé aussi amas, est une partie de la
20
partition correspondante (un groupe) et l’ensemble de ses fils constitue une
partition de ce noeud. Les approches permettant de construire un dendrogramme de ce type se décomposent en deux familles :
– les approches agglomératives qui construisent le dendrogramme par la
base, en regroupant à chaque étape les amas d’individus les plus similaires ;
– les approches divisives qui construisent le dendrogramme par le haut, en
partitionnant à chaque étape un amas en sous amas.
Ici nous utilisons la classification ascendante hiérarchique (CAH) qui est
une approche agglomérative.
Deux packages sont disponibles sous R pour la mise en oeuvre de la
CAH :
cluster : Méthode de classification hierarchique se basant sur la méthode
de Kauffman et Rousseeuw [4].
stats : Méthode de classification hiérarchique directement intégré sous R
[10].
FactoMineR : Méthode de classification et d’analyse en composante fait
par François Husson [3].
La fonction hclust du package stats est sensiblement similaire à la fonction agnes du package cluster. Plusieurs paramètres sont utilisables pour ces
méthodes, la description de certains de ces paramètre sont fait en 4.2.
Ces méthodes doivent être donnée par l’argument method qui est une chaîne
de caractère définissant la méthode de calcul de distance. Elle peut prendre
les valeurs :
– "average" : Distance moyenne non pondérée.
– "single" : Distance entre deux classes est ici déterminée par la distance
entre les deux objets les plus proches (les plus proches voisins) dans les
différentes classes.
– "complete" : Distances entre deux classes est ici déterminée par la plus
grande distance entre deux objets de classes différentes (c’est-à-dire les
"voisins les plus éloignés").
– "ward" : Distance s’appuyant sur une le calcul de la variance approchée
21
afin d’évaluer les distances entre classes.
– "weighted" : Distance moyenne pondérée.
4.1.1 Mise en oeuvre de la CAH avec la fonction agnes et
le critère d’agregation : "lien complet"
La fonction qui sera essentielle pour la classification hiérarchique ascendante est la fonction agnes. Pour utiliser cette fonction il est nécessaire de
charger le package cluster.
Un exemple de l’utilisation de la fonction agnes est donné ci-dessus. Dans
cet exemple la distance euclidienne est utilisé en argument du paramètre
"metric". La méthode de calcul de distances entre classes "complete" est
utilisée en argument du paramètre method.
agnes.complete = agnes(X,diss=inherits(X,"dist"), metric="euclidean",stand
=FALSE , method="complete")
Une fois que la commande est exécutée, la variable agnes.complete contient
la sortie de celle-ci.
La fonction plot permet d’avoir un affichage graphique du contenu de la variable agnes.complete.
plot(agnes.complete,main="CAH methode complete")
Les figures 2.1 et 2.2 sont des exemples de graphiques obtenues sur les données des factures.
22
F IGURE 4.1 – Dendogramme - CAH agnes method : complete
23
F IGURE 4.2 – Banner - CAH agnes method = complete
La figure 2.2 montre un graphique de banner indiquant la hauteur du dendrogramme ainsi que toutes les fusions qui ont été nécessaire pour arriver
à un certain étage du dendrogramme. Le graphique est à lire de gauche à
droite et les fusions sont représentées en blanc sur fond rouge. Le coefficient d’agglomération est un indicateur de la structure des données. Il prend
ses valeurs dans [0,1]. Plus il est élevé, plus les dissimilarités entre objets
sont grandes.
Avec ces différents graphiques, on peut en déduire les différentes classes
présentes et donc les factures qui sont similaires entre elles.
24
4.1.2 Mise en oeuvre de la CAH avec la fonction agnes et
le critère d’agregation : ward
Cette sous-section décrit l’utilisation de la fonction agnes avec un autre
paramètre pour le critère d’agrégation afin de comparer les résultats.
agnes.ward = agnes(X,diss=inherits(X,"dist"), metric="euclidean",stand =FALSE
, method="ward")
plot(agnes.ward,main="CAH methode WARD")
La figure 2.3 présente le dendrogramme obtenue sur les factures.
F IGURE 4.3 – Dendogramme - CAH agnes method = ward
Il est possible de tester d’autres méthodes(single , weight , flexible )
en procédant exactement de la même manière que précédemment mais en
changeant simplement le paramètre "method".
25
4.1.3
stats
Comparaison entre la librairie agnes et la librairie
La fonction hclust du package stats permet également de mettre en oeuvre
une classification hiérarchique ascendante d’un jeu de données d’entrée.
En ce qui concerne la description de la fonction hclust, elle est très similaire
à celle de la fonction agnes. La fonction hclust prend donc en paramètre
d’entrée les mêmes arguments que la fonction agnes.
Cependant la différence majeure entre le procédé hclust et agnes est que
l’utilisation de agnes donne le coefficient d’agglomération (agnes.object)
qui est un indicateur sur la structure de données et fournit un graphique de
type Banner (figure 2.2).
Voici une illustration rapide de l’utilisation de la fonction hclust avec la
méthode WARD.
varhclust = hclust(dist(X[,1 :4]),method="ward")
plot(varhclust,main ="CAH hclust method ward")
La figure 2.4 présente un dendrogramme.
26
F IGURE 4.4 – Dendogramme - CAH hclust method = ward
27
4.1.4
Exploitation des résultats
Une fois la CAH effectuée, qu’elle soit faite par la fonction agnes ou
hclust et quelque soit la méthode utilisée, il est possible de déterminer le
nombre de classes optimal pour découper l’arbre.
La fonction suivante permet de calculer le nombre de classe optimal :
Une fois que la fonction est défini , il faut ensuite l’utiliser en prenant
l’objet CAH comme paramètre de la fonction. L’exemple ci-dessous décrit
l’appel de la fonction best.cutree avec en paramètre agnes.ward le dendrogramme obtenue en 2.3 :
La fonction best.cutree() nous suggère 3 classes. La commande suivante
permet d’afficher graphiquement le découpage en 3 classes :
>rect.hclust(agnes.ward,3)
La figure 2.5 présente le dendrogramme coupé en 3 classes.
28
F IGURE 4.5 – Dendogramme - CAH hclust method = ward - 3 classes
On observe que le dendrogramme allié à la fonction de coupage de l’arbre
met en valeur trois grandes classes. Cela permet de bien distinguer trois
grandes classes pour les factures qui sont similaire les une aux autres. Certains prestataires différents ont donc a priori la même façon de générer leur
facture.
29
4.2
L’analyse en composante principale
L’analyse en composantes principales (ACP ou PCA en anglais) est une
méthode de la famille de l’analyse des données et plus généralement qui
consiste à transformer des variables liées entre elles (dites "corrélées" en
statistique) en nouvelles variables décorrélées les unes des autres. Ces nouvelles variables sont nommées "composantes principales", ou axes principaux. Elle permet au praticien de réduire le nombre de variables et de rendre
l’information moins redondante.
Pour la mise en place d’une ACP sous R, il existe plusieurs librairies tels
que "FactoMineR" [3] et "amap" [6]. Nous allons ici utiliser "FactoMineR".
Deux fonctions sont disponibles dans cette librairie pour la mise en oeuvre
de l’ACP :
-La fonction PCA : Elle établit une analyse en composante principale avec
des individus et des variables illustratives. Les valeurs manquantes (Na) sont
remplacées par la moyenne de la colonne.
-La fonction HCPC : Elle établit une classification hiérarchique sur Composantes principales.
Ce chapitre décrit l’utilisation des fonctions PCA et HCPC pour la mise en
oeuvre de l’ACP.
4.2.1
Mise en oeuvre de l’ACP
Le package FactoMineR doit être chargé, il est ensuite nécessaire de créer
un objet PCA qui va prendre en paramètre nos données sources. L’ACP va
permettre d’observer quelles sont les variables les plus utilisées pour la classification.
test = PCA(X[,5])
A partir de là deux graphiques sont générés mettant en évidence les facteurs
principaux.
30
F IGURE 4.6 – Analyse en composante principal - Individus
F IGURE 4.7 – Analyse en composante principal - Variables
31
Une fois la variable contenant l’ACP correctement initialisée , il est possible de réaliser une classification non supervisée des individus. Pour cela
la fonction HCPC est utilisée avec en paramètre le résultat de l’ACP.
res = HCPC(test,nb.clust=-1)
F IGURE 4.8 – HCPC - classification hierarchique
Ici la classification nous donne quatres classes. Cela est interessant car nous
pourront continuer l’analyse en utilisant d’une part 3 classes et d’autre 4
classes pour comparer les résultats.
La figure 4.6 montre les individus prochent entre elles, on distingue clairement 6 groupes et il y’a 6 prestataires dans les données d’entrées.
Pour ce qui est de la figure 4.7, les variables proche du cercle signifie que
les variables sont bien représentée en projection. Les coordonées qui sont
proche des axes sont des coordonnées en corrélation avec le facteur.
32
F IGURE 4.9 – HCPC - Facteur principaux
F IGURE 4.10 – HCPC - Partitionnement
33
4.3
K-means
L’algorithme des k-moyennes (ou K-means en anglais) est un algorithme
de partitionnement de données relevant des statistiques et de l’apprentissage
automatique (plus précisément de l’apprentissage non supervisé). C’est une
méthode dont le but est de diviser des observations en K partitions (classes)
dans lesquelles chaque observation appartient à la partition dont il est le
plus proche selon une mesure de distance définit.
C’est l’approche la plus connue, utilisée et étendue dans les différentes
communautés dédiées au clustering. Le principe est «naturel», étant donné
la distribution des individus de X dans l’espace de description et un nombre
nk de groupes fixé, l’objectif est de minimiser la dispersion des individus
relativement à un ensemble de prototypes représentatifs de ces groupes.
Il existe plusieurs librairies pour la mise en oeuvre de la méthode K-means
sous R, ces librairies sont : "stats" [10], "cluster" [4], "clue" [5]. Nous allons
ici utiliser le package "stats" qui est directement intégrée sous R.
La fonction essentielle permettant la mise en oeuvre de la méthode K-means
sous R est la fonction kmeans() disponible dans le package "stats".
Cette section décrit la fonction kmeans ainsi que la mise en oeuvre de la
méthode.
34
4.3.1
Mise en oeuvre de la méthode K-means
La librairie "stats" ainsi que les données d’entrées doivent être chargées
pour pouvoir utiliser la fonction kmeans(). Les données doivent être de valeurs numériques pour la fonction kmeans, il est de ce fait nécessaire de
passer en paramètre de la fonction kmeans la variable X privée de sa dernière colonne qui est qualitatif (colonne : Espece).
L’utilisation de la fonction kmeans se fait alors comme suit :
varkmeans = kmeans(X[,-5],3,iter.max=20,nstart=20)
La figure 4.1 montre le résultat de la fonction kmeans sous plusieurs dimensions. Ainsi nous pouvons voir les différentes partitions qui ont été effectuée
sur les factures, et la position des éléments en fonctions des différents axes.
F IGURE 4.11 – Kmeans sur les factures partitionnées en 3 classes
La méthode kmeans avec les librairies stats,cluster et clue sont assez similaires, ils donnent de bon résultat en calculant les partitions en se basant
35
sur les centroïdes. Cependant, on ne peut pas définir sa propre distance dans
la fonction kmeans.
Il est important de pouvoir définir sa propre distance, afin de pouvoir faire
un kmeans se basant sur cette distance et avoir de meilleurs résultats lors de
la création des différentes partitions.
Il a donc été primordial de créer sous R des fonctions permettant de calculer des distances, ainsi que des fonctions permettant d’effectuer le kmeans
sans utiliser les centroïdes.
Le code de ces fonctions que j’ai développé sous R se trouve dans l’annexe.
Le code des fonctions de distances et de la méthode kmeans se base sur
l’algorithme fournit par mon maitre de stage Jean Diatta [1]
4.4
K-medoids
La méthode K-medoids permet de partitionner les données en K classes en
utilisant le "principe de la médiane" , c’est une méthode qui est légèrement
plus robuste que celle du k-means.
4.4.1
Mise en oeuvre de la méthode K-medoids
Il faut dans un premier temps charger le package "cluster" [4] afin d’avoir
la fonction permettant l’analyse. Une fois que ceci est fait , il ne reste plus
qu’à charger les données à l’aide de la commande vu au chapitre 1 (les données doivent être numériques).
La fonction pam avec k=3 s’utilise à l’aide de cette commande :
varpam = pam(X[,-5],3)
Il est possible d’afficher graphiquement les résultats à l’aide de la commande suivante :
La figure 5.1 montre le résultat du K-medoids avec la fonction pam.
36
F IGURE 4.12 – Résultat du k-medoids avec pam()
Il est possible d’afficher graphiquement les partitions de chaque classe en
fonction de certaines variables à l’aide de la commande :
37
Chapitre 5
Les méthodes de classification
supervisées
5.1
Les Forêts aléatoires (ou Forêt Decisionnels)
Une forêt aléatoire est à la fois une méthode de classification et de régression qui crée un ensemble d’arbres de décision afin de réduire l’erreur de
biais et d’assurer une faible corrélation entre les arbres. Pour prédire l’étiquette d’un nouvel individu, on utilise un vote majoritaire des arbres de la
forêt.
Pour l’utilisation de cette méthode , il est nécessaire d’utiliser le package
"randomForest" [7]. L’algorithme des Random Forests a été codé par Breiman and Cutler (2005). Il a ensuite été importé dans le logiciel R par Liaw et
Wiener, via la librairie randomForest. Il existe deux principaux paramètres
dans cette librairie :
- Le paramètre le plus important est le nombre m de variables choisies aléatoirement à chacun des noeuds des arbres. Il est nommé mtry dans le paquet.
Il peut varier de 1 à p et possède une valeur par défaut : sqrt(p) en classification , p/3 en régréssion.
- Nous pouvons également jouer sur le nombre d’arbres q de la forêt. Ce
paramètre est nommé ntree et sa valeur par défaut est 500.
Le programme permet également de régler d’autres aspect de la méthode :
le nombre minimum d’observations (nodesize) en dessous duquel on ne découpe pas un noeud, ou encore la façon d’obtenir les échantillons bootstrap
(avec ou sans remise, ainsi que le nombre d’observations tirées). Ces éléments seront laissés par défaut.
38
5.1.1
Mise en oeuvre de la forêt aléatoire
La librairie "randomForest" doit être chargée soit manuellement soit avec
la commande load(randomForest).
Une fois la librairie chargée, la fonction randomForest() peut-être utilisée à
l’aide de cette commande :
rf <- randomForest(classe .,z,ntree=500,proximity=TRUE,importance=TRUE)
Ainsi la variable rf est maintenant un objet randomForest.
Species est la variable à prédire et les autres variables contenues dans les
factures sont les variables prédictives.
Il est possible d’observer les prédictions faites par randomForest pour en
tirer un taux d’erreur.
Il est également possible avec un objet randomForest de visualiser l’importance des variables dans la prédiction à l’aide de la commande suivante :
Pour mieux comprendre ces résultats, il est possible de les visualiser graphiquement à l’aide de la commande suivante :
varImpPlot(rf)
39
F IGURE 5.1 – Importance des variables
Ce graphique détermine l’importance des variables.
MeanDecreaseGini et MeanDecreaseAccuracy sont deux mesures pour déterminer l’importance des variables.
->MeanDecreaseAccuracy est calculée par rapport aux observations ( les
éléments )
->MeanDecreaseGini est calculée en utilisant l’impureté de noeuds.
Connaître l’importance des variables nous fournit une grande aide sur
l’interprétation des données. En effet, on peut ainsi savoir de quelles variables on peut se passer, de plus cela nous permet de construire de meilleurs
prédicteurs : un prédicteur construit en utilisant uniquement les variables
utiles pourra être plus performant qu’un prédicteur construit avec en plus
des variables de bruit.
L’algorithme des randomforest calcule une estimation de son erreur de
généralisation : l’erreur Out-Of-Bag(OOB). OOB signifie "en dehors du
bootstrap". Cette erreur estime l’erreur de généralisation d’une forêt.
40
5.2
Les arbres de décisions
Un arbre de décision est un outil d’aide à la décision qui représente la
situation présentée sous la forme graphique d’un arbre. Les algorithmes
d’arbres sont des méthodes aboutissant à des structures arborescentes où
chaque noeud est un sous-ensemble de la population, et chaque arrête une
valeur de l’une des variables prédictives.
Il y’a trois grandes étapes dans l’algorithme des arbres de décision :
– la phase d’expansion.
– la phase d’élagage.
– la phase d’extraction du modèle de prédiction sous la forme d’un ensemble de règles de décision.
Il existe plusieurs librairies pour l’utilisation des arbres de décisions sous
R, tels que "rpart" [11], "tree" [9], "party" [12]. Pour l’utilisation des arbres
de décisions sous R nous avons choisi de charger la librairie "rpart". La
librairie "rpart.plot" peut être également utilisée pour des fonctions d’affichages plus intéressant.
Cette section décrit la fonction rpart du package rpart ainsi que la mise en
oeuvre de la méthode des arbres de décisions.
41
5.2.1
Mise en oeuvre des arbres de décisions
Les librairies "rpart" et "rpart.plot" doivent être chargées soit manuellement
soit avec la commande load().
Une fois les librairies correctement chargées, la fonction rpart() s’utilise à
l’aide de la commande suivante :
>arbre<-rpart(classe.̃,z,method="class")
Cette commande va créer l’arbre de décision qui va prédire la variable classe
en fonction des autres variables présentes dans le fichier contenant les factures.
Il est nécessaire par la suite de choisir un niveau de simplification en regardant la complexité qui minimise l’erreur estimée.
Pour déterminer cette complexité , il faut utiliser les commandes suivantes :
La figure 7.1 va donner le taux d’erreur en fonction du nombre d’arbres.
42
F IGURE 5.2 – Taux d’erreur en fonction du nombre d’arbres
La complexité qui minimise l’erreur estimée est de 0,031.
Cela va permettre d’avoir la complexité optimal a donnée en paramètre pour
la construction de l’arbre, ce paramètre sera pris en compte lors de la phase
d’élagage de l’algorithme.
43
Un arbre simplifié peut être créée en utilisant la fonction prune avec la complexité qui minimise l’erreur estimée c’est à dire 0,031. La commande suivante permet de créer l’arbre simplifié :
>arbreSimplifie<-prune(arbre,cp=0.66)
La fonction prune va retourner un nouvel objet rpart tramé avec la complexité donnée en paramètre.
Il ne reste maintenant plus qu’à consulter l’arbre :
Il est possible d’afficher l’arbre graphiquement à l’aide de la commande suivante :
>prp(arbreSimplifie)
La figure 7.2 montre l’arbre simplifié resultant de la fonction prune.
44
F IGURE 5.3 – L’arbre de décision
L’ensemble des feuilles de l’arbre constitue donc une partition de la population. Les règles de décisions sont ensuite extraites de l’arbre, en parcourant
les branches pour obtenir les prémisses et en affectant la classe majoritaire
de chaque feuille pour obtenir la conclusion. Les règles issues d’un arbre de
décision sont exclusives et couvrent l’ensemble de la population.
Il est maintenant d’usage d’évaluer la méthode et de voir le nombre d’individus mal classés par la méthode des arbres de décisions.
45
La fonction predict() va permettre d’établir une prédiction en utilisant l’arbre
de décision créé précédemment en procédant comme suit :
La commande table() va permettre de voir précisément quels éléments ont
été mal placés :
Les éléments ont été correctement placés.
46
5.3
Classification naïve bayésienne
La classification naïve bayésienne est un type de classification Bayésienne
probabiliste simple basé sur le théorème de Bayes. Un classifieur bayésien
naïf suppose que l’existence d’une caractéristique pour une classe, est indépendante de l’existence d’autres caractéristiques.
Pour la mise en oeuvre de la classification naïve bayésienne sous R, il faudra utiliser la fonction naiveBayes() de la librairie e1071.
Pour comprendre le fonctionnement et les résultats de la classification naive
bayésienne, il est nécessaire d’étudier la description de la fonction.
5.3.1
Mise en oeuvre de la classification naives bayésienne
La librairie "e1071" doit être chargée soit manuellement soit avec la commande librairy().
Une fois la librairie correctement chargée, on peut utiliser la fonction naiveBayes() à l’aide de la commande suivante :
>m<-naivesBayes(X[1 :4],X[,5])
Ainsi la classification naives bayésienne sera effectuée sur les données du
fichier contenant les factures.
Il est possible d’observer si les prédictions de la méthode Naives Bayes sont
correct en utilisant la fonction predict.
Ainsi de la meme manière que la méthode précedente, on pourra voir le taux
d’individu mal classés et donc la performance de la classification naives
bayésienne.
Il est également possible via la librairie e1071 d’observer la distribution
des variables pour les différentes classes. Cela va permettre d’étudier la
moyenne de la variable ainsi que sa variation selon l’espèce pour facilité la
prédiction.
47
5.4
Les Règles d’Associations
La méthode des règles d’associations va permettre d’effectuer une analyse pour découvrir des associations ou des relations cachées dans les grandes
bases de données.
Ces relations seront représentées sous forme de règles d’association, par
exemple la règle {Couche} -> {Biere} suggère qu’il existe une relation forte
entre la vente de couches et de bières parce que de nombreux clients qui
achètent des couches achètent aussi de la bière.
La fonction apriori du package arules est nécessaire pour la mise en
oeuvre des règles d’associations.
Ainsi les règles d’associations appliquées au fichier contenant les factures pourraient donnée par exemple des informations sur le placement de
certaines variables. Par exemple, le fait que l’immatriculation soit placée
à un emplacement x entraine le fait que le numéro de siret soit placé à un
emplacement y.
5.5
Mise en oeuvre des règles d’associations
Pour la mise en oeuvre des règles d’associations, il est nécessaire d’avoir
des données de type transaction en entrée. Pour être sous la forme de transactions les données doivent être qualitatives. Ainsi les variables tels que x
, y , w et h devront être transformée en varaibles qualitatives.
Pour cela, il est primordial de définir certaines région qui correspondent à
de certaines valeur de x, y, w et h.
Il est possible de déterminer les motifs fréquent par rapport à un support
que l’on fixe. Pour générer les règles d’associations, il est nécessaire d’utiliser la fonction apriori qui va générer toutes les règles possible en fonction
d’un support et d’une confiance donnée. Ainsi, il sera possible d’extraire un
sous-ensemble de ces règles d’associations sachant que plus la confiance de
la règle est élevé, plus elle est fiable.
On pourra donc avoir des règles d’associations plus ou moins sur en utilisant
une des mesures de confiances(Lift,confidence,..) et déterminer par exemple
que le fait que un type d’information x soit dans une region r1 implique que
un type d’information y soit dans une région r2.
48
5.6
Les méthodes d’évaluations
Les méthodes d’évaluations vont permettre de visualisé la performance
d’une méthode de classification. De ce fait, il sera possible de comparer les
différentes méthodes de classifications en se basant sur le taux d’erreurs de
chacuns ou sur leurs précisions.
5.6.1
Le taux d’erreur
La méthode d’évaluation sous sa forme la plus basique est de regarder le
taux d’erreur de classification de chaque méthode. Il suffit alors de comparer les valeurs prédites avec les valeurs réels pour chaque méthode. Pour
cela, il faut utiliser un tableau qui est appelé dans ce contexte : "matrice de
confusion".
5.6.2
Mesure de performance
Il existe plusieurs mesures de performance pour évaluer des méthodes de
classifications. La librairie ROCR offre un grand nombre de ces mesures tel
que :
-Le taux de vrai positif,faux positif
-Le taux de vrai négatif,faux négatif
-La precision
-Accuracy
-Le recall...
? La librairie ROCR offre les fonctions "prediction" et "performance" pour
évaluer les méthodes de classifications.
La fonction prediction prend en paramètre :
-Les prédictions sous forme de probabilités
-Des valeurs binaires pour un label donné -> 1 si le label est présent 0 sinon.
Étant donnée que les méthodes de classifications vu précédemment ont une
bonne précision pour le jeu de données iris(le taux d’erreur est faible), il est
intéressant de changer de jeux de données et d’utiliser les données fournit
par la librairie ROCR pour mieux exploiter les graphiques.
ROCR.hiv$hiv.nn$predictions contient les prédictions sous forme de probabilité.
ROCR.hiv$hiv.nn$labels contient les valeurs binaires pour indiquer la présence ou non du label.
49
Chapitre 6
Le résultat
La création de données numérisées de façon simple et automatique permet un gain de temps et d’efficacité considérable. On peut générer une multitude de factures avec un contrôle total de la position et du contenu des
informations qui seront stockées en tant qu’image et en tant que données de
la base de données.
Le générateur de requêtes SQL de type SELECT permet l’extraction
d’informations ciblées des documents numérisées. Une fois ces données
extraites des documents numérisées et importées sous R, cela permettra
d’avoir une masse de données et de tester la validitée de nos méthodes.
Le générateur de requête SQL offre donc une certaine flexibilité en permettant d’effectuer nos méthodes avec les données que l’on souhaite.
L’étude et l’application des méthodes de classification supervisées et non
supervisées sur les factures permet de donner des informations primordiaux
sur la position des données de la facture.
En effet, les méthodes de classifications non supervisées vont permettre
de repérer les différents prestataires pour les factures données en entrée.
Les classes détermineront donc les prestataires, il est possible que plusieurs
prestataires appartiennent à la même classe ce qui signifie que ces prestataires ont à priori la même méthode de conception de la facture.
Les méthodes de classification supervisées quant à elle vont donner des
informations sur l’importance des variables, par exemple celles qui jouent
un rôle fort en tant que variables prédictives. Elle peut également mettre en
50
avant certaines règles spécifiant que la valeur d’une ou plusieurs variables
implique l’appartenance de l’individu à une classe.
Grâce à ces différentes méthodes appliquées aux factures, il est possible
de déduire avec une probabilité plus ou moins grande la présence d’une
information et son emplacement dans le document.
51
Chapitre 7
Conclusion
Les méthodes de classification sont habituellement utilisées dans l’extraction de connaissance pour modéliser les données complexes. Dans ce
travail, elles sont proposées pour identifier l’emplacement de données de
documents numérisés généré par notre programme java. Les résultats permettent d’avoir des indications essentielles pour prédire l’emplacement d’une
information. Elle permet d’une part de mettre ne avant les similitudes entre
plusieurs documents numérisés et de mettre en évidence l’importance de
certaines informations qui va déterminer l’appartenance d’un document à
une classe.
Cependant, les pistes abordées dans ce travail méritent d’être explorées
davantage afin de poursuivre l’étude de recherche d’informations sur des
documents numérisées. En ce sens, les méthodes devraient être perfectionnées et les test amplifiés afin d’avoir un taux de succès dans la prédiction de
l’emplacement d’une information proche de la perfection.
Ce stage de master 2 en informatique a été une expérience enrichissante,
j’ai pu m’expertiser dans le domaine du développement JAVA et découvrir
l’intérêt et la puissance des méthodes de classification. Cela m’a permis
d’approfondir mes connaissances en analyse de données et m’a permis de
voir le réel besoin de ses techniques et sa place importante dans l’avenir de
l’informatique décisionnel.
52
Chapitre 8
Annexe
8.1
Fonctions codées sous R
Voici les différentes fonctions qui ont du être codées sous R pour pouvoir
utiliser la fonction kmeans avec sa propre distance en paramètre d’entrée.
Matrice de distance euclidienne.
Fonction de distance de l’aire convex.
Fonction de distance du périmètre.
53
Fonction de distance de la somme des carres.
Fonction de distance avec lien simple .
Fonction de distance avec lien complet.
54
Fonction K-means.
Sous-fonction de la fonction k-means.
55
Table des figures
1.1
Organigramme du LIM . . . . . . . . . . . . . . . . . . .
3.1
3.2
3.3
3.4
Grille d’aide à l’écriture pour la génération de factures
Formulaire pour la génération des libellés . . . . . . .
Programme JAVA . . . . . . . . . . . . . . . . . . . .
Requête SQL Select . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
11
12
13
17
4.1
4.2
4.3
4.4
4.5
4.6
4.7
4.8
4.9
4.10
4.11
4.12
Dendogramme - CAH agnes method : complete . . . .
Banner - CAH agnes method = complete . . . . . . . .
Dendogramme - CAH agnes method = ward . . . . . .
Dendogramme - CAH hclust method = ward . . . . . .
Dendogramme - CAH hclust method = ward - 3 classes
Analyse en composante principal - Individus . . . . .
Analyse en composante principal - Variables . . . . . .
HCPC - classification hierarchique . . . . . . . . . . .
HCPC - Facteur principaux . . . . . . . . . . . . . . .
HCPC - Partitionnement . . . . . . . . . . . . . . . .
Kmeans sur les factures partitionnées en 3 classes . . .
Résultat du k-medoids avec pam() . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
23
24
25
27
29
31
31
32
33
33
35
37
5.1
5.2
5.3
Importance des variables . . . . . . . . . . . . . . . . . .
Taux d’erreur en fonction du nombre d’arbres . . . . . . .
L’arbre de décision . . . . . . . . . . . . . . . . . . . . .
40
43
45
56
7
Bibliographie
[1] Jean DIATTA. Moving clusters : A k-means-like multiway approach.
Physical Review, 9(1).
c
c [2] Laboratoire d’Informatique et de MathÃmatiques.
DonnÃes
c
connaissance - dÃcision
(dcod). Physical Review, 2013.
[3] S. LÃa * from Agrocampus Rennes F. Husson*, J. Josse* and J. Mazet.
http ://factominer.free.fr.
[4] Kaufman and Rousseeuws.
https ://stat.ethz.ch/r-manual/rdevel/library/cluster/html/pam.html.
[5] Walter
Böhm
Kurt
Hornik.
project.org/web/packages/clue/clue.pdf.
http
://cran.r-
[6] Antoine Luca. http ://cran.r-project.org/web/packages/amap/amap.pdf.
[7] Fortran original by Leo Breiman, R port by Andy Liaw
Adele Cutler, and Matthew Wiener.
http ://cran.rproject.org/web/packages/randomforest/randomforest.pdf.
[8] Zoran Racic. Étude et essais du spectromï¿ 21 tre ï¿ 21 plasma DYMIO
de la mission MARS 96. PhD thesis, 1996.
[9] Brian Ripley. http ://cran.r-project.org/web/packages/tree/tree.pdf.
[10] R Core Team and contributors worldwide. https ://stat.ethz.ch/rmanual/r-devel/library/stats/html/stats-package.html.
[11] Brian Ripley Terry Therneau], Beth Atkinson.
project.org/web/packages/rpart/rpart.pdf.
http ://cran.r-
[12] Carolin Strobl Achim Zeileis Torsten Hothorn, Kurt Hornik.
http ://cran.r-project.org/web/packages/party/party.pdf.
57
Téléchargement