Aller au contenu

Classification : Label et Score de Confiance

Imaginez que vous consultiez un radiologue

Un médecin examine vos radiographies pulmonaires. Il vous dit : “À 99,98 % de certitude, c’est une pneumonie.” Voilà précisément ce qu’est la sortie d’un modèle de classification : un diagnostic (label) accompagné d’un degré de confiance (score).

Transposé au machine learning, ce couple [label, score] structure chaque prédiction. Un classifieur binaire produit {'label': 'POSITIVE', 'score': 0.9998} plutôt que simplement « POSITIVE ». La différence paraît cosmétique ? Elle est révolutionnaire pour prendre des décisions réelles.

Pourquoi cette structure en deux composants ?

Vous êtes décideur. Deux scénarios vous sont présentés :

  1. Un modèle vous dit « POSITIVE » — point final.
  2. Un modèle vous dit « POSITIVE avec confiance 0.9998 ».

Dans le premier cas, êtes-vous aussi confiant qu’avec le second ? Évidemment non. Or, ces deux labels auraient produit la même action sans le score. C’est le problème de l’opacité décisionnelle : une prédiction binaire cache la nuance.

Le score résout cela en externalisant l’incertitude du modèle. Il transforme une décision 0/1 en un gradient continu, permettant au décideur humain de calibrer son action. Un score de 0.51 (« plutôt POSITIVE ») n’appelle pas le même traitement qu’un score de 0.9998 (« quasi-certainement POSITIVE »).

Comment ça fonctionne sous le capot ?

L’anatomie d’une prédiction

Lorsque vous soumettez des données (radiographie numérisée, texte, image) au modèle, trois étapes se succèdent :

Étape 1 : Transformation des données. Le modèle traverse ses couches cachées (neurones, poids, activations), compressant progressivement l’information en représentations abstraites.

Étape 2 : Génération des logits. À la sortie, le modèle produit des nombres bruts appelés logits—des valeurs sans limites, potentiellement de -∞ à +∞.

Étape 3 : Normalisation en probabilités. Ici survient la magie. Les logits sont transformés via une fonction d’activation qui garantit une propriété cruciale : la sortie se comporte comme une probabilité. C’est le moment où naissent le label et le score.

Pour une classification binaire, la fonction s’appelle sigmoid. Elle écrase tout logit en un nombre entre 0 et 1, représentant P(classe positive | données). Pour les problèmes multiclasses, c’est softmax, qui distribue la probabilité parmi toutes les classes—les scores somment toujours à 1.0.

Le seuillage décisif

Imaginons un logit transformé par sigmoid en score brut 0.9998. Le modèle applique alors une règle simple :

  • Si score > 0.5 → label = ‘POSITIVE’
  • Sinon → label = ‘NEGATIVE’

Ce seuil 0.5 est le punto di rottura—le point de basculement. Et c’est là que gît votre premier piège : ce seuil est arbitraire.

Pourquoi 0.5 ? Parce que statistiquement, il minimise les erreurs quand les deux classes sont équilibrées. Mais dans un hôpital où diagnostiquer le cancer coûte des faux positifs acceptables, vous préférez un seuil bas (ex : 0.3) pour attraper tous les cas, même au risque de scanner des patients sains. En revanche, pour filtrer les emails spam, vous choisissez un seuil haut (ex : 0.95) pour ne pas bloquer des emails légitimes—sacrifiant quelques spams.

De la théorie à la pratique : 7 étapes pour dominer ce concept

  1. Entraîner le modèle sur un dataset labélisé avec une fonction de perte adaptée (cross-entropy binaire ou catégorique). La loss guide le modèle à prédire des probabilités pertinentes.

  2. Valider la calibration : tester que les scores correspondent à la réalité. Si le modèle affirme « 100 samples avec score 0.9998 », environ 0,02 doivent être des erreurs. Sinon, le modèle est mal calibré.

  3. Analyser la matrice de confusion : calculer les vrais positifs (TP), faux positifs (FP), vrais négatifs (TN), faux négatifs (FN). Cela vous montre où le modèle déraille.

  4. Tracer la courbe precision-recall en variant le seuil. Vous verrez comment precision (TP / (TP + FP)) et recall (TP / (TP + FN)) s’inversent—la courbe ROC l’illustre graphiquement.

  5. Choisir le seuil optimal selon votre cas d’usage. Application médicale ? Privilégiez le recall (détecter tous les malades). Filtre email ? Privilégiez la précision (ne rejeter que les vrais spams).

  6. Encapsuler en JSON : standardiser la sortie {'label': 'POSITIVE', 'score': 0.9998} avec métadonnées (timestamp, version du modèle, intervalle de confiance) pour l’interopérabilité.

  7. Monitorer en production : tracker la distribution des scores mensuellement. Si elle dérive (ex : scores plus bas qu’avant), le modèle dérive—la calibration devient invalide.

Trois cas réels où le score change tout

Cas 1 : YouTube et la détection de contenu pour enfants

YouTube utilise un classifieur binaire : ‘SAFE_FOR_KIDS’ vs ‘NOT_SAFE’. Un score de 0.9998 sur une vidéo de dessin animé → label ‘SAFE_FOR_KIDS’. Mais YouTube souffrirait énormément de faux positifs : rejeter une vidéo d’éducation musicale sous prétexte qu’elle contient une chanson avec un gros mot détecté à 0.51 de confiance.

