TP — Séance 5 — L’IA qui doute
Coupures de courant à Kaolack, Bouki, et un premier Naive Bayes appris
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.ipynbLes 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.
- Compléter
jointe_de,marginaleetconditionnelle. Observer la somme de la jointe et les deux marginales. - Observer. Donner \(P(\text{coupure}\mid\text{orage})\) et \(P(\text{orage}\mid\text{coupure})\). Expliquer pourquoi elles diffèrent.
- 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.
- Compléter
bayesetsequentiel. Observer les croyances après « voisins » puis « annonce ». - Observer. Sans annonce reçue (
SANS_ANNONCE), puis avec l’explosion : comment évoluent les croyances ? Quelle observation retourne le diagnostic ? - Expliquer pourquoi l’ordre inverse donne le même résultat final.
- 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)\).
- Compléter
observer. Observer l’évidence \(z\) et les trois cases les plus probables après chaque visite. - Expliquer pourquoi \((2,3)\) et \((3,2)\) sont à égalité après \((2,2)\), et ce qui brise l’égalité ensuite.
- Observer la carte des croyances. Pourquoi \((2,1)\) reste-t-elle au-dessus des cases lointaines ?
- 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.
- Observer. Combien de configurations la jointe compte-t-elle ? Combien de paramètres libres le réseau a-t-il, contre la jointe brute ?
- Compléter
prob, qui somme la jointe. Observer \(P(X=1)\) et \(P(O=1\mid X=1)\). - Observer les sept requêtes : pour chacune, le verdict de
d_separeet la vérification numérique. Expliquer chaque verdict par le motif des triplets du chemin. - Expliquer les quatre valeurs de la cellule
explain: pourquoi apprendre la canicule fait-il baisser la probabilité de l’orage, sachant la coupure ? - Expliquer. Quelle est la couverture de Markov de \(X\) ?
Étape 5 : l’élimination de variables
- Compléter
produit(avec le compteurMULT) etsommer. - 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.
- Expliquer. Comparer au nombre de multiplications de l’énumération (dernière ligne) ; que vaut \(z\) ?
Étape 6 : l’échantillonnage par rejet
- Compléter la condition de rejet. Observer l’estimation de \(P(O=1\mid V=1,F=1)\) pour \(n=100\) à \(100\,000\).
- 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.
- Compléter
estimer: le prior de chaque classe et les deux vraisemblances, par comptage. Observer le modèle. - Observer \(P(\text{palu}\mid s,f)\) pour les quatre combinaisons. Expliquer pourquoi aucune ne dépasse 0,5.
- 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
- Code de départ du TP (ZIP, 75 Ko)