Formation ML / Apprentissage supervisé - Régression / Statistiques bayésiennes

Régression linéaire bayésienne

Intermédiaire 45 min 11 sections

Les coefficients deviennent des distributions, la prédiction une bande d'incertitude, et Ridge se révèle être un prior gaussien.

Objectifs d'apprentissage

  • Passer de coefficients ponctuels à des distributions de coefficients
  • Calculer le posterior analytique d'une régression linéaire gaussienne
  • Visualiser l'incertitude : faisceau de droites et bandes de crédibilité
  • Comprendre pourquoi Ridge est un prior gaussien déguisé (MAP)
  • Produire des prédictions avec incertitude quantifiée

Prérequis

Modules Régression linéaire et Inférence bayésienne

Théorie

Des coefficients ponctuels aux distributions

Dans le module Régression Linéaire, le modèle $y = a \cdot x + b$ produit UNE pente $a$ et UN intercept $b$: les valeurs qui minimisent l'erreur quadratique (moindres carrés, OLS).

Question gênante: avec seulement quelques dizaines de ventes immobilières, à quel point peut-on faire confiance à ces deux nombres ? Une pente de 3500 EUR/m2 estimée sur 20 ventes n'a pas la même solidité qu'estimée sur 20000 ventes. L'OLS ne répond pas: il rend les mêmes nombres, sans indication de fiabilité.