Décision : YouTube calibre le seuil à 0.95. Ainsi, seules les vidéos franchement dangereuses sont filtrées. Les faux négatifs (vidéos malveillantes passant inaperçues) restent acceptables—l’humain modère.

Cas 2 : Diagnostic médical et le paradoxe des probabilités

Un cardiologue utilise un classifieur d’infarctus du myocarde. Score 0.9998 → label ‘INFARCTUS’. Le médecin interprète cela comme « 99,98 % de certitude, ce patient est en danger immédiat ».

Erreur subtile : Le score 0.9998 est P(label INFARCTUS | données du patient). Mais ce que le médecin veut, c’est P(le patient a vraiment un infarctus | score 0.9998), qui dépend aussi de la prévalence des infarctus dans la population générale. En zone rurale où les infarctus sont rares, même un score de 0.95 peut correspondre à seulement 70 % de probabilité réelle. C’est le théorème de Bayes oublié.

Cas 3 : Fraude bancaire et l’asymétrie des coûts

Stripe détecte les fraudes. Un score de 0.9998 → label ‘FRAUD’ gèle la transaction. Mais geler une transaction légitime coûte énormément (client frustré, support client, perte de confiance). Geler une fraude coûte moins (la banque compense le client).

Décision : Stripe calibre le seuil à 0.7. Résultat : 2 % de transactions légitimes sont bloquées (faux positifs), mais 99 % des fraudes sont détectées (recall élevée). L’asymétrie des coûts détermine le seuil, pas une théorie abstraite.

Les pièges que tout praticien rencontre

Piège 1 : La fausse calibration

Vous mesurez que votre modèle affiche un score de 0.85 en moyenne sur vos données de test et qu’il se trompe 15 % du temps. Vous en déduisez : « Le score est calibré. »

Faux. La calibration n’est pas une moyenne globale. Un modèle bien calibré doit satisfaire : “Parmi 100 samples avec score entre 0.85 et 0.86, environ 85–86 doivent être corrects.” Si seulement 70 sont corrects, le modèle est mal calibré dans cette plage.

Technique de correction : appliquer Platt scaling ou isotonic regression post-entraînement pour recalibrer.

Piège 2 : L’oubli du monitoring

Vous déployez un modèle en janvier 2026 avec calibration validée. En février 2026, les données changent (saisonnalité, dérive du concept), mais vous ne le testez pas. En mars, votre modèle affiche 0.9998 sur des cas où le score réel devrait être 0.75.

Solution : Tracker mensuellement la distribution des scores et des labels. Si elle dérive, recalibrer ou réentraîner.

Piège 3 : L’interprétation naïve

Un PDG lit : « Notre modèle est 99,98 % confident. » Il en déduit : « Nous pouvons automatiser 99,98 % des décisions sans supervision humaine. »

Erreur critique : Un score de 0.9998 ne garantit jamais que le label est correct. Il dit : « Si ce modèle dit POSITIVE dans 10 000 cas similaires, ~2 seront des erreurs. » Mais cela suppose que les données futures ressemblent aux données passées—rarement vrai en production.

Évolution historique : comment nous y sommes arrivés

La notion de score de confiance ne date pas d’hier. Fisher introduisait déjà en 1936 la régression logistique, précurseur de la sigmoid moderne. Mais ce n’est qu’avec le deep learning (2012 onwards) que softmax et sigmoid deviennent standards universels, grâce à TensorFlow et PyTorch.

Aujourd’hui (2026), chaque API ML (OpenAI, Hugging Face, scikit-learn) standardise cette sortie en JSON. C’est l’interface universelle entre le modèle et le monde.

Récapitulatif pour le décideur

ÉlémentSignificationAction
LabelDécision du modèle (classe prédite)Exécuter l’action correspondante
ScoreConfiance du modèle dans ce label (0–1)Ajuster le seuil selon le métier ; documenter le risque
CalibrationScore = fréquence réelle d’erreurTester avant déploiement ; recalibrer si dérive
SeuilRègle de conversion score → labelNon arbitraire ; dépend du coût métier (faux positif vs faux négatif)

Notions liées


Sources & Références

  • GeeksforGeeks (2023). Evaluation Metrics For Classification Model in Python. Référence exhaustive sur accuracy, precision, recall, F1, ROC-AUC avec exemples scikit-learn.
  • nb-data.com (2024). Breaking Down the Classification Report from Scikit-Learn. Explication détaillée des métriques de classification et de leur interprétation.
  • scikit-learn Official Documentation (2024). Metrics and scoring: quantifying quality of predictions. Documentation technique pour roc_curve, confusion_matrix, precision_recall_curve.
  • Niculescu-Mizil, A. & Caruana, R. (2005). Predicting Good Probabilities With Supervised Learning. Research paper fondateur sur la calibration des probabilités dans les modèles supervisés.
  • Fawcett, T. (2006). An Introduction to ROC Analysis. Article de référence pour la compréhension des courbes ROC et du choix des seuils.
  • Fisher, R. A. (1936). The Use of Multiple Measurements in Taxonomic Problems. Publication historique introduisant la régression logistique.