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