English Recherche
www.bayesia.com n'est pas optimisé pour votre navigateur (Internet Explorer 6).
Nous vous suggérons de passer à IE 7 ou Firefox pour une meilleure navigation.

Chapitre 3 - Extraire un réseau Bayésien à partir d’une base de données


3.1    Présentation du problème

Tout au long de sa carrière, le spécialiste des maladies des poumons a créé une base de données contenant les informations sur les patients qu’il a consultés afin de laisser une trace à son successeur. Une ligne de la base de données correspond au diagnostic d’un patient. Voici les deux premières lignes de la base de données :

 


Fumeur Cancer Age Tuberculose TbOuCa VisiteAsie Radiographie Bronchite DifficultéRespiratoire
1 Oui Non 25 Non Non Non Normal Non Oui

 

La première ligne correspond aux noms des variables et la deuxième correspond aux informations d’un patient. En tout, 10000 patients ont été enregistrés.

Voici le détail des variables :

: numéro d’identification du patient. Un entier
Fumeur : Est il fumeur ? Oui/Non
Cancer : A-t-il un cancer ? Oui/Non
Age : age du  patient ? Un entier
Tuberculose : A-t-il la tuberculose ? Oui/Non
TbOuCa : il s’agit d’un variable créée pour simplifier les tables de probabilités («ou’ logique)
VisiteAsie : Le patient a-t-il visité l’Asie ? Oui/Non
Radiographie : Comment est la radio ? Normale/Anormale
Bronchite : A-t-il une bronchite ? Oui/Non
Difficulté Respiratoire : A-t-il des difficultés respiratoires ? Oui/Non

Le spécialiste qui le remplace veut déterminer toutes les associations entre ces variables afin de prédire les risques pour un patient d’avoir un cancer ou la tuberculose et surtout pouvoir juger s’il est nécessaire d’effectuer une radiographie.

3.2    Chargement de la base de données

image 1

Après avoir choisi la base de données à ouvrir (ici un fichier texte), un premier assistant pour la spécification du format de fichier est lancé afin de choisir les caractères utilisés comme séparateurs de champs, de spécifier si le fichier comporte une ligne de titre contenant le nom des variables, ou encore, si il y a des valeurs manquantes, quels sont les caractères représentant ces valeurs manquantes.


Assistant format de fichier

Un second assistant apparaît alors pour déterminer les opérations à effectuer sur les champs.


Assistant d'opérations

Cet assistant permet notamment de spécifier le type de variables (Discrète ou Continue) et permet également de ne pas distribuer certains champs. Par exemple, le numéro de patient ne servant à rien pour la modélisation des maladies respiratoires, il n’est pas nécessaire de distribuer ce champ.

Il fournit également un ensemble d’informations sur les données


image 4

La base contenant des valeurs manquantes, il est possible de spécifier un traitement pour chacune des variables en possédant

  1. Soit les valeurs manquantes ne sont pas traitées, i.e. elles constituent une nouvelle modalité de la variable (il se peut que la non observation d’une variable soit un information en soit)
  2. Soit on les remplace par une autre valeur (une valeur quelconque, la valeur modale si la variable est discrète ou la moyenne si elle est continue)   
  3. Soit on utilise la puissance de l’inférence pour estimer leurs valeurs avec  la structure courante du réseau          
  1. Complétion dynamique : à chaque modification structurelle (ajout, inversion, suppression d’arc), les valeurs manquantes sont dynamiquement estimées en fonction du réseau courant et des données disponibles et remplacées par les valeurs modales correspondantes pour l’évaluation de la prochaine opération,

  2. EM structurel : la probabilité de chaque modalité des variables à valeurs manquantes sont dynamiquement estimées avec la structure courante et des données disponibles. Ces probabilités sont directement utilisées pour l'apprentissage de la structure et de ses paramètres, c'est à dire qu'il n'y a pas de complétion par une modalité spécifique. Cette méthode est la plus précise mais aussi la plus gourmande en temps de calcul.


Le type de traitement choisi est propre à chaque variable possédant des valeurs manquantes. Si on veut appliquer le même traitement pour toutes ces variables, il faut sélectionner l’ensemble des colonnes (double click sur une colonne ou encore « CTRL + A »). Ayant ici très peu de valeurs manquantes (2.77%), le spécialiste remplace les valeurs manquantes par les valeurs modales/moyennes.

image 5


Il existe en fait un 4ème type de traitement, qui ne s’applique pas uniquement au valeurs manquantes mais à n’importe quelle modalité : le filtrage. On pourrait par exemple filtrer les fumeurs de moins de 15 ans. Pour se faire, on cliquerait sur l’icône  image 6 de Fumeur, et on cliquerait une  fois sur la modalité Oui pour quelle soit surlignée en bleu et définir un filtre Et (un second click passant en rouge et indiquant un filtre Ou). On sélectionnerait ensuite la variable Age pour saisir un minimum de 15 ans en bleu.


