Вы находитесь на странице: 1из 35

Master 2 GIS MIS Aline CONSEIL Violaine FERANDEZ Nicolas FERRAFIAT Olivier MONTANGUON

Dcembre 2006 M2 STAT

Rseaux baysiens pour le diagnostic de l'hypothyrodie


Rsum : Nous cherchons dterminer les critres de la maladie de la thyrode, en particulier l'hypothyrodie. Pour cela, nous disposons d'une base de donnes de 3772 individus dont nous connaissons l'tat de sant et un certain nombre de critres qui pourraient jouer un rle sur le stade ou l'volution de la maladie.

Master 2 GIS MIS

Dcembre 2006

1.tude bibliographique sur les maladies de la thyrode..............................................................p3 2.Prparation de la base de donnes...............................................................................................p6 2.1.Slection de variables.....................................................................................................p6 2.2.Imputation de donnes manquantes.............................................................................p6 2.3.Discrtisation des donnes.............................................................................................p7 3.Les diffrents Rseaux Baysiens.................................................................................................p9 3.1.Le rseau naf...............................................................................................................p10 3.1.1.Prsentation 3.1.2.Rsultats 3.2.L'arbre de recouvrement minimal.............................................................................p12 3.2.1.Prsentation 3.2.2.Rsultats 3.3.Le rseau naf augment.............................................................................................p13 3.3.1.Prsentation 3.3.2.Rsultats 3.4.Ordonnancement des noeuds......................................................................................p15 3.4.1.Prsentation 3.4.2.Rsultats 3.5.L'algorithme PC...........................................................................................................p16 3.5.1.Prsentation 3.5.2.Rsultats 3.6.Le rseau naf mixte....................................................................................................p18 3.6.1.Prsentation 3.6.2.Rsultats Conclusion.......................................................................................................................................p20 Bibliographie et webographie........................................................................................................p21 Sommaire des annexes...................................................................................................................p22

Master 2 GIS MIS

Dcembre 2006

1. tude bibliographique sur les maladies de la thyrode


