L'apprentissage par la probabilité : Bayes
Combiner connaissance a priori et observations : théorème de Bayes, classifieur naïf de Bayes et réseaux bayésiens.
Imaginez un bonneteau à la fête foraine. Le bonimenteur retourne trois cartes — une dame, deux as — et vous devez deviner où se trouve la dame. La première fois, vous n'avez aucune idée : les trois positions vous semblent également probables. Mais en observant trente parties, vous remarquez que la dame atterrit plus souvent à droite (dix-neuf fois) qu'au centre (huit fois) ou à gauche (trois fois). Vous révisez vos croyances. Puis un coup de vent retourne la carte de droite, révélant un as : vous redistribuez encore vos probabilités sur les deux positions restantes. C'est exactement la grande idée (big idea) de l'apprentissage par la probabilité : on part d'une croyance initiale, et on la révise à mesure que des preuves arrivent. Ce chapitre développe cette intuition jusqu'au théorème de Bayes, puis construit le modèle naïf de Bayes (naive Bayes), avant de le raffiner avec le lissage, les variables continues et les réseaux bayésiens (Bayesian networks).
Les fondamentaux de la probabilité
Avant Bayes, il faut traduire le vocabulaire probabiliste dans celui de l'apprentissage. Chaque variable du jeu de données est une variable aléatoire (random variable), et l'espace d'échantillonnage (sample space) est l'ensemble de toutes les combinaisons possibles d'affectations de valeurs aux variables. Chaque ligne du jeu de données est une expérience (experiment) qui associe une valeur cible à un ensemble de valeurs descriptives ; une affectation particulière de valeurs constitue un événement (event). Une fonction de probabilité P() renvoie la probabilité d'un événement, calculée directement par fréquence relative.
Nous illustrerons tout ce chapitre avec un jeu de diagnostic de méningite (artificiel) où trois symptômes — HEADACHE (maux de tête), FEVER (fièvre), VOMITING (vomissements) — servent à prédire la cible MENINGITIS.
| ID | HEADACHE | FEVER | VOMITING | MENINGITIS |
|---|---|---|---|---|
| 1 | true | true | false | false |
| 2 | false | true | false | false |
| 3 | true | false | true | false |
| 4 | true | false | true | false |
| 5 | false | true | false | true |
| 6 | true | false | true | false |
| 7 | true | false | true | false |
| 8 | true | false | true | true |
| 9 | false | true | false | false |
| 10 | true | false | true | true |
Sur ces données, P(FEVER = true) = 0.4 se compte directement. Une probabilité conjointe (joint probability) concerne plusieurs variables à la fois, par exemple P(MENINGITIS = true, HEADACHE = true) = 0.2. Une probabilité conditionnelle (conditional probability) est la probabilité d'une valeur sachant qu'on connaît déjà la valeur d'une autre variable : P(MENINGITIS = true | HEADACHE = true) = 0.2857. Une distribution de probabilité (probability distribution) décrit la probabilité de chaque valeur possible d'une variable ; par convention on note P(MENINGITIS) = <0.3, 0.7> (la valeur true d'abord), et la somme d'une distribution vaut toujours 1.0. La distribution conjointe complète (full joint probability distribution) recense la probabilité de toutes les combinaisons de valeurs. À partir d'elle, on calcule n'importe quelle probabilité par sommation (summing out) sur les cellules concernées — mais cette table grandit de façon exponentielle avec le nombre de variables.
Note
Pour les variables catégorielles, la fonction de probabilité est une fonction de masse (probability mass function) ; pour les variables continues, c'est une fonction de densité (probability density function). On reste sur le catégoriel jusqu'à la section sur les variables continues.
Le théorème de Bayes
Le théorème de Bayes (Bayes' Theorem) est si élégant qu'on peut l'énoncer en une phrase : la probabilité qu'un événement se soit produit étant donné une preuve est égale à la probabilité que la preuve soit causée par l'événement, multipliée par la probabilité de l'événement lui-même. Formellement, pour un événement X et une preuve Y :
P(X | Y) = ( P(Y | X) × P(X) ) / P(Y) Sa force tient à ce qu'il fait basculer entre deux modes de raisonnement. Raisonner d'un événement vers la preuve qu'il cause (raisonnement direct, forward) est souvent facile ; raisonner de la preuve vers l'événement (raisonnement inverse, inverse) est souvent difficile. Bayes nous permet de passer de l'un à l'autre. Surtout, il inclut explicitement la probabilité a priori (prior) P(X), ce qui produit des résultats parfois contre-intuitifs.
L'exemple classique : un test médical est fiable à 99 % (P(t | d) = 0.99 et P(¬t | ¬d) = 0.99), mais la maladie ne frappe qu'une personne sur 10 000 (P(d) = 0.0001). Un patient teste positif. Quelle est la probabilité qu'il soit réellement malade ?
P(t) = P(t | d)×P(d) + P(t | ¬d)×P(¬d)
= 0.99 × 0.0001 + 0.01 × 0.9999 = 0.0101
P(d | t) = ( P(t | d) × P(d) ) / P(t)
= ( 0.99 × 0.0001 ) / 0.0101 ≈ 0.0098 La probabilité d'être malade malgré un test positif est inférieure à 1 %. C'est ce que les statisticiens appellent le paradoxe du faux positif : quand l'événement est rare, le prior écrase même une preuve très fiable. La division par P(Y) joue ici un rôle de normalisation garantissant que 0 ≤ P(X | Y) ≤ 1 et que les probabilités a posteriori somment à 1. Comme P(Y) ne dépend pas de X, on l'écrit souvent comme une simple constante de normalisation η (êta), et le théorème devient P(X | Y) = η × P(Y | X) × P(X).
À retenir
La confusion fatale consiste à prendre la probabilité d'une prédiction sachant la preuve, P(d | t), pour la probabilité de la preuve sachant la prédiction, P(t | d). Le théorème de Bayes existe précisément pour ne pas commettre cette erreur : il pondère la vraisemblance de la preuve par le prior de l'événement.
De Bayes à la prédiction
Pour prédire, on cherche la probabilité que la cible t prenne le niveau l sachant les valeurs descriptives q[1], …, q[m] d'une requête. Le théorème de Bayes généralisé (Generalized Bayes' Theorem) s'écrit :
P(t = l | q[1], …, q[m]) =
( P(q[1], …, q[m] | t = l) × P(t = l) ) ÷ P(q[1], …, q[m]) Trois quantités sont nécessaires. Le prior P(t = l) est la fréquence relative du niveau l. Le dénominateur P(q[1], …, q[m]) se calcule directement, par le théorème de la probabilité totale, ou se remplace par η. Reste la vraisemblance P(q[1], …, q[m] | t = l), qu'on peut développer avec la règle de la chaîne (chain rule) en un produit de probabilités conditionnelles emboîtées.
Prédisons pour la requête HEADACHE = true, FEVER = false, VOMITING = true (notée h, ¬f, v) :
P(m) = 0.3
P(h, ¬f, v | m) = P(h|m) × P(¬f|h,m) × P(v|¬f,h,m) = 0.6666
P(h, ¬f, v) = 0.4
P(m | h,¬f,v) = (0.6666 × 0.3) / 0.4 = 0.3333
P(¬m | h,¬f,v) = 0.6666 Surprenant : il est deux fois plus probable que le patient n'ait pas de méningite, alors même que la vraisemblance de la preuve est élevée (0.6666). Là encore, le prior faible de la méningite tire le résultat vers le bas. Pour construire un modèle automatique, on retient le niveau de plus forte probabilité a posteriori : c'est la prédiction du maximum a posteriori (MAP).
M_MAP(q) = arg max P(t = l) × P(q[1], …, q[m] | t = l)
l ∈ levels(t) Comme le dénominateur est constant pour tous les niveaux, on l'omet : pour un MAP, seul l'ordre relatif des scores compte, pas leur valeur exacte.
Le piège de la fragmentation des données
Essayons maintenant la requête HEADACHE = true, FEVER = true, VOMITING = false (h, f, ¬v). La chaîne exige P(h|m) × P(f|h,m) × P(¬v|f,h,m). Or seules trois lignes ont m (les 5, 8, 10) ; sur ces trois, aucune n'a f et h simultanément. Donc P(f|h,m) = 0, et P(¬v|f,h,m) est même indéfinie (division par zéro). Le produit s'effondre à zéro.
Ce phénomène est la fragmentation des données (data fragmentation) : à mesure qu'on empile des conditions, l'ensemble de lignes satisfaisant toutes les conditions rétrécit jusqu'à devenir vide. C'est une instance de la malédiction de la dimensionnalité (curse of dimensionality) — chaque nouvelle variable descriptive exige une croissance exponentielle du jeu de données. En pratique, aucun jeu de données ne couvrira jamais toutes les combinaisons possibles. Le modèle surapprend (overfitting) : il déclare impossible un patient avec maux de tête et fièvre, ce qui est absurde.
Attention
Tenter de calculer la vraisemblance directement à partir des données ou via la règle de la chaîne souffre du même mal : dès qu'une combinaison de preuves n'apparaît dans aucune ligne, on obtient une probabilité nulle ou indéfinie. Il faut un mécanisme pour relâcher cette exigence.
Indépendance conditionnelle et factorisation
Le salut vient de l'indépendance conditionnelle (conditional independence). Deux événements X et Y sont indépendants si P(X | Y) = P(X) ; la connaissance de l'un n'affecte pas l'autre. L'indépendance totale est rare, mais une situation fréquente est que deux événements deviennent indépendants dès qu'on connaît une cause commune. Si l'on ignore le statut méningite, savoir qu'un patient a mal à la tête augmente la probabilité qu'il ait de la fièvre (les deux pointent vers la méningite). Mais si l'on sait déjà que le patient a la méningite, savoir en plus qu'il a mal à la tête n'apprend plus rien sur la fièvre : l'information est déjà contenue dans la cause. Formellement :
P(X | Y, Z) = P(X | Z) (X et Y conditionnellement indépendants sachant Z) Quand la cible t = l cause l'affectation des variables descriptives, celles-ci sont conditionnellement indépendantes entre elles sachant t. La règle de la chaîne se simplifie radicalement : le produit de conditionnelles emboîtées devient un simple produit de conditionnelles chacune conditionnée sur la seule cible.
Sans hypothèse : P(q[1]|t) × P(q[2]|q[1],t) × P(q[3]|q[2],q[1],t) × …
Avec hypothèse : P(q[1]|t) × P(q[2]|t) × P(q[3]|t) × … Cette factorisation (factorization) a deux vertus. D'abord la compacité : au lieu de stocker la distribution conjointe complète des quatre variables binaires (16 entrées), il suffit de stocker quatre facteurs P(M), P(H|M), P(F|M), P(V|M), soit 7 probabilités à estimer (les variables binaires sont déterminées par leur valeur true). Pour un domaine à une cible et neuf descripteurs binaires, on passe de 2¹⁰ = 1024 probabilités à seulement 19. Ensuite la couverture : on relâche l'exigence que toutes les preuves coexistent dans une même ligne ; il suffit que chaque preuve, prise isolément, apparaisse au moins une fois pour chaque niveau de la cible. La requête h, f, ¬v, jadis impossible, redevient calculable, et les probabilités a posteriori obtenues sont moins extrêmes car chaque symptôme est pris en compte séparément.
Le modèle naïf de Bayes
Le modèle naïf de Bayes (naive Bayes) pousse cette idée à l'extrême : il suppose une indépendance conditionnelle globale entre toutes les variables descriptives sachant la cible. D'où sa définition :
M(q) = arg max P(t = l) × ∏ P(q[k] | t = l)
l ∈ levels(t) k=1..m Il est dit « naïf » parce que cette hypothèse est posée qu'elle soit vraie ou non. Et pourtant, il est étonnamment précis sur une vaste gamme de domaines. La raison est subtile : pour une cible catégorielle, on s'intéresse à l'ordre relatif des scores, pas à leur exactitude. Les erreurs dans le calcul des probabilités a posteriori ne se traduisent donc pas forcément en erreurs de prédiction. Le modèle est de surcroît robuste à la fragmentation des données et à la dimensionnalité, particulièrement utile sur des données rares (sparse) — d'où son succès en filtrage de spam et en analyse de texte. Il gère naturellement les valeurs manquantes (on retire simplement le facteur correspondant) et s'entraîne très vite : il suffit de calculer les priors et les conditionnelles. C'est l'outil idéal pour établir une précision de référence (baseline).
Exemple chiffré : détection de fraude
Soit un domaine de détection de demandes de prêt frauduleuses, avec trois descripteurs catégoriels — CREDIT HISTORY (none, paid, current, arrears), GUARANTOR/COAPPLICANT (none, guarantor, coapplicant), ACCOMMODATION (own, rent, free) — et la cible binaire FRAUD. Sur 20 lignes, il faut 2 + (2×4) + (2×3) + (2×3) = 22 probabilités, et ces 22 probabilités suffisent quel que soit le nombre futur d'instances : c'est la compacité du modèle. Voici quelques-unes des probabilités calculées :
| Probabilité | sachant fr | sachant ¬fr |
|---|---|---|
P(fr) / P(¬fr) | 0.3 | 0.7 |
| `P(CH = paid | ·)` | 0.1666 |
| `P(CH = current | ·)` | 0.5 |
| `P(GC = none | ·)` | 0.8334 |
| `P(ACC = rent | ·)` | 0.3333 |
Pour la requête CH = paid, GC = none, ACC = rent, on multiplie prior et facteurs : score 0.0139 pour true, 0.0245 pour false. Le MAP renvoie false (non frauduleux). Point remarquable : aucune ligne du jeu de données ne correspond exactement à cette requête, et le modèle prédit pourtant — preuve que l'hypothèse d'indépendance conditionnelle étend la couverture au-delà des données d'entraînement.
Le lissage de Laplace
L'indépendance conditionnelle ne couvre pas tout. Le tableau ci-dessus contient encore des zéros : P(CH = none | ¬fr) = 0, P(GC = guarantor | ¬fr) = 0, P(ACC = free | fr) = 0. Considérons la requête CH = paid, GC = guarantor, ACC = free. Pour fr, c'est P(ACC = free | fr) = 0 qui annule le produit ; pour ¬fr, c'est P(GC = guarantor | ¬fr) = 0. Les deux scores valent zéro : le modèle ne peut rien prédire.
La solution est le lissage (smoothing). On sait que la somme des probabilités d'une variable sur tous ses niveaux vaut 1.0 : il y a une masse de probabilité de 1 à partager. Le lissage prélève un peu de masse sur les valeurs les plus probables pour la donner à celles qui valent zéro ou presque, sans changer le total. Le lissage de Laplace (Laplace smoothing) pour les conditionnelles :
P(f = l | t) = ( count(f = l | t) + k )
÷ ( count(f | t) + (k × |Domain(f)|) ) où count(f = l | t) compte les lignes où f = l parmi celles de cible t, |Domain(f)| est le nombre de niveaux de la variable, et k un paramètre (typiquement 1, 2 ou 3 ; plus k est grand, plus on lisse). En appliquant k = 3 au domaine de fraude, plus aucune probabilité n'est nulle. La requête redevient prédictible : score 0.0036 pour true, 0.0043 pour false, MAP = false.
Piège courant
On lisse les probabilités conditionnelles, pas les priors de la cible. Dans l'immense majorité des cas, chaque niveau cible apparaît au moins une fois (prior non nul), et lisser ces priors fausserait la croyance a priori du modèle — y compris quand un niveau cible est rare, où un lissage naïf serait néfaste.
Variables continues : densités et discrétisation
Une variable continue a une infinité de valeurs ; la fréquence relative d'une valeur précise est indistinguable de zéro. Deux approches existent.
La première est la fonction de densité de probabilité (probability density function, PDF) : on modélise la distribution par une fonction mathématique standard. On en choisit la forme en traçant un histogramme de densité et en le comparant aux distributions connues — normale (symétrique, queues légères), student-t (semblable à la normale mais aux queues épaisses, donc robuste aux valeurs aberrantes), exponentielle (forte densité à gauche, décroissance rapide, utile pour les temps d'attente), ou mélange de gaussiennes (mixture of Gaussians, pour des données multimodales à plusieurs sous-populations). Ajuster les paramètres est immédiat pour la normale (moyenne et écart-type de l'échantillon) et l'exponentielle (λ = 1 ÷ moyenne), mais exige une recherche guidée (descente de gradient) pour le mélange de gaussiennes.
Dans un modèle naïf de Bayes, on n'a même pas besoin de la vraie probabilité — seulement de la vraisemblance relative d'une valeur selon les niveaux cibles. Or, pour un intervalle étroit, l'aire sous la courbe est approximée par la hauteur de la PDF multipliée par la largeur de l'intervalle. Cette largeur étant la même pour tous les niveaux cibles, elle se simplifie : on utilise directement la valeur renvoyée par la PDF comme mesure de vraisemblance. Pour étendre l'exemple de fraude avec une variable ACCOUNT BALANCE, on définit deux PDF conditionnées sur fr et ¬fr : l'histogramme des fraudes suit une exponentielle (λ ≈ 0.0024), celui des non-fraudes une normale (μ ≈ 984.26, σ ≈ 460.94). Les deux PDF n'ont pas besoin de la même forme.
La seconde approche est la discrétisation par paniers (binning) : on transforme la variable continue en catégorielle. On préférera le binning à fréquence égale (equal-frequency) au binning à largeur égale, car ce dernier produit des paniers très inégalement remplis, source de probabilités conditionnelles extrêmes qui biaisent le modèle selon le paramétrage plutôt que selon les données réelles. Il faut enregistrer les seuils entre paniers (le point milieu entre la plus haute valeur d'un panier et la plus basse du suivant) pour pouvoir classer les requêtes. Même à fréquence égale, des probabilités extrêmes peuvent surgir si un panier est pur — d'où l'usage combiné du lissage.
Astuce
PDF et binning sont mélangeables dans un même modèle : on peut garder une PDF pour ACCOUNT BALANCE tout en discrétisant LOAN AMOUNT. Quelle que soit l'approche, lissez toujours les conditionnelles des variables discrétisées.
Les réseaux bayésiens
Entre deux extrêmes — la distribution conjointe complète (exacte mais exponentielle, car elle ignore les relations structurelles) et le modèle naïf de Bayes (compact mais reposant sur une hypothèse globale parfois fausse) — s'intercale le réseau bayésien (Bayesian network). C'est un graphe orienté acyclique (directed acyclic graph) à trois éléments :
GINI COEF
/
v v
LIFE EXP SCHOOL YEARS
/
v v
CPI (cible : indice de corruption) - des nœuds : un par variable ;
- des arêtes orientées : une arête
A → Bsignifie queAinfluence directementB(Aest parent,Best enfant) ; - des tables de probabilité conditionnelle (conditional probability tables, CPT) : chaque nœud porte une CPT donnant sa distribution conditionnée sur ses parents. Un nœud sans parent porte sa distribution inconditionnelle.
La probabilité d'un événement conjoint dans un réseau à N nœuds se factorise élégamment :
P(x1, …, xn) = ∏ P(xi | Parents(xi))
i=1..N Pour calculer une probabilité conditionnelle, il faut tenir compte non seulement des parents d'un nœud mais aussi de ses enfants et de leurs parents — car connaître un enfant nous renseigne sur le parent (on inverse la dépendance via Bayes). L'ensemble minimal de nœuds qui rend un nœud indépendant du reste du graphe s'appelle sa couverture de Markov (Markov blanket) : parents, enfants, et co-parents des enfants. Conditionné sur sa couverture de Markov, un nœud est indépendant de tout le reste, ce qui réduit drastiquement le nombre de probabilités à manipuler.
Un point clé : le modèle naïf de Bayes est un réseau bayésien d'une topologie particulière — la cible est l'unique parent de tous les descripteurs, sans parents elle-même. Cette structure encode exactement l'hypothèse d'indépendance conditionnelle des descripteurs sachant la cible.
Construire et exploiter un réseau
Apprendre à la fois la topologie et les CPT depuis les données est difficile : plusieurs réseaux distincts peuvent encoder la même distribution conjointe (la règle de la chaîne n'impose pas l'ordre de conditionnement). Les algorithmes de recherche locale ajoutent, retirent ou inversent des arêtes, en réapprenant les CPT à chaque étape. Le danger : ajouter une arête améliore toujours l'ajustement aux données (plus de paramètres CPT) mais conduit au surapprentissage. On utilise donc des fonctions objectif qui pénalisent la complexité, suivant le principe de longueur de description minimale (minimum description length, une forme du rasoir d'Occam), comme le critère d'information bayésien (Bayesian Information Criterion, BIC) qui équilibre exactitude et simplicité.
Une approche bien plus simple est hybride : un expert humain fournit la topologie, et l'algorithme se contente d'induire les CPT depuis les données — exactement comme pour le naïf de Bayes. C'est l'une des grandes forces du cadre : il intègre naturellement la connaissance experte. Idéalement, la topologie reflète les relations causales du domaine (un graphe causal, causal graph), car les humains raisonnent aisément en termes de causes, et un graphe causal est souvent plus compact. Pour prédire la corruption d'un pays, une théorie causale plausible est : « une société plus égalitaire investit davantage dans la santé et l'éducation, ce qui réduit la corruption », d'où le graphe ci-dessus reliant GINI COEF à LIFE EXP et SCHOOL YEARS, eux-mêmes pointant vers CPI.
Pour prédire, on calcule la distribution a posteriori de la cible sachant les preuves et on renvoie le MAP. L'atout décisif des réseaux bayésiens sur les autres modèles est la gestion des valeurs manquantes : si un parent de la cible est inconnu, on le somme (sum out), ce qui peut exiger de remonter récursivement la chaîne de ses ancêtres. Mais ce calcul exact devient vite intraitable. On recourt alors à des méthodes de Monte-Carlo : un réseau bayésien définit une chaîne de Markov (Markov chain), et la famille des algorithmes MCMC (Markov chain Monte Carlo) — dont l'échantillonnage de Gibbs (Gibbs sampling) — approxime la distribution en générant un grand nombre d'états et en mesurant la fréquence relative de l'événement. Gibbs fixe les nœuds d'évidence, initialise aléatoirement les autres, puis met à jour itérativement un nœud non observé en tirant sa valeur de sa CPT conditionnée sur l'état courant. Trois conditions assurent la convergence (distribution stationnaire, ergodicité, indépendance des échantillons), et l'on prévoit une période de chauffe (burn-in) pour oublier l'état initial aléatoire, plus un éclaircissage (thinning) pour décorréler les échantillons. Sur l'exemple corruption, 2 000 échantillons donnent P(CPI = high) ≈ 0.1975, proche de la valeur exacte 0.2.
Note
Les trois familles d'apprentissage se rejoignent. Le prior d'un modèle par similarité (k plus proches voisins) est la fréquence relative du niveau cible — d'où le danger de rééquilibrer artificiellement un jeu de données. Et l'information apportée par une observation se lit dans l'écart entre prior et a posteriori : si l'observation change peu la probabilité, son contenu informationnel est faible.
À retenir
- La grande idée probabiliste : partir d'une croyance a priori (prior) et la réviser à chaque preuve. Le théorème de Bayes
P(X|Y) = P(Y|X)×P(X) ÷ P(Y)relie raisonnement direct et inverse, et son inclusion du prior explique le paradoxe du faux positif. - Une prédiction bayésienne renvoie le maximum a posteriori (MAP) ; le dénominateur étant constant, seul l'ordre relatif des scores compte.
- Le calcul direct se heurte à la fragmentation des données (probabilités nulles ou indéfinies), instance de la malédiction de la dimensionnalité ; l'indépendance conditionnelle la résout en factorisant la distribution, gagnant en compacité et en couverture.
- Le naïf de Bayes suppose une indépendance conditionnelle globale des descripteurs sachant la cible : compact, rapide à entraîner, robuste aux données rares, idéal comme baseline — mais incapable de modéliser les interactions entre variables.
- Le lissage de Laplace redistribue la masse de probabilité pour éliminer les zéros et étendre la couverture ; on lisse les conditionnelles, jamais les priors de la cible.
- Les variables continues se traitent par fonction de densité (normale, student-t, exponentielle, mélange de gaussiennes — on n'utilise que la hauteur relative) ou par binning à fréquence égale combiné au lissage.
- Les réseaux bayésiens sont un compromis entre conjointe complète et naïf de Bayes : un graphe causal orienté avec CPT, où la couverture de Markov isole chaque nœud, qui intègre l'expertise humaine et gère élégamment les valeurs manquantes (par sommation exacte ou échantillonnage de Gibbs).