image 7


La base de données contenant une variable continue qu’il convient de discrétiser. Pour cela, il existe plusieurs méthodes :


  • Egale distance : le domaine de variation est découpé en intervalles de même longueur.

  • Egale fréquence : plus intéressant car il s’agit d’intervalles ayant le même nombre de cas associés.

  • Arbre de décision : les intervalles sont choisis en fonction de leurs apports d’information sur la variable cible (il faut toutefois avoir une variable cible discrète).


Le spécialiste choisit de discrétiser la variable Age avec un arbre de décision. Il sélectionne le nœud cible Cancer et désire découper le domaine de variation en quatre intervalles maximum (il s’agit d’une valeur maximale car BayesiaLab  peut décider d’en utiliser moins).

Discrétisation


Après fermeture de l’assistant, une feuille de travail contenant tous les nœuds correspondant aux variables de la base de données apparaît. Il suffit de lancer les algorithmes d’apprentissage pour exploiter la base de données. Notre spécialiste découvre ainsi les 9 nœuds correspondant à ses variables distribuées :


Noeud correspondant


3.3 Apprentissage non supervisé afin de découvrir l'ensemble des relations probabilistes présentes au sein des données (découverte d'associations)

BayesiaLab  propose trois algorithmes pour la découverte des associations :

SopLEQ: recherche reposant sur une caractérisation globale des données et sur l'exploitation des propriétés d'équivalence de réseaux bayésiens (rapide)

Taboo : apprentissage structurel implémentant la recherche Taboo.

Taboo Order : apprentissage utilisant la recherche Taboo pour trouver l'ordre optimal des noeuds (recherche plus complète et donc plus longue)

Découverte d'associations

Le spécialiste utilise la méthode SopLEQ pour découvrir les associations entre les nœuds :


image 11

Pour faciliter la visualisation du réseau, BayesiaLab  possède deux outils pour réorganiser automatiquement les nœuds : Un positionnement dynamique et un positionnement par algorithme génétique.


Positionnement automatique

Ces positionnements doivent être interrompus par l’utilisateur par le biais du feu rouge dans la barre d’état : image 13. Le potentiomètre situé dans le coin supérieur droit permet de faire varier la longueur des arcs.

La touche « P » permet quant à elle de lancer le positionnement dynamique mais limité à un nombre de pas constant.


image 14

A présent, le médecin a une représentation exploitable de ses données.  Le réseau obtenu automatiquement à partir de la base de patients ressemble beaucoup à celui élaboré par expertise. On remarque toutefois que l’arc entre Fumer et Cancer est inversé. En fait, sans connaissance a priori pour indiquer que Fumer est la cause de Cancer, il est impossible de trouver l’orientation  causale de cet arc. En mode Validation, BayesiaLab  permet de visualiser l’ensemble des arcs dont l’orientation ne peut être décidée sans connaissances externes (menu Inférence, Afficher les arêtes).

Grâce au menu contextuel des arcs, il est alors possible de spécifier l’orientation des arcs suivant la connaissance que l’on a. Les  changements d’orientations sont répercutés sur l’ensemble du réseau et les tables de probabilités sont modifiées automatiquement en conséquence.


Orientation des arcs

3.4    Utiliser les connaissances cachées dans la base de données

Installons un monitoring sur les variables Fumeur, Age, Cancer et Tuberculose. Pour cela, il faut sélectionner les variables, effectuer un clic droit sur un des nœuds sélectionnés et choisir l’item monitoring dans le menu :


Installer un monitoring

Il faut remarquer que grâce à la discrétisation par arbre de décision avec comme nœud cible Cancer, BayesiaLab  a découpé la variable Age en trois intervalles, au lieu des quatre initialement spécifiés, correspondant aux personnes ayant moins de 37 ans, celles ayant moins de 60 ans et celles ayant plus de 60 ans. 


Edition de noeuds

Dans la table de probabilités de la variable Age présentée sur la copie d’écran ci-dessus, nous voyons que 34.79% des patients ayant consultés ont plus de 60 ans. Que se passe t’il si nous indiquons que le patient que nous considérons à plus de 60 ans ? La probabilité d’avoir un cancer est-elle plus importante ?  Il suffit de double-cliquer sur la valeur « > 60.152 » de la variable Age et d’analyser les nouvelles probabilités :


Nouvelles probabilités