La thyrode ou glande thyrode est la plus volumineuse des glandes endocrines, endocrine signifiant scrtant des hormones . Elle scrte deux principales hormones : la T3 ou triiodothyronine la T4 ou thyroxine ou ttra-iodothyronine Ces deux hormones agissent sur le corps pour augmenter le mtabolisme basal, agir sur la synthse des protines et rendre le corps plus sensible aux catcholamines (telle l'adrnaline). En fait, les hormones T3 et T4 stimulent les mtabolismes lipidique, glucidique et protidique, ainsi que la croissance. Situe la face antrieure du cou, la thyrode se compose de deux lobes droit et gauche relis leur partie infrieure par l'isthme. Elle prsente deux types de rapports : les nerfs laryngs rcurrents qui passent en arrire et se terminent dans le larynx et les quatre glandes parathyrodes (petites glandes situes la face postrieure de la thyrode et jouant un rle dans le mtabolisme phosphocalcique).

Affectations thyrodiennes Le cancer de la thyrode se dveloppe habituellement sous la forme dun nodule situ au sein de la glande thyrode. C'est un cancer rare, plus frquent chez les sujets jeunes et 3 fois plus frquents chez la femme que chez l'homme. La gurison se produit dans 90 % des cas. Ce type de cancer reprsente environ 1% des cancers survenant dans la population gnrale en France. Son incidence annuelle est faible soit environ 2,5 pour 100 000 personnes. L'hyperthyrodie est dfinie par la scrtion d'une trop grande quantit d'hormones thyrodiennes dans l'organisme : thyroxine (T4) et tri-iodothyronine (T3). Il existe deux grands types d'hyperthyrodie. Dans le cas d'hyperthyrodies diffuses, toute la glande est augmente de volume avec la prsence d'un goitre et scrte des quantits anormales d'hormones. Il s'agit la plupart du temps de la maladie de Basedow au cours de laquelle s'associe aux signes cliniques de l'hyperthyrodie une saillie des globes occulaires. Dans le cas d'hyperthyrodies nodulaires, seule une partie de la glande est hyperscrtante, soit parce qu'il existe un nodule unique (adnome toxique), soit parce qu'il existe plusieurs nodules 3

Master 2 GIS MIS

Dcembre 2006

pathologiques (goitres multinodulaires htrognes toxiques). Pour ce qui est du traitement, il y a plusieurs solutions. Les anti-thyroidiens de synthse agissent en bloquant l'organification de l'iodure. De plus ils peuvent agir en priphrie, en bloquant la conversion de T4 en T3 et avoir une action immunosuppressive forte dose. Les corticodes agissent en inhibant la conversion priphrique de T4 en T3. L'iode 131 entrane une thyrodectomie isotopique d'effet retard. L'iode 131 ne peut tre utilis en cas de non-fixation isotopique, et est sans risque carcinogne ni gntique mais contreindiqu chez la femme enceinte. Globalement, pour les goitres volumineux, htrognes, plongeant ou fixant mal l'iode, on prconise la chirurgie et pour les sujets jeunes sans goitre, les sujets avec signes occulaires et les femmes enceintes, on administre des anti-thyroidiens de synthse. L'hypothyrodie est moins frquente. Elle se manifeste par la production insuffisante d'hormones thyrodiennes T4 et T3. Les symptmes de l'hypothyrodie peuvent tre un manque d'endurance, de force, de vitalit, une tension basse, la chute des cheveux et une prise de poids. A l'inverse de l'hyperthyrodie, elle s'installe de faon lente et progressive. La maladie concerne surtout la femme d'ge moyen. La grande majorit est reprsente par l'hypothyrodie primaire, autrement dit un dysfonctionnement au niveau de la glande thyrode mme. L'hypothyrodie secondaire est due un dysfonctionnement de l'hypophyse qui scrte alors en quantit insuffisante la TSH ou Hormone de Stimulation de la Thyrode. L'hypothyrodie compense est caractrise par un niveau lev de TSH avec les niveaux normaux ou seulement lgrement rduits d'hormones thyrodiennes. Parfois, aucun symptme ne se prsente ou il ne se prsente que des vagues symptmes associs cette condition. L'hypothyrodie se traite par l'administration quotidienne d'hormones thyrodiennes, sous forme de comprims, la vie durant. On administre aujourd'hui de la thyroxine synthtique qui contient peu d'impurets, a trs peu d'effets secondaires et ne produit presque jamais de raction allergique. Les causes de l'hypothyrodie L'hypothyrodie peut avoir plusieurs causes principales. Premirement, elle peut tre le rsultat du traitement du goitre exophtalmique par iode radioactif (prise de I131) ou par thyrodectomie. Deuximement, il peut s'agir du stade terminal de la thyrodie chronique d'Hashimoto (inflammation de la glande thyrode). Cela peut se prsenter spontanment au cours du goitre exophtalmique. Troisimement, elle peut tre le rsultat d'un dfaut congnital (absence de glande thyrode la naissance) Quatrimement, l'ablation chirurgicale de la glande thyrode (traitement du cancer de la thyrode) entrane ncessairement l'hypothyrodie

Master 2 GIS MIS

Dcembre 2006

Cinquimement, le lithium, couramment utilis pour stabiliser l'humeur et traiter les personnes maniaco-dpressives, peut causer l'hypothyrodie, particulirement chez les femmes d'ge moyen qui sont le plus susceptibles d'en tre atteintes. Par contre, l'hypothyrodie peut provoquer la dpression, le trouble mme que le traitement devrait soulager. Siximement, une personne hypopituitaire aura sans aucun doute des troubles d'hypothyrodie car cela se manifeste par l'absence totale d'hormones hypophysaires, ce qui entrane toutes les glandes endocrines ne pas fonctionner du tout. La grossesse, situation dlicate La grossesse est une situation o sexerce une forte contrainte sur la thyrode. On observe une augmentation de la synthse de TBG due la concentration leve en oestrognes qui a pour consquence une diminution de la concentration en T4 libre et une augmentation de la concentration en T4 totale (TT4). L'iode radioactif ne doit jamais tre utilis dans le cas d'une grossesse. En effet, aprs le troisime mois de gestation, la glande thyrodienne du foetus commence produire des hormones thyrodiennes et captera l'iode radioactif. Des mthodes de traitements autres que celle l'iode radioactif doivent donc tre utilises chez les femmes enceintes hyperthyrodiennes (antithyroidiens de synthse). Mesures - Diagnostics La quantit dhormones produites dpend d'autres glandes que la thyrode. Cest l'hypothalamus qui commande l'hypophyse de produire l'hormone TSH. son tour, lhormone TSH stimule la thyrode produire des hormones. On peut dtecter une hypo ou une hyperactivit de la glande thyrode en mesurant le taux de TSH dans le sang. En hypothyrodie, le taux de TSH est lev car lhypophyse ragit au manque dhormones thyrodiennes en scrtant davantage de TSH. Par ce moyen, lhypophyse tente de stimuler la thyrode produire plus dhormones. En situation dhyperthyrodie, c'est--dire lorsqu'il y a trop dhormones thyrodiennes, linverse se produit. Le taux de TSH est bas parce que lhypophyse tente de rduire la scrtion de la glande thyrode. La plupart des hormones thyrodiennes circulant dans le sang est lie des protines de transport. Or, seule une trs petite fraction de l'hormone circulante est libre (T4 0,03 % et T3 0,3%). Cette fraction libre est biologiquement active. Donc, mesurer les concentrations d'hormones thyrodiennes libres a une grande importance diagnostic. Les hormones thyrodiennes lies sont inactives. Ce qui compte, c'est le taux de T3 et T4 libres. C'est pourquoi la mesure de la thyroxine totale (TT4) du sang peut amener des conclusions errones.

Master 2 GIS MIS

Dcembre 2006

Changements dans la fonction thyrode pendant la grossesse et de la maladie thyrode :

Abrviations : TSH = hormone thyrode-stimulante; FT4 = thyroxine libre; FTI = index libre de thyroxine; TT4 = thyroxine totale; TT3 = triiodothyronine total; RT3U = prise de T3 de rsine.

2. Prparation de la base de donnes


2.1. Slection de variables
En observant le jeu de donnes, nous avons constat que certaines variables taient inutiles. En effet, la variable referal source n'apporte aucune information intressante concernant la maladie de la thyrode, puisqu'il s'agit de l'endroit o les donnes ont t rcoltes. En ce qui concerne la variable hypopytuitary, seules deux personnes sont concernes par ce phnomne dans l'chantillon d'apprentissage, et aucune ne l'est dans l'chantillon de test. De plus, la mesure du TBG ayant t effectue sur trs peu de personnes, ceci entrane qu'il y a de nombreuses donnes manquantes dans la variable TBG measured . Nous avons donc dcid de supprimer ces 4 variables pour la ralisation de notre projet. D'autre part, il n'y a que deux individus qui appartiennent la modalit 4 de la variable class (secondary_hypothyrroid), nous les avons galement supprims.

2.2. Imputation des donnes manquantes


En tudiant le jeu de donnes l'aide de SAS et de la proc means et univariate, nous avons pu remarquer qu'il y avait de nombreuses donnes manquantes. Pour y remdier, nous avons utilis la proc fastclust sous SAS qui permet de raliser une imputation de donnes. Nous avons maintenant une base de donnes propre, sans donnes manquantes. Cependant, le logiciel Matlab travaille sur des jeux de donnes uniquement numriques. Nous avons donc remplac les variables codes en caractres par des modalits numriques.

Master 2 GIS MIS Voici le code SAS qui nous a permis de raliser tout ce travail prparatoire :
* Etude prliminaire des donnes ; PROC MEANS data = Projet.Apprentissage; run; PROC MEANS data = Projet.Test; run; PROC UNIVARIATE data = Projet.Apprentissage; run; PROC UNIVARIATE data = Projet.Test; run; *===========================================================;

Dcembre 2006

* Imputation des donnes ; PROC FASTCLUS data = Projet.Apprentissage MAXCLUSTERS= 4 REPLACE = RANDOM IMPUTE OUT= Projet.dataapp; run; PROC FASTCLUS data = Projet.Test MAXCLUSTERS= 4 REPLACE = RANDOM IMPUTE OUT= Projet.datatest; run; *===========================================================; * Recodage de la variable sexe aprs imputation des donnes ; DATA Projet.APPRECODE; set Projet.Dataapp; if VAR2 >1.5 then VAR2 = 2; if VAR2 <1.5 then VAR2 = 1; run; DATA Projet.TESTRECODE; set Projet.Datatest; if VAR2 >1.5 then VAR2 = 2; if VAR2 <1.5 then VAR2 = 1; run;

2.3. Discrtisation des donnes


Rappelons qu'on peut appliquer le rseau baysien naf uniquement sur des donnes discrtes ou sur des donnes mixtes contenant des variables qualitatives et continues supposes gaussiennes. La base de donnes tant compose de quelques variables quantitatives (notamment les diffrentes mesures effectues), il a t ncessaire de discrtiser ces variables pour effectuer l'ensemble des rseaux baysiens, hormis celui que nous avons appel le rseau baysien naf mixte. Pour cela, nous avons opt pour la mthode suivante : nous avons calcul la mdiane, les quartiles 1 et 3 de chaque variable quantitative ; nous avons ensuite ralis 4 classes partir de ces quantiles. Ainsi nous obtenons des variables discrtises, composes de 4 classes avec un effectif important dans chacune d'elles.

Master 2 GIS MIS Voici le code SAS ayant permis la discrtisation des donnes :

Dcembre 2006

*===========================================================; *Calcul des quantiles pour les classes; PROC MEANS Q1 MEDIAN Q3 data = projet.APPRECODE; VAR VAR1 VAR18 VAR20 VAR22 VAR24 VAR26; run; *===========================================================; *Discrtisation de la base apprentissage; DATA projet.appdiscret; set projet.apprecode; if VAR1 <= 36 then VAR1 = 1; else if VAR1 > 36 & VAR1 <= 54 then VAR1 = 2; else if VAR1 > 54 & VAR1 <= 67 then VAR1 = 3; if VAR1 > 67 then VAR1 = 4; if VAR18 <= 0.595 then VAR18 = 1; else if VAR18 > 0.595 & VAR18 <= 1.5 then VAR18 = 2; else if VAR18 > 1.5 & VAR18 <= 2.8950657 then VAR18 = 3; else if VAR18 > 2.8950657 then VAR18 = 4; if VAR17 = 0 then VAR18 = 5; if VAR20 <= 1.6006831 then VAR20 = 1; else if VAR20 > 1.6006831 & VAR20 <= 2 then VAR20 = 2; else if VAR20 > 2 & VAR20 <= 2.3 then VAR20 = 3; else if VAR20 > 2.3 then VAR20 = 4; if VAR19 = 0 then VAR20 = 5; if VAR22 <= 88 then VAR22 = 1; else if VAR22 > 88 & VAR22 <= 103 then VAR22 = 2; else if VAR22 > 103 & VAR22 <= 124 then VAR22 = 3; else if VAR22 > 124 then VAR22 = 4; if VAR21 = 0 then VAR22 = 5; if VAR24 <= 0.89 then VAR24 = 1; else if VAR24 > 0.89 & VAR24 <= 0.98 then VAR24 = 2; else if VAR24 > 0.98 & VAR24 <= 1.08 then VAR24 = 3; else if VAR24 > 1.08 then VAR24 = 4; if VAR23 = 0 then VAR24 = 5; if VAR26 <= 93 then VAR26 = 1; else if VAR26 > 93 & VAR26 <= 106 then VAR26 = 2; else if VAR26 > 106 & VAR26 <= 123 then VAR26 = 3; else if VAR26 > 123 then VAR26 = 4; if VAR25 = 0 then VAR26 = 5; run;

Nous avons galement ralis ces oprations sur la base de test. Il est maintenant possible de raliser l'importation des deux bases de donnes sous Matlab.

Master 2 GIS MIS

Dcembre 2006

3. Les diffrents Rseaux Baysiens


Dans cette partie, nous prsenterons chaque rseau baysien utilis, ainsi que les rsultats obtenus pour ceux-ci. Nous avons excut diffrents programmes sur un chantillon de 500 individus de la base d'apprentissage, et au vu des rsultats obtenus (tous les individus taient classs dans le groupe 1), nous avons pens crer notre chantillon de faon particulire. Notre mthodologie s'appuie sur une cration d'chantillon utilise dans le domaine du datamining. Les individus ayant les modalits 2 et 3 tant peu nombreux (218 sur 2798 individus) dans l'chantillon d'apprentissage, nous avons dcid de tous les garder. Afin d'atteindre environ 500 individus pour notre chantillon d'apprentissage, nous avons complt cette sous-population par un certain nombre de personnes tires alatoirement parmi ceux qui possdaient la modalit CLASS = 1 ,. De cette manire, le programme peut mieux adapter son modle aux individus possdant la modalit CLASS =2 ou 3 , et ainsi mieux classer les individus de l'chantillon de test. Avec l'chantillon ainsi cr, nous obtenons de meilleurs rsultats pour les diffrents rseaux baysiens utiliss.(cf annexe 1 page 23 pour voir le code matlab) Maintenant, le but est de trouver quelle structure reprsentera le mieux notre problme. La premire tape est de mesurer l'adquation d'un rseau baysien un problme donn, d'associer un score chaque rseau baysien. Parmi les diffrents scores proposs, citons les critres AIC et BIC dont les principes peuvent s'appliquer aux rseaux baysiens :

Le second terme (la dimension) tient compte de la complexit du modle avec, entre autres, le nombre de paramtres ncessaires pour reprsenter les distributions de probabilits du rseau :

Quant au premier terme, la vraisemblance p(D|,B), elle mesure l'adquation du rseau baysien de structure B et de paramtres aux donnes D avec ^MV, les paramtres obtenus par maximum de vraisemblance. La tche suivante consiste trouver le rseau qui donnera le meilleur score. Pour rsoudre ce problme, nous avons propos un certain nombre de modles formels naboutissant pas ncessairement une solution (heuristiques) .

Master 2 GIS MIS

Dcembre 2006

3.1. Le rseau naf


3.1.1. Prsentation Le classifieur de Bayes naf est directement issu de l'application de la rgle de dcision de Bayes en rajoutant l'hypothse d'indpendance conditionnelle des symptmes X conditionnellement au diagnostic Diag :

Cela nous permet de rcrire la loi jointe de la faon suivante :

Les implmentations classiques du classifieur de Bayes naf considrent que toutes les variables sont discrtes. Un des inconvnients des rseaux baysiens nafs est le grand nombre de paramtres estimer, alors que dans la plupart des cas, le nombre de donnes disponibles est faible. Pour y faire face, il est possible de modliser les densits de probabilit conditionnelle :

par une fonction OU bruit du type :

(cf annexe 2 page 24 pour voir le code matlab)

10

Master 2 GIS MIS 3.1.2. Rsultat Voici la matrice de confusion obtenue pour ce rseau baysien :

Dcembre 2006

Ce qui nous donne une probabilit de bon classement de 0,87 et un score BIC de -5894. Regardons le pourcentage d'individus bien classs. L'algorithme classe correctement 88% des personnes saines observes, 73% des hypothyrodies compenses et 94% des hypothyrodies primaires. A premire vue, cet algorithme rend de bons rsultats Voici le graphe associ au rseaux baysien naf discret

Ce rseau baysien naf a une structure simple deux niveaux, c'est--dire avec d'un ct les symptmes, et de l'autre les diagnostics (class). Mais la plupart du temps, le problme rsoudre est plus complexe modliser et la connaissance de certaines relations de causalit permet de construire un rseau plus intelligent . Cette connaissance peut tre obtenue grce un expert du domaine, ou partir de donnes obtenues grce des mthodes d'apprentissage de structure. 11

Master 2 GIS MIS

Dcembre 2006

3.2. L'arbre de recouvrement minimal


3.2.1. Prsentation On peut tout d'abord se limiter l'espace des arbres. Il s'agit d'une mthode drive de la recherche de l'arbre de recouvrement de poids minimal. On cherche le meilleur arbre passant par tous les noeuds, c'est--dire maximisant un score dfini pour chaque arbre possible. On construit donc l'arbre passant par les artes de poids maximum. Cet arbre n'est pas orient. Il faut l'orienter en choisissant un noeud racine arbitraire et en dirigeant les artes partir de ce noeud.
(cf annexe 3 page 26 pour voir le code matlab)

3.2.2. Rsultat Voici la matrice de confusion obtenue pour ce rseau baysien :

Ce qui nous donne une probabilit de bon classement de 0,87 et un score BIC de -6645. L'algorithme classe correctement 89% des individus non malades observs, 73% des hypothyrodies compenses et 55% des hypothyrodies primaires. A premire vue, cet algorithme rend de bons rsultats pour les non malades et les hypothyrodies compenses, mais il classe assez mal les hypothyrodies primaires. Cela dit, il les classe la plupart du temps comme tant malades (groupe 2 ou 3).

12

Master 2 GIS MIS Voici le graphe associ l'arbre de recouvrement minimal :

Dcembre 2006

Nous avons choisi comme noeud racine la variable class pour l'orientation du graphe. D'aprs ce graphe, nous pouvons dire que l'ge joue un rle important sur le fait d'avoir ou non la maladie.

3.3. Le rseau naf augment


3.3.1. Prsentation Il s'agit de rajouter des dpendances directes entre les variables considres indpendantes, conditionnellement la classe dans le modle naf. Il s'obtient en cherchant le meilleur arbre reliant les observations, puis en reliant toutes les observations la classe comme pour un rseau baysien naf classique.
(cf annexe 4 page 28 pour voir le code matlab)

13

Master 2 GIS MIS 3.3.2.Rsultat Voici la matrice de confusion obtenue pour ce rseau baysien :

Dcembre 2006

Ce qui nous donne une probabilit de bon classement de 0,87 et un score BIC de -6261. L'algorithme classe correctement 88% des gens non malades observs, 68% des hypothyrodies compenses et 74% des hypothyrodies primaires. Cet algorithme rend de bons rsultats pour les non malades et les hypothyrodies primaires, mais il classe assez mal les hypothyrodies compenses. Cependant, il les classe la plupart du temps comme tant quand mme malades (groupe 2 ou 3). Voici le graphe associ au rseau naf augment :

14

Master 2 GIS MIS

Dcembre 2006

3.4.Ordonnancement des noeuds


3.4.1. Prsentation D'autres mthodes limitent l'espace de recherche en fixant un ordre de parcours des noeuds, c'est--dire que si Xj est avant Xi , il ne peut y avoir d'arc de Xi vers Xj . Puis on cherche la meilleure configuration possible de parents pour chaque noeud parmi les noeuds suivants de la liste. Cela permet de rduire le nombre de structures possibles. Parmi ces mthodes, l'algorithme K2 est le plus connu et est assez reprsentatif des problmes de diagnostic mdical. On utilise en fait les connaissances de l'expert pour dterminer une srie de contraintes simples sur l'ordonnancement des noeuds.
(cf annexe 5 page 30 pour voir le code matlab)

3.4.2. Rsultat Voici la matrice de confusion obtenue pour ce rseau baysien :

Nous obtenons une probabilit de bon classement de 0,86 et un score BIC de -5599. L'algorithme classe correctement 86% des non malades observs, 83% des hypothyrodies compenses et 81% des hypothyrodies primaires. Cet algorithme rend de bons rsultats pour tous les groupes.

15

Master 2 GIS MIS Voici le graphe associ l'algorithme K2 :

Dcembre 2006

3.5. L'algorithme PC
3.5.1. Prsentation Le principe est de construire un graphe non orient reprsentant les indpendances conditionnelles entre variables. Deux mthodes peuvent tre utilises. La premire en partant du graphe vide et en rajoutant des artes, la deuxime en partant du graphe complet et supprimant des artes.
(cf annexe 6 page 32 pour voir le code matlab)

16

Master 2 GIS MIS 3.5.2.Rsultat Voici la matrice de confusion obtenue pour ce rseau baysien :

Dcembre 2006

Cela nous donne une probabilit de bon classement de 0,85 et un score BIC de -8873. L'algorithme classe correctement 89% des non malades observs, 73% des hypothyrodies compenses et 6% des hypothyrodies primaires. Cet algorithme rend de bons rsultats pour les non malades et les hypothyrodies compenses mais il classe trs mal les hypothyrodies primaires. De plus, l'algorithme a beaucoup de mal classer des sujets dans le groupe 3. Voici le graphe associ l'algorithme PC :

17

Master 2 GIS MIS

Dcembre 2006

3.6. Le rseau naf mixte


3.6.1. Prsentation Ici, nous avons utilis la modlisation gaussienne conditionnelle. Dans ce cas, il est possible de ne pas passer par l'tape de discrtisation des donnes comme nous l'avons fait pour le rseau baysien naf discret. Nous utilisons l'hypothse de normalit des variables explicatives continues conditionnellement la variable class. Cela permet de rduire le nombre de paramtres estimer, c'est--dire que l'on ne calcule qu'une moyenne et qu'une variance.
(cf annexe 7 page 34 pour voir le code matlab)

3.6.2. Rsultats Voici la matrice de confusion obtenue pour ce rseau baysien :

Ceci nous donne une probabilit de bon classement de 0,93 et un score BIC de -2981. L'algorithme classe correctement 94% des non malades observs, 70% des hypothyrodies compenses et 94% des hypothyrodies primaires. Cet algorithme rend de bons rsultats pour les non malades et les hypothyrodies primaires et relativement bien les hypothyrodies compenses, mais 30% de ces derniers sont considrs comme non malades par l'algorithme ce qui nous semble dlicat. Donc, malgr un score BIC bien meilleur que pour les autres rseaux, nous pouvons mettre des rserves quant la relle pertinence de cet algorithme.

18

Master 2 GIS MIS

Dcembre 2006

Voici le graphe associ au rseau baysien naf mixte : Les variables continues sont modlises par des ronds et les discrtes par des carrs.

19

Master 2 GIS MIS

Dcembre 2006

Conclusion
Dans ce projet, nous avons utilis plusieurs algorithmes pour la mise en oeuvre de rseaux baysiens, dans le cadre du diagnostic de l'hypothyrodie. Le rseau baysien naf nous a permis d'obtenir de bons rsultats facilement. Cela dit, il est possible d'obtenir une structure rpondant plus prcisment au problme. Le rseau baysien associ l'algorithme K2, par exemple, permet un meilleur classement des individus, notamment grce sa capacit classer tous les malades comme tant effectivement malades. Et son score BIC est bien plus intressant. Le rseau baysien naf mixte rend galement de bons rsultats avec un BIC trs favorable. Mais il classe beaucoup d'individus malades parmi les non malades. Le principal est de bien dfinir nos objectifs. Nous avons choisi de classer nos individus selon leur type de maladie. Nous aurions pu envisager de regrouper les trois catgories de maladie (hypothyrodie primaire, secondaire et compenses) et ainsi de classer les personnes malades ou saines. Mais les rsultats de bon classement que nous trouvons pour les diffrents rseaux baysiens sont associs une rgle de dcision sans rejet. Une mthode plus rigoureuse aurait pu tre mise en application, celle d'associer une rgle de dcision avec rejet. Cette mthode s'appuie sur un seuil reprsentant le taux de rejet. Il est alors possible de connatre le taux de points rejets pour un seuil (gnralement 99%) de bonne classification. En suivant cette mthode, la rgle de dcision serait la suivante : - Si alors la dcision est le rejet - Sinon la dcision = Avec cette mthode, on aurait pu s'attendre des rsultats plus exploitables. On aurait pu vrifier l'hypothse plausible suivante : le rseau baysien naf rejette plus de points que les autres rseaux pour un seuil de 99%. On aurait pu mieux classer les rseaux selon leur puissance. <

20

Master 2 GIS MIS

Dcembre 2006

Bilbliographie et webographie

http://www.mc.be/fr/100/votre_sante/autres_maladies/les_maladies_de_la_thyroide/quelles_sont_le s_maladies_de_la_thyroide.jsp?ComponentId=15043&SourcePageId=15047 http://fr.wikipedia.org/wiki/Thyro%C3%AFde http://www.passeportsante.net/fr/Maux/Problemes/Fiche.aspx?doc=hyperthyroidie_pm http://www.thyroid.ca/

21

Master 2 GIS MIS

Dcembre 2006

Annexes

Annexe 1 : Cration des bases d'apprentissage et de test...........................................................p23 Annexe 2 : Cration d'un rseau naf...........................................................................................p24 Annexe 3 : Cration de l'arbre optimum.....................................................................................p26 Annexe 4 : Cration d'un rseau naf augment..........................................................................p28 Annexe 5 : Cration d'un algorithme K2.....................................................................................p30 Annexe 6 : Cration d'un algorithme PC.....................................................................................p32 Annexe 7 : Cration d'un rseau baysien naf mixte.................................................................p34

22

Master 2 GIS MIS Annexe 1 : Cration des bases d'apprentissage et de test


% Recherche de modles sur la base discrtise appr.mat % ----------------------------------------------------% nb de noeuds du rseau : C = 26 % ------------------------------% Cration de l'chantillon d'environ 500 individus % -------------------------------------------------% Individus ayant la modalit "1" de la variable CLASS apprg1=find(appr(:,1)==1) appr1=appr(apprg1,:) % Individus ayant la modalit "2" de la variable CLASS apprg2=find(appr(:,1)==2) % Individus ayant la modalit "3" de la variable CLASS apprg3=find(appr(:,1)==3) appr23=appr([apprg2;apprg3],:) % Slection alatoire des individus ayant la modalit "1" w = rand(2580,1)<282/2580; ech=[]; j = 0; for i=1:length(w) if w(i)==1 j =j +1; ech(j,:)= appr1(i,:); end end % Cration de l'chantillon d'apprentissage appr = [ech;appr3] [L,C]=size(appr);

Dcembre 2006

% la dernire colonne correspondant la variable CLASS a t dplace en premier % -----------------------------------------------------------------------------appr2=zeros(L,C); appr2(:,1)=appr(:,C); appr2(:,(2:end))=appr(:,(1:end-1)); appr=appr2; [L,C]=size(test); test2=zeros(L,C); test2(:,1)=test(:,C); test2(:,(2:end))=test(:,(1:end-1)); test=test2;

23

Master 2 GIS MIS Annexe 2 : Cration d'un rseau naf

Dcembre 2006

% cration d'un RESEAU NAIF o CLASS est le parent des autres noeuds % -----------------------------------------------------------------% dfinition de la matrice d'adjacence, c'est dire des arcs % --> matrice carre de taille CxC contenant des 1 dans la premiere ligne, % cad qu'elle cre un lien entre la variable class et les autres dag=zeros(C); dag(1,(2:C))=1; % Vecteur de numrotation des variables : on dfinit l'ordre des noeuds discrete_nodes=1:C; % Taille des noeuds : nombre de modalits de chaque variable node_sizes=max(appr(:,(1:C))) % Fabrication du rseau bayesien bnet = mk_bnet(dag,node_sizes,discrete_nodes); % nomme les noeuds names={'class','Age','Sex','OT','QOT','M','sick','P','surg','Treat','hypo',' hyper','L','G','tum','psy','TSH','T3','TT4','T4U','FTI'}; % dfinit la forme des noeuds pour la reprsentation graphique du rseau carre_rond=[1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1]; % trace le rseau baysien draw_graph(bnet.dag,names,carre_rond); % Saisie des tables de probabilits conditionnelles de chaque noeud % : faux(1) puis vrai(2), attention l'ordre % ----------------------------------------------------------------% TABULAR_CPD cr une distribution alatoire multinomiale % de probabilits conditionelles (CPT) for i=1:C, bnet.CPD{i}=tabular_CPD(bnet,i); end; % apprentissage (=estimation) des paramtres sur le fichier apprentissage bnet=learn_params(bnet,appr'); % Extraction et affichage des tables de probabilits estimes % ----------------------------------------------------------% Extraction des paramtres thoriques : CPT=cell(1,C); % Structure des tables de probabilits conditionnelles associes % chaque variable for i=1:C, s=struct(bnet.CPD{i}); CPT{i}=s.CPT end; % Affichage des tables de probabilits conditionnelles celldisp(CPT)

24

Master 2 GIS MIS


% Validation du RESEAU NAIF sur le fichier test % --------------------------------------------% On commence par crer un arbre de jonction engine=jtree_inf_engine(bnet);

Dcembre 2006

[LL,CC] = size(test); % Initialise le vecteur de cellules "evidence" % on ajoute des probabilits connues du rseau s'il y en a (ici pas d'vidence) evidence=cell(1,C); tic for m=1:LL, engine2=engine; % Pour chaque exemple on reinitialise engine2 for j=2:C, evidence{j}=[test(m,j)]; % On spcifie au rseau les vidences entres [engine2,loglik]=enter_evidence(engine2,evidence); % On extrait la probabilit marginale correspondant la variable 1 marg=marginal_nodes(engine2,1); end; p(m,1)=marg.T(1); % Extrait la proba que CLASS=1 p(m,2)=marg.T(2); % Extrait la proba que CLASS=2 p(m,3)=marg.T(3); % Extrait la proba que CLASS=3 toc end; % Calcul de la probabilit d'appartenance une classe maximale pour un individu et % de la modalit de CLASS correspondant for i=1 : LL [maxi(i),indice(i)]=(max(p(i,:))); end % Extrait les classes dans lesquelles les individus sont vraiment q1=test(:,1); % Matrice de confusion % -------------------conf=zeros(3); % Calcul de la matrice de confusion for i=1:3; for j=1:3 conf(i,j)=length(find(indice==j & q1'==i)); end end conf % Calcul de la probabilit de bon classement % -----------------------------------------pct=(conf(1,1)+conf(2,2)+conf(3,3))/length(test) % Evaluation du score BIC pour ce rseau % -------------------------------------G=cell(1,1); G{1}=dag score=score_dags(appr',node_sizes,G,'scoring_fn','bic')

25

Master 2 GIS MIS Annexe 3 : Cration de l'arbre optimum

Dcembre 2006

% Recherche d'un ARBRE OPTIMUM : j est le parent de i % --------------------------------------------------score_mat=zeros(C); for i=1:C, for j=i+1:C, % SCORE_FAMILY : Compute the score of a node and its parents given completely observed data score_mat(i,j)=score_family(i,[],'tabular','bic',node_sizes,1:C,appr ',[]) score_family(i,[j],'tabular','bic',node_sizes,1:C,appr',[]); end; end; % Trouve l'arbre de recouvrement minimal utilisant l'algorithme Prim A=zeros(C) A=minimum_spanning_tree(score_mat) % On extrait la partie suprieure triangulaire de A d=[0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1] dag2=zeros(C); dag2(1,:)=d for i=2:C, for j=i+1:C, dag2(i,j)=A(i,j); end; end; % % % % On oriente l'arbre en choisissant le noeud 1 comme racine de l'arbre T est une "sparse matrix", une matrice creuse et peut donc etre utilis en paramtre d'entre comme une matrice d'adjacence pour draw_graph et mk_bnet

% MK_ROOTED_TREE Make a directed, rooted tree out of an undirected tree. T=mk_rooted_tree(A,1); % Reprsentation de l'arbre figure; draw_graph(T,names,carre_rond); % Apprentissage des paramtres % ---------------------------bnet2=mk_bnet(T,node_sizes,discrete_nodes); for i=1:C, bnet2.CPD{i}=tabular_CPD(bnet2,i); end; bnet2=learn_params(bnet2,appr'); CPT2=cell(1,C); for i=1:C, s=struct(bnet2.CPD{i}); CPT2{i}=s.CPT end; celldisp(CPT2)