La réponse bayésienne: traiter les coefficients comme des variables aléatoires.

  • Prior sur les coefficients: $w \sim \mathcal{N}(0, \tau^2)$ ("les coefficients sont probablement modestes")
  • Vraisemblance gaussienne: $y \mid x, w \sim \mathcal{N}(w^\top x, \sigma^2)$ (le bruit d'observation)
  • Posterior: une distribution complète sur les coefficients, calculable EXACTEMENT (conjugaison gaussienne, comme la Beta-Binomiale du module précédent)

Le scoop de ce module: vous faisiez déjà du bayésien sans le savoir.

La régression Ridge (pénalité L2) du monde sklearn s'écrit:

$$\hat{w}_{ridge} = \arg\min_w \; \|y - Xw\|^2 + \alpha \|w\|^2$$

On démontrera que c'est EXACTEMENT le maximum du posterior (MAP) avec un prior gaussien, avec la correspondance $\alpha = \sigma^2 / \tau^2$:

  • prior large ($\tau$ grand) $\Leftrightarrow$ $\alpha$ petit $\Leftrightarrow$ peu de régularisation
  • prior serre ($\tau$ petit) $\Leftrightarrow$ $\alpha$ grand $\Leftrightarrow$ forte régularisation

La régularisation n'est pas une astuce d'ingénieur: c'est un prior qui dit son nom.

Théorie

Schéma: la régression vue comme une inférence

Le même cycle bayésien, applique aux coefficients:

flowchart LR PRIOR["Prior sur (a, b)
N(0, tau2)"] DATA["Ventes observées
vraisemblance gaussienne"] BAYES["Théorème
de Bayes"] POST["Posterior sur (a, b)
gaussienne exacte"] PRED["Prédictions
avec incertitude"] PRIOR --> BAYES DATA --> BAYES BAYES --> POST POST --> PRED class PRIOR ml-node-secondary class DATA ml-node-success class BAYES ml-node-main class POST ml-node-accent class PRED ml-node-warning

Exemple numérique en une dimension:

Supposons une pente estimée par les données seules à $\textcolor{#3498db}{\hat{a}_{data} = 2.0}$ avec une variance d'estimation $\textcolor{#3498db}{0.25}$ (les données sont peu nombreuses), et un prior $\textcolor{#9B7AC4}{a \sim \mathcal{N}(0, 1)}$.

Pour des gaussiennes, le posterior combine les deux sources au prorata de leur précision (précision = 1/variance):

$$a_{post} = \frac{\textcolor{#9B7AC4}{\frac{0}{1}} + \textcolor{#3498db}{\frac{2.0}{0.25}}}{\textcolor{#9B7AC4}{\frac{1}{1}} + \textcolor{#3498db}{\frac{1}{0.25}}} = \frac{0 + 8}{1 + 4} = \textcolor{#27ae60}{1.6}$$

Légende des couleurs:

  • $\textcolor{#9B7AC4}{Violet}$ : le prior (centre 0, variance 1, donc précision 1)
  • $\textcolor{#3498db}{Bleu}$ : l'information des données (centre 2.0, précision 4)
  • $\textcolor{#27ae60}{Vert}$ : le posterior, moyenne pondérée par les précisions

Les données sont 4 fois plus précises que le prior: le posterior (1.6) est donc 4 fois plus proche de 2.0 que de 0. La variance du posterior, elle, vaut $1/(1+4) = 0.2$: combiner deux sources réduit toujours l'incertitude.

Avancé Exercice manuel: À vous de calculer!

Le bras de fer prior contre données

Même mécanique que dans le schéma ci-dessus, à faire à la main.

Un coefficient à un prior $a \sim \mathcal{N}(0, \tau^2)$ et les données seules l'estiment à $\hat{a}_{data} = 3.0$ avec une variance d'estimation $s^2 = 0.5$.

La formule de combinaison gaussienne:

$$a_{post} = \frac{\mu_{prior}/\tau^2 + \hat{a}_{data}/s^2}{1/\tau^2 + 1/s^2} \qquad \text{Var}_{post} = \frac{1}{1/\tau^2 + 1/s^2}$$

Question 1: prior LARGE $\tau^2 = 10$. Calculez $a_{post}$ et $\text{Var}_{post}$.

Question 2: prior SERRE $\tau^2 = 0.1$. Calculez $a_{post}$ et $\text{Var}_{post}$.

Question 3: dans quel cas le posterior colle-t-il aux données ? Au prior ? Reliez ce comportement au paramètre $\alpha$ de Ridge ($\alpha = \sigma^2/\tau^2$): quel cas correspond à une forte régularisation ?

Avancé Solution de l'exercice manuel

Solution détaillée

Question 1: prior large ($\tau^2 = 10$)

Précisions: prior $1/10 = 0.1$, données $1/0.5 = 2$.

$$a_{post} = \frac{0 \times 0.1 + 3.0 \times 2}{0.1 + 2} = \frac{6}{2.1} \approx 2.86$$

$$\text{Var}_{post} = \frac{1}{2.1} \approx 0.476$$

Le posterior (2.86) reste très proche de l'estimation des données (3.0).

Question 2: prior serre ($\tau^2 = 0.1$)

Précisions: prior $1/0.1 = 10$, données $2$.

$$a_{post} = \frac{0 \times 10 + 3.0 \times 2}{10 + 2} = \frac{6}{12} = 0.5$$

$$\text{Var}_{post} = \frac{1}{12} \approx 0.083$$

Le prior écrase les données: le posterior (0.5) est tiré vers 0.

Question 3: le lien avec Ridge

Prior$\tau^2$$\alpha = \sigma^2/\tau^2$Comportement
Large10petitle posterior suit les données (régularisation faible)
Serre0.1grandle posterior est tiré vers 0 (régularisation forte)

Un prior serre autour de zéro "retient" les coefficients exactement comme la pénalité Ridge les retient. C'est la même opération mathématique, vue de deux fenêtres différentes. La cellule d'exercice en fin de module le vérifie numériquement avec sklearn.

Contenu verrouillé
4 / 11

Continuez votre apprentissage

Vous avez exploré 4 sections de ce module. Connectez-vous pour débloquer le reste du cours, incluant les exercices pratiques et les solutions.

Console Python

Raccourcis clavier
Ctrl/Cmd+Enter Exécuter
Ctrl/Cmd+Shift+/ Commenter
Tab Indenter
Shift+Tab Désindenter
Ctrl/Cmd+Z Annuler
Ctrl/Cmd+Y Rétablir
Ctrl+Entrée pour exécuter
Cliquez sur "Exécuter" pour voir le résultat