Grâce à la propagation de la nouvelle information, les distributions de probabilités de chaque nœud ont été mises à jours et nous voyons que la probabilité d’avoir un Cancer est passé de 3.89% à 7.70%.

Prenons le problème dans l’autre sens : qu’est ce qui caractérise les personnes ayant un cancer (sur les variables dont on a fait un monitoring) ? En cliquant sur la modalité « oui » de cancer nous avons :


image 19


Nous remarquons qu’il s’agit généralement de patients ayant plus de 60 ans (à 68.89%) et fumeurs (à 64.78 %).

La démarche est ici toute autre que celle décrite dans le chapitre précédent. Ici, le spécialiste ne cherche pas (seulement) à vérifier son modèle, mais plutôt à découvrir de la connaissance à partir de la base de données. BayesiaLab  propose donc un outil qui en quelques clics débouche vers des conclusions qui n’auraient jamais été aussi simple à découvrir en regardant les 10000 lignes composant la base de données.

BayesiaLab  permet d’automatiser ce type d’analyse pour une variable cible. Le résultat est résumé dans un rapport textuel. Le rapport est édité en sélectionnant Cancer comme variable cible, et en allant dans le menu Inférence, Rapport d’analyse de la cible.


image 20

Ce rapport reprend le contexte de l’analyse (les observations déjà effectuées), la distribution marginale de la cible, une liste triée des nœuds en fonction de leur apport d’information sur la variable Cancer, et enfin, le profil pour chaque modalité de Cancer. Ainsi, les patients ayant le cancer ont une radiographie anormale, ont généralement plus de 60 ans, ont bien souvent des difficultés respiratoires et sont majoritairement fumeurs.


3.5    Apprentissage non supervisé pour la découverte de nouveaux concepts (clustering, segmentation)

Outre la découverte de l’ensemble des associations présentes au sein des données, BayesiaLab  est doté d’algorithmes de clustering. Le but de ces algorithmes est la découverte de partitions naturelles des exemples décrits dans la base de données, partitions partageant un ensemble de propriétés communes. Le Menu Apprentissage permet d’accéder à l’assistant du clustering.

image 21

Deux méthodes s’offrent à l’utilisateur :

 

  1. Nombre de classes fixé : le nombre de classes (de partitions) est demandé.

  2. Sélection automatique du nombre de classes : recherche automatique du nombre de classes permettant le meilleur partitionnement. Cette recherche, qui s’effectue par le biais d’une marche aléatoire guidée, nécessite la spécification du nombre de partitions initial et du nombre de partitions que l’algorithme ne doit pas dépasser.


Ces méthodes sont ensuite paramétrables en spécifiant la taille des échantillons servant à l’apprentissage et le nombre de pas constituant la marche aléatoire. Concernant ce dernier paramètre, il est possible de le mettre à une valeur extrêmement élevée car la marche peut être stoppée à tout moment  par l’intermédiaire du feu rouge de la barre d’état image 13, tout en conservant la meilleure solution.

A l’issue de l’apprentissage, le rapport suivant est généré. Il résume les conditions et les résultats de l’apprentissage, affiche les distributions marginales des clusters obtenus triées par ordre d’importance, et les distributions de ces mêmes clusters sur l’ensemble d’apprentissage. Comme on peut le constater, ces deux distributions ne sont pas identiques, la première étant théorique, la seconde correspondant à la distribution obtenue en affectant à chaque exemple de la base le cluster ayant la probabilité maximale. Il se pourrait par exemple qu’une modalité ait une probabilité de 2% mais n’ai aucun exemple affecté sur la base, i.e. que cette modalité ne soit jamais prioritaire. En fait, ce type de modalité est supprimé dans l’algorithme segmentation de BayesiaLab .

La seconde partie du rapport affiche dans un premier temps la liste des nœuds triés relativement à leur apport d’information sur le nœud Cluster, puis, pour chaque modalité de la variable Cluster, le profil probabiliste de ces clusters. Dans le cas présent, 5 clusters ont été trouvés :

  1. Les patients en bonne santé

  2. Les patients souffrant de bronchite et étant majoritairement fumeur

  3. Les non fumeurs âgés n’ayant pas de problème respiratoire

  4. Les non fumeurs âgés souffrant de bronchite

  5. Les patients ayant le cancer ou la tuberculose

 

Rapport d'analyse

 

Rapport d'analyse


Ce rapport reprend en fait les fonctionnalités offertes par les différents outils d’analyse proposés dans le menu Inférence (cf. chapitre 4).


3.6    Apprentissage supervisé entièrement dédié à la caractérisation d'une variable particulière