26

Master 2 GIS MIS


% Validation de l'ARBRE OPTIMUM sur le fichier test % ------------------------------------------------% On calcule l'arbre de jonction engine=jtree_inf_engine(bnet2);

Dcembre 2006

[LL,CC] = size(test); evidence=cell(1,C); tic for m=1:LL, engine2=engine; % pour chaque exemple on reinitialise engine2 for j=2:C, evidence{j}=[test(m,j)]; [engine2,loglik]=enter_evidence(engine2,evidence); marg=marginal_nodes(engine2,1);% on extrait la marge correspondant la variable 1 end; p(m,1)=marg.T(1); % on extrait la proba que CLASS=1 p(m,2)=marg.T(2); % on extrait la proba que CLASS=2 p(m,3)=marg.T(3); % on extrait la proba que CLASS=3 toc end; % Calcul de la probabilit maximale pour un individu et de la modalit de % CLASS correspondant for i=1 : LL [maxi2(i),indice2(i)]=(max(p(i,:))); end % Extrait les classes dans lesquelles les individus sont vraiment q2=test(:,1); % Matrice de confusion % -------------------conf2=zeros(3); for i=1:3; for j=1:3 conf2(i,j)=length(find(indice2==j & q2'==i)); end end conf2 % Calcul de la probabilit de bon classement % -----------------------------------------pct2=(conf2(1,1)+conf2(2,2)+conf2(3,3))/length(test) % Evaluation du score BIC pour ce rseau % -------------------------------------G2=cell(1,1); G2{1}=dag2; score2 = score_dags(appr',node_sizes,G2,'scoring_fn','bic')

27

Master 2 GIS MIS Annexe 4 : Cration d'un rseau naf augment


% cration d'un RESEAU NAIF AUGMENTE % ----------------------------------

Dcembre 2006

% On commence par chercher un arbre optimum sur les variables 2 26 % On lui associe la matrice d'adjacence A1 en faisant minimum spanning tree : % une matrice 25*25 sur les var 2 26 % pour le reseau naif augment, on lui ajoute un lien de 1 vers 2 26: A2 % On fait l'apprentissage des paramtres

score_mat3=zeros(C-1); for i=1:C-1, for j=(i+1):C-1, score_mat3(i,j)=score_family(i,[],'tabular','bic',node_sizes(:,2:C),1 :(C-1),appr(:,2:C)',[])score_family(i,[j],'tabular','bic',node_sizes(:,2:C),1:(C-1),appr(:,2:C)',[]); % o j est le parent de i : c'est la formule oppose de ce qu'on utilise d'habitude, on prend % d'abord i tout seul et ensuite i avec j, ce qui fait que quand on extrait le min on a le max end; end; % recherche de l'arbre de poids maximum dag3=minimum_spanning_tree(score_mat3); A2=zeros(C); A2(1,2:C)=1; A2(2:C,2:C)=dag3(1:C-1,1:C-1); A3=zeros(C) for i=1:C, for j=(i+1):C, A3(i,j)=A2(i,j); end; end; % Apprentissage des paramtres % ---------------------------bnet3=mk_bnet(A3,node_sizes,discrete_nodes); for i=1:C, bnet3.CPD{i}=tabular_CPD(bnet3,i); end; bnet3=learn_params(bnet3,appr'); CPT3=cell(1,C); for i=1:C, s=struct(bnet3.CPD{i}); CPT3{i}=s.CPT; end; celldisp(CPT3) % Affichage du graphe % ------------------draw_graph(bnet3.dag,names,carre_rond)

