La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Fast and Furious Decision Tree Induction

Présentations similaires


Présentation au sujet: "Fast and Furious Decision Tree Induction"— Transcription de la présentation:

1 Fast and Furious Decision Tree Induction
INSA Rennes Andra BLAJ Emeline ESCOLIVET Simon MANDEMENT Gareth THIVEUX Nicolas DESFEUX Renaud PHILIPPE

2 Fast and Furious Decision Tree Induction
Contexte Technologies utilisées lors du projet Apprentissage automatique Arbres de décision Map-Reduce Hadoop Spécifications fonctionnelles Données présentes en entrée Données en sortie Arbres de décision dans l’application Parallélisation Planification initiale Conclusion

3 1. Contexte

4 Contexte (1) Origines du projet :
Projet lié aux activités de recherche de l’IRISA. Equipe Texmex: exploitation de documents multimédia. Equipe Myriads: développement et administration de systèmes distribués à large échelle.

5 Contexte (2) Objectifs : Créer des arbres aidant à la décision.
Utiliser des fichiers de données volumineux pour trouver des règles de décision. Généraliser le fonctionnement pour l’adapter à tous les domaines.

6 Spécifications fonctionnelles (1)
Données en entrée 3 types de descripteurs: discrete : données faisant partie d’une liste prédéfinie (ex: « oui », « non », « peut être »); continuous : valeurs numériques ordonnées (ex : IMC); text : phrases ou expressions; « Fast and Furious Decision Tree Induction » est une application générique qui doit pouvoir traiter des données issues de divers domaines (bioinformatique, ensemble de textes, etc.). C’est pourquoi nous allons développer afin de pouvoir traiter trois types d’attributs différents: – discrete : ce qui signifie que les données présentes dans cette colonne devront forcément faire partie d’une liste prédéfinie (ex : oui, non, je ne sais pas), – continuous : valeurs numériques ordonnées (par exemple, dans notre base médicale : l’IMC), – text : ce qui veut dire que les informations présentes dans ces colonnes sont des phrases, des expressions (par exemple : « merci NCMS joël PRENOM collado NPI »est une expression que l’on peut être amené à rencontrer. 6

7 Spécifications fonctionnelles (2)
Fichiers en entrée 2 fichiers en entrée: .names : la liste des annotations possibles une description du contenu du fichier de données une description du type des descripteurs ou des attributs .data : les données et les annotations associées Grippe, Rhume. age : continuous : ignore. boutons : discrete : cutoff = 15. imc : continuous. L’application recevra les données en entrée sous forme de deux fichiers. Un fichier « .data » contiendra les données et les annotations associées et un fichier « .names » détiendra la liste des annotations possibles et une description du contenu du fichier de données, du type des descripteurs ou des attributs. Nous allons donc décrire plus précisément le contenu de ces deux fichiers. Dans le fichier « .names », la première ligne correspond à la liste de l’ensemble des annotations que l’on peut trouver dans la base de données. Comme dans le premier fichier, chaque annotation est séparée par une virgule et la liste se finit par un point. Nous pourrons trouver ensuite, dans le fichier, une description des colonnes (type, caractéristique). nom_colonne : type_colonne : options_facultatives Le fichier « .data » contient l’ensemble des exemples que l’on veut fournir à l’application. Dans le fichier .data, chaque ligne représente un exemple. (ex: un ligne se décompose de la façon suivante : Age, toux, maux de tête, IMC 1, diagnostic) Les caractéristiques (dans un ordre précis) et l’annotation (unique, et toujours en fin de ligne), sont séparés par des virgules. Un point en fin de ligne permet d’indiquer le fin de l’exemple. Cette syntaxe particulière est importante pour permettre une bonne lecture du fichier en entrée. En effet, l’ordre des caractéristiques, leur type, et leurs particularités sont décrites dans le fichier « .names », il est donc important que le fichier « .data » soit correctement renseigné, afin que chaque colonne puisse être correctement identifiée. 52, Oui, 25, Grippe. 45, Oui, 28, Rhume. 28, Non, 20, Rhume. 7

8 2. Technologies utilisées lors du projet

9 Technologies utilisées (1)
Apprentissage Automatique Définition - Fonctionnement Discipline où un outil technologique est capable d’apprendre par lui-même. Sorte d’intelligence artificielle. Plusieurs degrés de supervision. Base de données d’exemples. Décisions d’étiquetage précises. L’apprentissage automatique est une discipline de l’informatique où un logiciel est capable d’apprendre par lui-même. C’est-à-dire de reproduire des comportements qu’il aura déjà vu ou déduit. On peut comparer ça à une sorte d’intelligence artificielle. Il existe plusieurs type d’apprentissage automatique : plus ou moins supervisé. Pour effectuer un apprentissage automatique, il faut une base de données d’exemple. Un apprentissage automatique où l’ensemble des données d’exemples sont étiquetées est dit supervisé. Les classes de réponse, où l’outil va classer les exemples, existent déjà. Pour un apprentissage automatique non supervisé, l’outil va devoir lui-même créer les classe de réponse. L’idée est d’obtenir à la fin de l’utilisation, un outil capable de prendre des décisions d’étiquetage précise si on lui fournit un nouvel exemple actuellement non classé. Plusieurs étapes : Observation, Construction, utilsation.

10 Technologies utilisées (2)
Applications dans notre projet Exemple déjà étiqueté : adapté à l’apprentissage automatique supervisé. Efficace avec un grand volume de données : Processus d’apprentissage complet, Étiquetage précis. Capable d’étiqueter de nouveaux exemples automatiquement. Dans le cadre de notre projet, nous allons utilisé l’apprentissage automatique supervisé. En effet, ce type d’apprentissage est bien adapté aux données qui nous sont fourni, où tout les exemples sont déjà étiquetés. De plus, on a un grand volume d’exemple, ce qui va permettre un étiquetage précis, puisque le processus d’apprentissage sera assez complet. Plus il y a d’exemple étiquetés à notre disposition, plus l’analyse peut être fine. L’autre intérêt réside dans le fait que l’apprentissage automatique va fournir un modèle que l’on pourra utilisé pour tester de nouveaux exemples.

11 Technologies utilisées (3)
Arbres de décisions Définition - Fonctionnement Outils d’aide à la décision et à l’exploration de données. Représentation à l’aide de nœuds et de feuilles. Populaire et simple d’utilisation. Modéliser un phénomène mesuré simplement, graphiquement et rapidement. Utilisé par beaucoup de monde. Concept que tout le monde comprend, sans même avoir des notions d’informatique !

12 Technologies utilisées (4)
Avantage pour notre projet Facile à comprendre et à utiliser. Taille dépendante du nombre de questions, et non de la taille des données. Lisibilité du rendu. Construction simple de rendu visuel (avec des fichier XML et CSS par exemple). Facile à comprendre et à utiliser. Indépendant de la quantité de données, mais dépendant du nombre d’attributs. Il est facile de modéliser un arbre en informatique, grâce à des langages très répandu, tel que le XML. On peut aussi rendre le XML plus « visuel » grâce à du CSS.

13 3. Spécifications fonctionnelles

14 Spécifications fonctionnelles (5)
Les arbres de décision dans l’application Nœuds - chaque nœud correspond à une question sur un attribut et à un ensemble d’exemples; Branches - chaque branche part d’un nœud et correspond à une réponse possible à la question posée en ce nœud; Feuilles - nœuds d’où ne part aucune branche (correspond à une classe). Dans cette partie nous allons vous décrire le fonctionnement de la méthode des arbres de décision au sein de l’application. Dans un arbre de décision: Nœuds - chaque nœud correspond à une question sur un attribut et à un ensemble d’exemples; Branches - chaque branche part d’un nœud et correspond à une réponse possible à la question posée en ce nœud (par exemple, l’algorithme CART considère 2 branches par nœud et l’algorithme ID3 considère autant de branches que de valeurs possibles pour l’attribut étudié) ; Feuilles – nœuds d’où ne part aucune branche (correspond à une classe).

15 Spécifications fonctionnelles (6)
Etapes de la construction d’un arbre: Apprendre une suite de questions/réponses la plus "efficace" possible. Isoler les classes. Organiser les questions/réponses sous la forme d’un arbre. Plus concrètement, les étapes pour la construction d’un arbre seront : – Apprendre une suite de questions/réponses la plus "efficace" possible ; – Isoler les classes ; – Organiser les questions/réponses sous la forme d’un arbre ; On va démarrer avec un arbre vide et construire l’arbre de manière inductive et descendante. On va étudier l’ensemble des cas pour lesquels la classe est connue et on va chercher en étudiant ces cas les caractéristiques qui distinguent le mieux la classe OUI de la classe NON. Pour choisir la variable de segmentation sur un nœud, l’algorithme teste toutes les variables potentielles et choisit celle qui maximise un critère donné. Il faut donc que le critère utilisé caractérise la pureté (ou le gain en pureté) lors du passage du sommet à segmenter vers les feuilles produites par la segmentation. Il existe un grand nombre de critères informationnels ou statistiques, les plus utilisés sont l’entropie de Shannon et le Gain de Gini. Nous on va utiliser l’entropie de Shannon.

16 Spécifications fonctionnelles (3)
Génération des questions type discrete : 1 question par valeur de l’attribut. type continuous : pour une valeur donnée de l’attribut, la question cherche à déterminer combien d’exemples ont une valeur supérieur ou inférieure à celle-ci. type text : 3 paramètres pris en compte expert_length : nombre de mots à rechercher expert_type : F-gram, S-gram, N-gram expert_level : 3 niveaux de recherche Pour les descripteurs de type discrete, nous générons à partir des exemples, toutes les questions sur la valeur de l’attribut. Pour les descripteurs de type continuous, nous sélectionnons tous les exemples dont l’attribut testé est supérieur ou inférieur à une valeur donnée (ou calculée). Pour les descripteurs de type text, trois paramètres doivent être pris en compte lors de la génération des questions posées par la méthode des arbres de décision : – expert_length : le nombre de mots à dans l’expression à rechercher (ex : parti socialiste = 2 mots). On parle souvent d’expression de longueur N (N étant le nombre de mot), – expert_type : le type de recherche : – F-gram (Full word-grams of maximal length only) : recherche des expressions d’exactement N mots consécutifs (et pas moins, contrairement à N-gram), – N-gram (all full word-grams up to a maximal length) : recherche dans un premier temps, tous les mots un par un de l’expression, puis tous les couples de mots consécutifs et ainsi de suite jusqu’à constituer des ensembles de N (défini précédemment) mots consécutifs, – S-gram (all Sparse word-grams up to a maximal length) : recherche Ngram + recherche des expressions de trois à N mots consécutifs où un ou plusieurs des mots est remplacé par un « blanc » (un mot quelconque). – expert_level : le niveau de recherche : Il existe généralement plusieurs niveaux de recherche. Ils dépendent du type de texte que l’on a, et de la précision de recherche que l’on veut obtenir (par exemple, si on cherche un verbe, est-il important qu’il soit conjugué ?). On peut définir par exemple 3 niveaux. – niveau 1 : recherche des mots exacts dans le texte (ex : "Un incendie s’est déclaré à Paris") – niveau 2 : recherche des natures et fonctions des mots (ex : "Un NOM COMMUN s’est déclaré à VILLE") – niveau 3 : recherche des radicaux des mots, verbes ou noms (ex : "Un incendie s’ETRE DECLARER à Paris")

17 Spécifications fonctionnelles (4)
Données en sortie Format xml Visualisation graphique <? xml v e r s i on =" " e n c o d i n g ="UTF-8" ?> <Tree> <Node id =" 1 "> <Result > < !-- compte-rendu des etiquettes . --> <Result number=“1" name=“grippe" percentage=“50" / > < !– Exemple de resultat --> <Question . . >+ < !-- question qui amenera a la creation de ces noeud --> <Question column=" Fumeur " value=“oui" entropy =" 1 " nbOcuurence=" 12 "> < !-- Exemple de question --> <TrueNode id="2" / > <!– noeud où la réponse à la question est “oui” --> <Result...> <Question...> <FalseNode id="3" / > <!-- noeud où la réponse à la question est “non”--> </Node> </Tree> Notre application doit être capable de générer un fichier de sortie utilisable. L’objectif est de rendre un fichier que l’utilisateur pourra consulter : avoir une vision de ce qu’est l’arbre, et pouvoir l’interroger (lui fournir les caractéristiques, et avoir l’étiquette la plus probable). Nous avons donc choisi de représenter notre arbre de décision sous forme d’un fichier XML, format qui nous permettra de définir facilement la structure de nos arbres, créant ainsi un fichier lisible décrivant les résultats et les probabilités d’obtenir ce résultat. Le XML nous permettra d’obtenir en sortie un fichier qui n’est pas « opaque » donc facilement analysable, et surtout utilisable en dehors de l’application. De plus, c’est un format très répandu et utilisé, et donc probablement mieux reconnu et compris par les utilisateurs, et pour lequel il existe beaucoup d’outils. Pour pouvoir naviguer dans l ’arbre, on utilise un id associe a chaque Noeud de l ’arbre.

18 Technologies utilisées (5)
MapReduce Partie Map Opération exécutée en parallèle -> chaque nœud travaille indépendamment des autres, sur une partie du fichier d'entrée. Association à un couple ( clé , valeur ). Opération spécifique sur chaque élément (ligne). Traitement différent selon le type: Discrète, Continue ou Texte.

19 Technologies utilisées (6)
MapReduce Partie Reduce Nœuds esclaves font remonter l'information. Calcul par les nœuds parents. Groupement des couples ayant la même clé. Le nœud origine peut, à la fin de l'opération Reduce, donner une réponse.

20 Spécifications fonctionnelles (8)
Parallélisation Exemple de fonctionnement de MapReduce, pour compter les occurrences de mots dans un texte. Fichier d’entrée: 1. savoir être et 2. savoir faire 3. sans faire savoir Lors de ce projet, nous demanderons à nos machines d’effectuer des calculs très longs. L’une des spécifications de ce projet est de réduire le temps de construction des questions de notre arbre de décision, ainsi que le temps de parcours de celui-ci. En utilisant une seule machine, il serait difficile de construire rapidement ces arbres de décision. C’est pourquoi notre seconde méthode de parallélisation consistera en l’utilisation d’un cluster de machines. Et encore une fois c’est Hadoop qui va nous permettre de le réaliser. Hadoop permet également la répartition de plusieurs "job" sur plusieurs machines connectées. Hadoop utilise pour cela un nœud maître qui envoie les "job" à effectuer à des nœuds esclaves qui effectuent ces tâches puis renvoient le résultat.

21 Technologies utilisées (7)
Hadoop Projet libre qui permet une implémentation de MapReduce. Un nœud maitre et des nœuds esclaves. Fractionnement du traitement sur différentes machines.

22 Technologies utilisées (8)
Hadoop Système de fichier distribué propre à Hadoop. Répartition des données entre les Datanodes. Assignation des tâches aux nœuds esclaves. Retour du résultat au nœud maître.

23 Spécifications fonctionnelles (9)
Spécification importante du projet → réduire le temps de construction des questions et du parcours de l’arbre. Solution envisagée → utilisation d’un cluster de machines via Hadoop (de manière plug-and-play). Parallélisation – répartition de plusieurs "job" sur plusieurs machines connectées.

24 Spécifications fonctionnelles (7)
Concrètement, notre application fonctionnera ainsi : – étape no 1 : L’application lit les fichiers en entrée et génère toutes les questions possibles à partir de la base de données et des paramètres précisé par l’utilisateur. Nous pouvons donc trouver des questions sur des données discrètes, continues ou encore textuelles. Une fois toutes les questions générées, nous pouvons alors calculer l’entropie liée à chaque réponse et ainsi en déduire le gain en entropie du découpage qu’elles permettent d’obtenir si nous choisissons de poser telle ou telle question. – étape no 2 : Après avoir effectué tous ces calculs, nous pouvons donc enfin décider de la meilleure question à poser, c’est-à-dire celle qui apporte le meilleur gain en entropie en application. Une fois, la question à poser trouvée, nous passons à l’étape no 3. Cependant plusieurs cas signifient l’arrêt de l’algorithme. Tout d’abord, si l’ensemble des individus impliquent le même résultat ou encore s’il n’y a plus de question à poser ou que le gain en entropie est nul ou insuffisant (seuil défini par l’utilisateur). Dans ces cas, nous passons à l’étape no 5. – étape no 3 : Nous entamons cette étape no 3 si et seulement si une question a pu être posée et donc si aucun fichier XML n’a été généré. Cette étape consiste à récupérer la base de données sur laquelle la question est posée et à la diviser en deux. Les deux parties présentes sont définies par les réponses à la question. – étape no 4 : On va parcourir le fichier des données (.data) pour pouvoir générer toutes les questions possibles, à l’exception près que le fichier des données concerné sera celui de l’arbre fils, c’est-à-dire qu’on parcourra les bases de données des deux fils, afin de construire un arbre complet. De plus, un nouveau tri sera effectué sur l’ensemble des questions générées (car une question ne peut pas être posée deux fois). Après avoir effectué ce tri, nous pouvons donc calculer l’entropie et le gain en entropie de chaque question. Une fois cette étape achevée, on retourne à l’étape no 2 pour chacun des deux fils. – étape no 5 : L’algorithme des arbres de décision ayant abouti, il ne nous reste plus qu’à afficher le ou le(s) résultats trouvé(s). Ces derniers sont alors générés dans le format xml vu dans la première partie de ce rapport. On peut aussi trouver dans ce fichier toutes les étapes et toutes les questions qui ont été posées pour arriver à ce(s) résultat(s).

25 4. Planification initiale

26 Planification initiale (1)
Calendrier : - 7h par semaine - entre 25 et 28h en semaine de projet - ajout de semaines de congés (semaine de partiels, vacances de Noël …) Ressources : 6 personnes, ayant chacune la même charge Détermination des tâches : 5 phases, chacune divisées entre 3 et 5 tâches, elles-mêmes découpées en sous-tâches et sous-sous-tâches Estimation des durées : - 1re estimation basée sur le temps déjà passé sur les tâches - 2ème estimation grâce à du Planning Poker

27 Planification initiale (2)

28 5. Conclusion

29 Conclusion Fast and Furious Decision Tree Induction :
Projet à l’origine d’équipes de l’IRISA. Création des arbres aidant à la décision. Généralisation le fonctionnement pour l’adapter à tous les domaines. Traitement des fichiers de données volumineux grâce à une parallélisation des calculs gérée par les technologies Hadoop/MapReduce. Réussite et respect des délais => une bonne planification et un suivi régulier.


Télécharger ppt "Fast and Furious Decision Tree Induction"

Présentations similaires


Annonces Google