TP — Séance 5 — L’IA qui doute

Coupures de courant à Kaolack, Bouki, et un premier Naive Bayes appris

TP de la séance 5 d’Introduction à l’intelligence artificielle : raisonner sous incertitude : probabilités, Bayes, réseaux bayésiens.
Auteur

Dr. El Hadji Bassirou TOURÉ · DMI/FST/UCAD

ImportantObjectif

Programmer les outils de la séance et les appliquer à des données nouvelles : jointe, marges et conditionnelles d’un journal de coupures ; Bayes séquentiel pour trouver la cause d’une panne ; croyances sur Bouki dans une grotte \(5\times5\) ; requêtes, d-séparation et élimination de variables dans un réseau de sept variables ; échantillonnage par rejet ; enfin, un classifieur Naive Bayes dont les probabilités sont estimées sur DataSANTÉ-221. Durée : une séance de TP (2 à 3 heures).

Mise en place

Le code de départ est le notebook TP_S05_depart.ipynb, dans l’archive TP_S05_code_depart.zip, avec le fichier datasante221.csv. Il demande Python 3.10 ou plus récent et matplotlib.

unzip TP_S05_code_depart.zip
cd code_depart
jupyter lab TP_S05_depart.ipynb

Les cellules marquées # A COMPLETER contiennent des ... à remplacer par le code demandé ; la cellule qui suit affiche les résultats que la fiche interroge. Les fonctions reprennent celles du cours (bayes, observer, prob, bloque, d_separe, facteur, produit, sommer, elimination). À rendre : le notebook exécuté, avec les réponses aux questions dans des cellules de texte.

Étape 1 : le journal des coupures de Kaolack

Un habitant de Kaolack a noté pendant 365 jours la météo (orage, forte chaleur, temps normal) et s’il y a eu une coupure de courant.

  1. Compléter jointe_de, marginale et conditionnelle. Observer la somme de la jointe et les deux marginales.
  2. Observer. Donner \(P(\text{coupure}\mid\text{orage})\) et \(P(\text{orage}\mid\text{coupure})\). Expliquer pourquoi elles diffèrent.
  3. Expliquer. La dernière ligne compare \(P(\text{orage})P(\text{coupure})\) et \(P(\text{orage},\text{coupure})\) : qu’en conclure ?

Étape 2 : la panne chez Awa

Le courant est coupé chez Awa. Trois causes : un délestage programmé (prior 0,5), une panne du transformateur du quartier (0,2), le disjoncteur de la maison (0,3). Trois observations possibles : les voisins sont aussi sans courant ; une annonce de délestage a été reçue ; une explosion a été entendue près du transformateur.

  1. Compléter bayes et sequentiel. Observer les croyances après « voisins » puis « annonce ».
  2. Observer. Sans annonce reçue (SANS_ANNONCE), puis avec l’explosion : comment évoluent les croyances ? Quelle observation retourne le diagnostic ?
  3. Expliquer pourquoi l’ordre inverse donne le même résultat final.
  4. Expliquer la courbe de la cellule suivante à l’aide des rapports de vraisemblance de « voisins » (délestage contre disjoncteur) et de « explosion » (transformateur contre délestage).

Étape 3 : Bouki dans une grotte \(5\times5\)

Même modèle qu’en cours, sur une grille \(5\times5\) : prior uniforme sur les 24 cases autres que le départ ; \(P(\text{odeur}\mid\text{voisin})=0{,}85\), \(P(\text{odeur}\mid\text{non voisin})=0{,}05\) ; être vivant dans une case donne une vraisemblance 0. Ousmane visite \((1,1)\), \((1,2)\), \((2,2)\) puis \((2,3)\), et ne sent une odeur qu’en \((2,2)\).

  1. Compléter observer. Observer l’évidence \(z\) et les trois cases les plus probables après chaque visite.
  2. Expliquer pourquoi \((2,3)\) et \((3,2)\) sont à égalité après \((2,2)\), et ce qui brise l’égalité ensuite.
  3. Observer la carte des croyances. Pourquoi \((2,1)\) reste-t-elle au-dessus des cases lointaines ?
  4. Modifier le taux de fausses alertes (0,05 ; 0,2 ; 0,4) : que devient la croyance maximale ? Expliquer par le rapport de vraisemblance du capteur.

Étape 4 : le réseau des coupures

Sept variables booléennes : un orage \(O\) endommage la ligne \(L\) ; une canicule \(K\) crée une forte demande \(D\) ; \(L\) et \(D\) provoquent la coupure \(X\) ; la coupure se voit chez les voisins \(V\) et au congélateur dégelé \(F\). Les tables sont dans la cellule reseau.

  1. Observer. Combien de configurations la jointe compte-t-elle ? Combien de paramètres libres le réseau a-t-il, contre la jointe brute ?
  2. Compléter prob, qui somme la jointe. Observer \(P(X=1)\) et \(P(O=1\mid X=1)\).
  3. Observer les sept requêtes : pour chacune, le verdict de d_separe et la vérification numérique. Expliquer chaque verdict par le motif des triplets du chemin.
  4. Expliquer les quatre valeurs de la cellule explain : pourquoi apprendre la canicule fait-il baisser la probabilité de l’orage, sachant la coupure ?
  5. Expliquer. Quelle est la couverture de Markov de \(X\) ?

Étape 5 : l’élimination de variables

  1. Compléter produit (avec le compteur MULT) et sommer.
  2. Observer. Calculer \(P(O\mid V=1,F=1)\) avec l’ordre \(K\), \(D\), \(L\), \(X\), puis avec l’ordre \(X\), \(L\), \(D\), \(K\). Les résultats sont-ils égaux ? Comparer les facteurs créés et les nombres de multiplications.
  3. Expliquer. Comparer au nombre de multiplications de l’énumération (dernière ligne) ; que vaut \(z\) ?

Étape 6 : l’échantillonnage par rejet

  1. Compléter la condition de rejet. Observer l’estimation de \(P(O=1\mid V=1,F=1)\) pour \(n=100\) à \(100\,000\).
  2. Expliquer la proportion de tirages gardés à l’aide de \(z\) (étape 5), et l’écart à la valeur exacte.

Étape 7 : un Naive Bayes appris sur DataSANTÉ-221

Les 10 000 patients de DataSANTÉ-221 (jeu de données du cours de Machine Learning) ont une saison de consultation (1 : pluies) et une température ; on note « forte fièvre » une température d’au moins 38,5 °C.

  1. Compléter estimer : le prior de chaque classe et les deux vraisemblances, par comptage. Observer le modèle.
  2. Observer \(P(\text{palu}\mid s,f)\) pour les quatre combinaisons. Expliquer pourquoi aucune ne dépasse 0,5.
  3. Observer l’exactitude au seuil 0,5, puis 0,2, et la comparer à la règle « toujours non ». Expliquer ce que l’on gagne et ce que l’on perd avec le seuil 0,2.

Pour cette séance

Le cours

Les slides

À lire en ligne

À télécharger

Retour au sommet