28

Master 2 GIS MIS


% Validation du RESEAU NAIF AUGMENTE sur le fichier test % ------------------------------------------------% Arbre de jonction engine=jtree_inf_engine(bnet3);

Dcembre 2006

[LL,CC] = size(test); evidence=cell(1,C); tic for m=1:LL, engine3=engine; % pour chaque exemple on reinitialise engine2 for j=2:C, evidence{j}=[test(m,j)]; [engine3,loglik]=enter_evidence(engine3,evidence); marg=marginal_nodes(engine3,1);% on extrait la marge correspondant la variable 1 end; p3(m,1)=marg.T(1); % on extrait la proba que CLASS=1 p3(m,2)=marg.T(2); % on extrait la proba que CLASS=2 p3(m,3)=marg.T(3); % on extrait la proba que CLASS=3 toc end; % Calcul de la probabilit maximale pour un individu et de la modalit de % CLASS correspondant for i=1 : LL [maxi3(i),indice3(i)]=(max(p3(i,:))); end % Extrait les classes dans lesquelles les individus sont vraiment q3=test(:,1); % Matrice de confusion % -------------------conf3=zeros(3); for i=1:3; for j=1:3 conf3(i,j)=length(find(indice3==j & q3'==i)); end end conf3 % Calcul de la probabilit de bon classement % -----------------------------------------pct3=(conf3(1,1)+conf3(2,2)+conf3(3,3))/length(test) % Evaluation du score BIC pour ce rseau % -------------------------------------G3=cell(1,1); G3{1}=A3; score3 = score_dags(appr',node_sizes,G3,'scoring_fn','bic')

29

Master 2 GIS MIS Annexe 5 : Cration d'un algorithme K2


% cration d'un ALGORITHME K2 % ---------------------------

Dcembre 2006

% On fournit un ordre des noeuds, ici c'est l'ordre fourni par l'arbre optimum order=topological_sort(full(T)) dag4=zeros(C); dag4 = learn_struct_K2(appr', node_sizes, order,'scoring_fn', 'bic','verbose','yes'); % Affichage du graphe draw_graph(dag4,names,carre_rond); % Apprentissage des paramtres % ---------------------------bnet4=mk_bnet(dag4,node_sizes,discrete_nodes); for i=1:C, bnet4.CPD{i}=tabular_CPD(bnet4,i); end; bnet4=learn_params(bnet4,appr'); CPT4=cell(1,C); for i=1:C, s=struct(bnet4.CPD{i}); CPT4{i}=s.CPT end; celldisp(CPT4) % Validation de l'ALGORITHME K2 sur le fichier test % ------------------------------------------------% Arbre de jonction engine=jtree_inf_engine(bnet4); [LL,CC] = size(test); evidence=cell(1,C); for m=1:LL, engine4=engine; % pour chaque exemple on reinitialise engine2 for j=2:C, evidence{j}=[test(m,j)]; [engine4,loglik]=enter_evidence(engine4,evidence); marg=marginal_nodes(engine4,1);% on extrait la marge correspondant la variable 1 end; p4(m,1)=marg.T(1); % on extrait la proba que CLASS=1 p4(m,2)=marg.T(2); % on extrait la proba que CLASS=2 p4(m,3)=marg.T(3); % on extrait la proba que CLASS=3 end; % Calcul de la probabilit maximale pour un individu et de la modalit de % CLASS correspondant for i=1 : LL [maxi4(i),indice4(i)]=(max(p4(i,:))); end % Extrait les classes dans lesquelles les individus sont vraiment q4=test(:,1);

30

Master 2 GIS MIS


% Matrice de confusion % -------------------conf4=zeros(3); for i=1:3; for j=1:3 conf4(i,j)=length(find(indice4==j & q4'==i)); end end conf4 % Calcul de la probabilit de bon classement % -----------------------------------------pct4=(conf4(1,1)+conf4(2,2)+conf4(3,3))/length(test) % Evaluation du score BIC pour ce rseau % -------------------------------------G4=cell(1,1); G4{1}=dag4; score4 = score_dags(appr',node_sizes,G4,'scoring_fn','bic')

Dcembre 2006

31

Master 2 GIS MIS Annexe 6 : Cration d'un algorithme PC


% cration d'un ALGORTIHME PC % --------------------------% algo PC : recherche de causalit

Dcembre 2006

en utilisant des tests du chi2

% P est la matrice d'adjacence, o P(i,j) = -1 s'il y a i->j, % et P(i,j) = P(j,i) = 1 s'il y a i <-> j cad qu'on obtient un graphe % partiellemnt dirig [P,G]=learn_struct_pdag_pc('cond_indep_chisquare', C, 2, appr'); % calcule les indpendances conditionnelles sur le critre du chi2 % Cration d'une instantiation du PDAG, on obtient un rseau partiellement orient PP=cpdag_to_dag(P) % PP est un quivalent de Markov (rseau partiellement orient) PP=abs(PP); prcdemment % prend la valeur absolue pour avoir un dag comme

% Affichage du rseau draw_graph(PP,names,carre_rond); dag5=zeros(C); for i=1:C, for j=i+1:C-1, dag5(i,j)=PP(i,j) end; end; % Apprentissage des paramtres % ---------------------------bnet5=mk_bnet(dag5,node_sizes,discrete_nodes); for i=1:C, bnet5.CPD{i}=tabular_CPD(bnet5,i); end; bnet5=learn_params(bnet5,appr'); CPT5=cell(1,C); for i=1:C, s=struct(bnet5.CPD{i}); CPT5{i}=s.CPT end; celldisp(CPT5) % Validation de l'ALGORITHME PC sur le fichier test % ------------------------------------------------% Arbre de jonction engine=jtree_inf_engine(bnet5); [LL,CC] = size(test); evidence=cell(1,C); for m=1:LL, engine5=engine; % pour chaque exemple on reinitialise engine2 for j=2:C, evidence{j}=[test(m,j)];

32

Master 2 GIS MIS

Dcembre 2006

[engine5,loglik]=enter_evidence(engine5,evidence); marg=marginal_nodes(engine5,1);% on extrait la marge correspondant la variable 1 end; p5(m,1)=marg.T(1); % on extrait la proba que CLASS=1 p5(m,2)=marg.T(2); % on extrait la proba que CLASS=2 p5(m,3)=marg.T(3); % on extrait la proba que CLASS=3 end; % Calcul de la probabilit maximale pour un individu et de la modalit de % CLASS correspondant for i=1 : LL [maxi5(i),indice5(i)]=(max(p5(i,:))); end % Extrait les classes dans lesquelles les individus sont vraiment q5=test(:,1); % Matrice de confusion % -------------------conf5=zeros(3); for i=1:3; for j=1:3 conf5(i,j)=length(find(indice5==j & q5'==i)); end end conf5 % Calcul de la probabilit de bon classement % -----------------------------------------pct5=(conf5(1,1)+conf5(2,2)+conf5(3,3))/length(test) % Evaluation du score BIC pour ce rseau % -------------------------------------G5=cell(1,1); G5{1}=dag5; score5 = score_dags(appr',node_sizes,G5,'scoring_fn','bic')

33

Master 2 GIS MIS Annexe 7 : Cration d'un rseau baysien naf mixte
% cration du rseau : relie toutes les variables la classe CLASS dag=zeros(C); dag(1,(2:C))=1; % initialisation de la taille des noeuds ns=ones(1,C);

Dcembre 2006

% Vecteur de numrotation des variables : on dfinit l'ordre des noeuds % Taille des noeuds : nombre de modalits de chaque variable %1 pour les var continues % dfinition des noeuds continus cnodes=[2 17 18 19 20 21]; dnodes=mysetdiff(1:C,cnodes) % taille des noeuds discrets ns(dnodes)=max(appr(:,dnodes)); %construction du rseau bnet6=mk_bnet(dag,ns,dnodes) names={'class','Age','Sex','OT','QOT','M','sick','P','surg','Treat','hypo','hype r','L','G','tum','psy','TSH','T3','TT4','T4U','FTI'}; carre_rond=[1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0] %dessin du rseau draw_graph(bnet6.dag,names,carre_rond) %dfinition des probas des variables discrtes bnet6.CPD{1}=tabular_CPD(bnet6,1) for i=3:16, bnet6.CPD{i}=tabular_CPD(bnet6,i); end; %dfinition des probas des var continues bnet6.CPD{2}=gaussian_CPD(bnet6,2) for i=17:21, bnet6.CPD{i}=gaussian_CPD(bnet6,i); end; % apprentissage partir de la base d'apprentissage bnet6=learn_params(bnet6,appr') % Validation du RESEAU NAIF MIXTE sur le fichier test % ------------------------------------------------% On calcule l'arbre de jonction engine=jtree_inf_engine(bnet6); [LL,CC] = size(test); evidence=cell(1,C); tic for m=1:LL, engine6=engine; % pour chaque exemple on reinitialise engine2 for j=2:C, evidence{j}=[test(m,j)]; end;

34

Master 2 GIS MIS

Dcembre 2006

[engine6,loglik]=enter_evidence(engine6,evidence); marg=marginal_nodes(engine6,1);% on extrait la marge correspondant la variable 1 p6(m,1)=marg.T(1); % on extrait la proba que CLASS=1 p6(m,2)=marg.T(2); % on extrait la proba que CLASS=2 p6(m,3)=marg.T(3); % on extrait la proba que CLASS=3 toc end; % Calcul de la probabilit maximale pour un individu et de la modalit de % CLASS correspondant for i=1 : LL [maxi6(i),indice6(i)]=(max(p6(i,:))); end % Extrait les classes dans lesquelles les individus sont vraiment q6=test(:,1); % Matrice de confusion % -------------------conf6=zeros(3); for i=1:3; for j=1:3 conf6(i,j)=length(find(indice6==j & q6'==i)); end end conf6 % Calcul de la probabilit de bon classement % -----------------------------------------pct6=(conf6(1,1)+conf6(2,2)+conf6(3,3))/length(test) % Evaluation du score BIC pour ce rseau % -------------------------------------G6=cell(1,1); G6{1}=dag; score6 = score_dags(appr',ns,G6,'bic')

35

Вам также может понравиться