ML Learning Hub
Évaluationdébutant

Compromis Biais-Variance & Analyse des Erreurs

Chaque erreur de modèle est soit une mauvaise hypothèse soit une sensibilité au bruit — diagnostiquer laquelle change tout

Intuition visuelle pour sous/surapprentissage, décomposition biais-variance, courbes d'apprentissage et diagnostic de modèle.

25 min
5 diagrammes
6 Concepts Couverts

Prérequis

Model Evaluation

Concepts Couverts

BiasVarianceUnderfittingOverfittingLearning CurvesModel Complexity

Formules Clés

Décomposition de l'Erreur

L'erreur totale attendue ne peut pas descendre en dessous du bruit irréductible σ² — plancher de performance

Biais

À quel point la prédiction moyenne s'éloigne de la vérité — mauvaise hypothèse structurelle du modèle

Variance

De combien les prédictions fluctuent selon différents ensembles d'entraînement — sensibilité au bruit des données

Simulation Interactive

Loading visualization…

Architecture du Modèle

Loading visualization…
🎯

Diagnostiquer Ce qui Ne Va Pas avec Votre Modèle

motivation

Quand un modèle performe mal, il n'y a que deux causes fondamentales : il fait de mauvaises hypothèses structurelles (biais/sous-ajustement) ou il est trop sensible aux données d'entraînement spécifiques (variance/sur-ajustement). Ces causes ont des correctifs opposés — plus de données aide la variance mais pas le biais ; plus de capacité aide le biais mais pas la variance. Diagnostiquer le problème avant d'appliquer des correctifs est la compétence la plus importante en ML appliqué.

💡

L'Analogie du Jeu de Fléchettes

intuition

Imaginez lancer 100 fléchettes sur une cible (la vraie fonction). Biais élevé = les fléchettes s'accumulent loin du centre (mauvais modèle). Variance élevée = les fléchettes se dispersent (prédictions inconsistantes). Biais faible + variance faible = les fléchettes se groupent sur le centre. Un polynôme de degré 1 a un biais élevé. Un polynôme de degré 20 a une variance élevée. Le degré 3-5 peut être la zone optimale.

L'erreur irréductible (σ²) est le bruit inhérent aux données — erreur de mesure, variables non observées. Aucun modèle ne peut la battre. Connaître σ² fixe le plafond de performance.

La Décomposition Mathématique

math

L'erreur de test attendue pour tout estimateur se décompose en trois termes additifs. L'erreur irréductible σ² est une propriété du processus générateur de données, pas du modèle. Le compromis : à mesure que la complexité augmente, le biais diminue mais la variance augmente. La régularisation (L1/L2) ajoute explicitement un terme de biais pour réduire la variance.

Décomposition Biais-Variance-Bruit
🔬

Courbes d'Apprentissage : Lire le Diagnostic

deepdive

Tracez l'erreur d'entraînement et l'erreur de validation en fonction de la taille de l'ensemble d'entraînement. Signature de biais élevé : les deux courbes plafonnent à une erreur élevée — plus de données n'aidera pas. Signature de variance élevée : grand écart entre erreur d'entraînement (basse) et de validation (haute) — plus de données aidera ; essayez aussi dropout/régularisation.

⚙️

Protocole Systématique d'Analyse des Erreurs

algorithm
1

Établir une référence : un modèle naïf (classe majoritaire, prédiction moyenne) fixe le plancher

2

Performance au niveau humain : borne supérieure de la précision réalisable (plancher d'erreur irréductible)

3

Biais évitable = erreur_entraîn. - erreur_humaine : corriger avec un modèle plus grand, plus de caractéristiques

4

Variance = erreur_val. - erreur_entraîn. : corriger avec plus de données, dropout, régularisation

5

Décalage des données = distribution val. ≠ distribution entraîn. : corriger avec l'adaptation de domaine

6

Analyse des erreurs : inspecter 100 erreurs de validation, étiqueter par catégorie → corriger la plus grande

</>

Diagnostic par Courbe d'Apprentissage

code
python35 lines
from sklearn.model_selection import learning_curve, train_test_split
from sklearn.datasets import make_classification
from sklearn.ensemble import GradientBoostingClassifier
import matplotlib.pyplot as plt
import numpy as np

class="tok-comment"># ── Données dclass="tok-str">'exemple + modèle ─────────────────────────────────────────
X, y = make_classification(n_samples=class="tok-num">800, n_features=class="tok-num">10, random_state=class="tok-num">42)
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=class="tok-num">0.2, random_state=class="tok-num">42)
modele = GradientBoostingClassifier(n_estimators=class="tok-num">100, random_state=class="tok-num">42)

tailles_entr, scores_entr, scores_val = learning_curve(
    estimator=modele,
    X=X_train, y=y_train,
    train_sizes=np.linspace(class="tok-num">0.1, class="tok-num">1.0, class="tok-num">10),
    cv=class="tok-num">5, scoring='roc_auc',
    n_jobs=-class="tok-num">1, shuffle=True
)

moy_entr = scores_entr.mean(axis=class="tok-num">1)
et_entr  = scores_entr.std(axis=class="tok-num">1)
moy_val  = scores_val.mean(axis=class="tok-num">1)
et_val   = scores_val.std(axis=class="tok-num">1)

class="tok-comment"># Diagnostic :
ecart  = moy_entr[-class="tok-num">1] - moy_val[-class="tok-num">1]
niveau = moy_val[-class="tok-num">1]

if niveau < class="tok-num">0.7:
    print(class="tok-str">"BIAIS ÉLEVÉ : augmenter la complexité ou ajouter des caractéristiques")
elif ecart > class="tok-num">0.1:
    print(class="tok-str">"VARIANCE ÉLEVÉE : ajouter des données, régularisation, ou réduire la complexité")
else:
    print(class="tok-str">"Bonne généralisation — optimiser les hyperparamètres")

?Vérification des Connaissances

La progression est sauvegardée dans votre navigateur — aucun compte requis.

Besoin d'un ingénieur IA ou data scientist ?

Je conçois des modèles ML sur mesure, des agents IA, de la vision par ordinateur et de l'automatisation — de l'idée à la production.