BayesiaLab  propose un troisième type d’apprentissage de réseaux bayésiens à partir d’une base de données. Alors que les deux premiers (découverte d’associations et découverte de nouveaux concepts) sont des algorithmes dits « non supervisés », cette dernière catégorie d’algorithmes appartient aux algorithmes d’apprentissage « supervisés ». Cette dénomination provient du fait que l’induction du réseau bayésien est entièrement orientée pour la caractérisation d’un nœud particulier.

Apprentissage supervisé

BayesiaLab  propose plusieurs algorithmes de caractérisation. Pour illustrer cette fonctionnalité, nous laissons notre problème initial de maladie du poumon pour s’intéresser à une modélisation simplifiée du fonctionnement d’une voiture. Le réseau optimal ayant permis la génération des données (« Menu Base de données - Générer une base de données » en mode Validation) est le suivant :

image 25


Notre nœud cible est PuissanceBatterie.

Architecture naïve

Cet apprentissage consiste à construire un réseau Bayésien dans lequel le noeud cible est le père de tous les autres noeuds. Cette structure pose l’hypothèse forte (et généralement fausse) que la connaissance de la valeur de la cible rend chaque noeud indépendant des autres. Le faible nombre de probabilités à estimer rend cette structure très robuste et son apprentissage très rapide puisque la structure étant fixée, il y a juste les paramètres à estimer. La figure ci-dessous correspond au réseau naïf correspondant à PuissanceBatterie après analyse des arcs et positionnement automatique.


Architecture naïve

Architecture naïve augmentée

Cette architecture repose sur une architecture naïve, enrichie des relations entres les noeuds fils sachant la valeur du noeud cible pour permettre de relâcher l’hypothèse de l’architecture naïve d’indépendance sachant le nœud père. Cet algorithme permet ainsi l'obtention de résultats plus précis que ceux obtenus par l'architecture naïve, mais la recherche est plus coûteuse en temps.


Architecture naïve augmentée
Enfants & Epouses


Ici, le noeud cible est le père d'un sous-ensemble de noeuds ayant potentiellement d'autres parents (épouses). Cet algorithme présente l'avantage de mettre en évidence l'ensemble des noeuds étant indirectement liés à la cible. Le coût en temps est du même ordre que celui de l'architecture naïve augmentée.


image 28

Couverture de Markov

Algorithme de recherche des noeuds appartenant à la couverture de Markov de la cible : noeuds pères, fils et épouses. La recherche de cette structure, entièrement focalisée sur le noeud cible, permet d'obtenir le sous-ensemble des noeuds réellement pertinents dans un temps très largement inférieur aux temps des deux architectures Naïve Augmentée et Enfants & Epouses. Cette méthode constitue en outre un bon outil d'analyse d'une variable


image 29


Cet ensemble de nœuds appartenant à la couverture de Markov permet, s’ils sont observés, de rendre le nœud cible complètement indépendant de tous les autres nœuds.

Couverture de Markov augmentée

Couverture de Markov à laquelle se greffe une recherche non supervisée des relations probabilistes entre chacune des variables appartenant à la couverture de Markov. Cette recherche additionnelle entraîne un coût supplémentaire mais permet un gain en précision par rapport à la version simple. Dans notre exemple, de telles relations n’existant pas, le résultat est identique au précédent.

Evaluation des modèles obtenus

Une fois ces modèles supervisés appris, il est possible d’évaluer leurs performances sur un ensemble de tests (idéalement différent de celui ayant été utilisé pour l’apprentissage). Pour ce faire, en mode Validation, le menu Inférence propose l’item Evaluation Ciblée. Cette évaluation fournit : 

  1. la précision globale du réseau,

  2. trois matrices de confusion permettant de mesurer précisément les performances du modèle pour chaque modalité (nombre d’occurrences, fiabilité : proportion des cas où la prédiction de la valeur est correcte, et  précision : proportion des cas où la valeur réelle est bien prédite)

  3. une courbe de lift relative à une modalité cible. L’élaboration de cette courbe passe par le tri des éléments de la base en fonction de la probabilité prédite de la valeur cible (les plus probables apparaissant en début de liste). L’ordonnée est calculée ensuite comme le pourcentage des valeurs cibles réelles correctement prédites. Ainsi, si la modalité cible représente 10 % des cas, la courbe de lift optimal doit atteindre 100 %  après avoir traité 10 % des cas. Une courbe de lift d’un modèle étiquetant les cas de manière aléatoire n’atteindrait les 100 % qu’après avoir traité tous les cas (la courbe est alors la diagonale).

  4. une courbe ROC représentant en abscisse le taux de Faux positifs pour la modalité cible et en ordonnée le taux de Vrais positifs.


La fenêtre ci-dessous correspond à l’évaluation ciblée du réseau bayésien naïf.

Evaluation ciblée du réseau bayésien naïf