Los tipos de clasificación

31 min
Bloc 2 — Identifier le problème
Objectif
savoir qualifier rigoureusement une tâche de clasificación, distinguer les quatre types canoniques — binaire, multiclasse, ordinale, multilabel — à partir de la forme de la variable objetivo, connaître les conséquences de chaque type sur le choix de l'algoritmo et des métriques, et lever définitivement l'ambiguïté de dénomination de la regresión logística.
Durée estimée
40 minutes
Prérequis
chapitres 001 à 010
Quiz associés
011.1-quiz-qualification-tache.md à 011.7-quiz-synthese-comparative.md

1. Qualifier une tâche de clasificación : trois questions discriminantes

Le chapitre 010 a établi la première décision de modélisation : la objetivo est-elle catégorielle ou numérique. Répondre « catégorielle » ne clôt pas le cadrage. Il reste à déterminer de quel type de clasificación il s'agit, car ce type détermine la forme de la variable objetivo, les algoritmos utilisables, les métriques admissibles et l'interprétation d'une error.

DÉFINITION — Tâche de clasificación

Définition rigoureuse

Soit un espace d'entrée X et un ensemble fini d'etiquetas C = {c_1, ..., c_K} de cardinal K ≥ 2. Une tâche de clasificación consiste à induire, à partir d'un échantillon {(x_i, y_i)}, i = 1..n, une fonction de décision es : X → Y dont l'espace d'arrivée Y est construit sur C selon l'une de deux constructions, qui fondent la partition de ce chapitre :

  • Y = C — chaque observación reçoit exactement une etiqueta parmi K. Le problème est dit à etiqueta unique (single-label).
  • Y = {0, 1}^K, ensemble des parties de C — chaque observación reçoit un sous-ensemble quelconque d'etiquetas, éventuellement vide. Le problème est dit multilabel.

Traduction en langage courant

Classer, c'est attribuer des etiquetas prises dans une liste fermée. La première question à trancher est de savoir si une observación en reçoit une seule ou plusieurs.

Point de vigilance

La liste des etiquetas est supposée fermée et connue à l'entrenamiento. Un clasificador ne peut pas predecir une clase qu'il n'a jamais observée ; la gestion des clases inédites relève de la détection d'anomalies (chapitre 003).

1.1 Les trois questions, dans l'ordre

OrdreQuestionRéponseType retenu
1Une observación peut-elle porter plusieurs etiquetas simultanément ?OuiMultilabel
2Combien de clases mutuellement exclusives ?K = 2Binaire
2Combien de clases mutuellement exclusives ?K > 2Passer à la question 3
3Les clases sont-elles munies d'un ordre total naturel ?NonMulticlasse (nominale)
3Les clases sont-elles munies d'un ordre total naturel ?OuiOrdinale

L'ordre n'est pas arbitraire : la question de l'exclusivité prime, car elle change la forme même de la matrice objetivo — un vecteur dans un cas, une matrice dans l'autre. Les questions 2 et 3 ne portent que sur la structure interne de C.

1.2 Le type de clasificación est une décision, non une constatation

Un même phénomène métier admet fréquemment plusieurs formulations valides. Une enquête de satisfaction notée de 1 à 5 peut être traitée comme une objetivo ordinale à cinq niveaux, comme une objetivo binaire après regroupement ({1,2,3} contre {4,5}), ou comme une objetivo numérique.

Le critère de décision est l'usage fait de la predicción. Si la décision opérationnelle en aval est binaire — relancer le client ou non —, la formulation binaire concentre la capacité du modelo sur la seule frontière utile.

Point de vigilance : le regroupement de clases est irréversible du point de vue du modelo. Un modelo entraîné sur deux niveaux ne restituera jamais la granularité à cinq niveaux.


2. La clasificación binaire

DÉFINITION — clasificación binaire

Définition rigoureuse

Cas de la clasificación à etiqueta unique où K = 2 : C = {c_0, c_1} et Y = C. La fonction de décision es : X → {c_0, c_1} partitionne l'espace d'entrée en deux régions séparées par une frontière de décision.

La plupart des algoritmos n'apprennent pas es directement, mais une fonction de score s : X → ℝ ou une estimation de probabilidad conditionnelle p(x) = P(Y = c_1 | X = x), la décision résultant d'une comparaison à un seuil t : es(x) = c_1 si p(x) ≥ t, c_0 sinon.

Traduction en langage courant

Deux réponses possibles, et deux seulement. Le modelo produit en réalité un degré de confiance, converti en réponse en fixant une barre.

Point de vigilance

La séparation entre l'estimation de p(x) et le choix du seuil t est fondamentale. Le seuil de 0,5 est une convention d'implémentation, jamais un optimum démontré. Son réglage est traité au chapitre 062.

2.1 La convention 0 / 1

L'usage impose de coder la objetivo binaire par les entiers 0 et 1. Cette convention est structurante, non décorative.

PropriétéConséquence de la convention 0 / 1
y.mean()Donne directement la prévalence de la clase 1
verosimilitud de BernoulliS'écrit p^y · (1−p)^(1−y), base de la log-loss (chapitre 061)
predict_probaRenvoie une matrice (n, 2) ; la colonne d'indice 1 porte la clase 1
matriz de confusiónL'ordre [0, 1] fixe la disposition TN, FP, FN, TP (chapitre 052)
precisión, exhaustividad, F1Calculés par rapport à la clase 1 par défaut

Point de vigilance : scikit-learn ordonne les clases par tri croissant, dans l'attribut classes_. Avec des etiquetas textuelles {"Fraude", "Normal"}, l'ordre alphabétique place "Fraude" en indice 0 — l'inverse de l'intention métier. Coder la objetivo explicitement en 0/1 supprime ce riesgo.

2.2 Exemple de datos — detección de fraude par carte bancaire

transaction_idmontantpays_cartepays_marchandheurecanalest_fraude
T-00000142,90eses14Boutique0
T-0000021 890,00esRU3En ligne1
T-00000312,50eses9Boutique0
T-0000047,20eses19En ligne0
T-0000052 450,00esUS4En ligne1
python
import pandas as pd

df = pd.read_csv("transactions.csv")
y = df["est_fraude"]

print(y.shape)
print(y.dtype)
print(sorted(y.unique()))
print(y.value_counts(normalize=True).round(4))
(284807,)
int64
[0, 1]
est_fraude
0    0.9983
1    0.0017
Name: proportion, dtype: float64

Interprétation : y est un vecteur unidimensionnel de longueur n, une valeur par observación, à deux modalités codées 0 et 1. La clase positive représente 0,17 % des observaciones : le problème est fortement déséquilibré, ce qui disqualifie l'exactitud comme métrique de pilotage et impose le traitement des chapitres 050 et 051.

2.3 Le choix de la clase positive et ses conséquences

DÉFINITION — clase positive

Définition rigoureuse

Dans un problème binaire, la clase positive est celle par rapport à laquelle sont définis les comptages de la matriz de confusión — vrais positifs, faux positifs, faux négatifs — et donc les métriques asymétriques qui en dérivent : precisión, exhaustividad, especificidad, es-beta.

Traduction en langage courant

La clase positive est celle que le modelo est chargé de détecter. Le mot « positif » ne porte aucune connotation favorable : un dépistage positif est un mauvais résultat pour le patient.

Règle de désignation

La clase positive est, par convention professionnelle, la clase d'intérêt : l'événement rare, coûteux ou actionnable — fraude, défaut de paiement, maladie, départ de client, panne. Elle coïncide dans la grande majorité des cas avec la clase minoritaire.

Point de vigilance

Cette désignation est une décision de modélisation explicite. La laisser dépendre de l'ordre alphabétique des etiquetas produit des métriques correctement calculées mais interprétées à contresens.

Inverser la clase positive ne change pas le modelo, mais change le sens de toutes les métriques asymétriques.

GrandeurEffet de l'inversion de la clase positive
modelo appris, frontière de décisionInchangé
exactitud (accuracy)Inchangée — métrique symétrique
precisión, exhaustividad, F1Changent de valeur : ils portent sur l'autre clase
exhaustividad et especificidadS'échangent
Faux positifs et faux négatifsS'échangent
ROC-AUCDevient 1 − AUC
PR-AUCChange radicalement : la ligne de base passe de la prévalence d'une clase à celle de l'autre

Conséquence opérationnelle : un exhaustividad annoncé à 0,92 n'a aucun sens tant que la clase positive n'est pas nommée. Toute restitution de résultats de clasificación binaire doit l'énoncer explicitement.

ANALOGIE — Le test de dépistage

Un laboratoire annonce que son test « détecte 95 % des cas ». La phrase est inexploitable tant qu'on ignore ce qui est détecté.

S'il s'agit de détecter les malades, 95 % est le exhaustividad sur la clase « malade » : cinq malades sur cent sont manqués.

S'il s'agit de détecter les bien-portants, 95 % est le exhaustividad sur la clase « sain », c'est-à-dire la especificidad : cinq bien-portants sur cent sont inquiétés à tort, et le taux de malades manqués reste totalement inconnu.

Le même nombre, calculé sur le même modelo, décrit deux réalités cliniques sans rapport. Nommer la clase positive est la condition d'interprétabilité du chiffre.

Point essentiel : l'étape de clasificación proprement dite est la comparaison au seuil, en aval du modelo ; le modelo, lui, produit une grandeur continue. Cette distinction fonde le point 6 de ce chapitre.


3. La clasificación multiclasse

DÉFINITION — clasificación multiclasse (multiclass clasificación)

Définition rigoureuse

clasificación à etiqueta unique où K > 2, l'ensemble C = {c_1, ..., c_K} étant exhaustif — toute observación admet une etiqueta dans C — et mutuellement exclusif — une observación en admet exactement une. Formellement Y = C, et Σ_k P(Y = c_k | X = x) = 1 pour tout x.

On parle aussi de clasificación nominale pour souligner que C n'est muni d'aucune relation d'ordre.

Traduction en langage courant

Plus de deux réponses possibles, une seule réponse par observación, et aucune réponse n'est « supérieure » à une autre.

Point de vigilance

Exhaustivité et exclusivité sont deux hypothèses distinctes, toutes deux falsifiables sur les datos. Une nomenclature comportant une modalité « Autre » satisfait l'exhaustivité au prix d'une clase hétérogène difficile à modéliser.

3.1 Distinction avec le multilabel

La distinction ne porte pas sur le nombre de clases mais sur le nombre d'etiquetas attribuées à une observación.

CritèreMulticlasseMultilabel
Nombre de clases possibles KK > 2K ≥ 2
Nombre d'etiquetas par observaciónExactement 10, 1, ou plusieurs
Exclusivité mutuelle des clasesOui, par hypothèseNon
Forme de y brut(n,)(n, K)
Somme des indicatrices sur une ligneToujours 1Entre 0 et K
Somme des probabilités prédites1, contrainte softmaxNon contrainte

Test opérationnel : formuler la question métier avec l'article défini. « Quel est le motif de ce ticket ? » désigne un problème multiclasse. « Quels sont les motifs de ce ticket ? » désigne un problème multilabel.

3.2 Exemple de datos — routage des tickets d'un service client

ticket_idcanallongueur_texteclient_premiumanciennete_moiscategorie
TK-0001Courriel412014Facturation
TK-0002Téléphone87161Technique
TK-0003Formulaire23503Commercial
TK-0004Courriel1 104128Résiliation
TK-0005Téléphone15609Technique
python
y = df["categorie"]

print(y.shape)
print(y.nunique())
print(y.value_counts())
(12000,)
4
categorie
Technique      5184
Facturation    3612
Commercial     2076
Résiliation    1128
Name: count, dtype: int64

Interprétation : y reste un vecteur de forme (n,), exactement comme dans le cas binaire ; seul le nombre de modalités change. Le passage du binaire au multiclasse ne modifie pas la structure de y. Les effectifs vont de 1 128 à 5 184, soit un rapport de 4,6 : le déséquilibre est modéré mais impose déjà de préférer les moyennes macro aux moyennes micro pour ne pas masquer la clase Résiliation (chapitre 065).

3.3 Les stratégies de décomposition

Certains algoritmos sont intrinsèquement binaires — les machines à vecteurs de support (chapitre 041) en sont l'exemple canonique. Deux schémas de réduction permettent alors de traiter K clases avec des classifieurs binaires.

DÉFINITION — Un-contre-tous et un-contre-un

Un-contre-tous (One-vs-Rest, OvR, aussi One-vs-All)

On entraîne K classifieurs binaires ; le clasificador k oppose c_k à l'union de toutes les autres clases. En predicción, on retient argmax_k s_k(x).

Un-contre-un (One-vs-One, OvO)

On entraîne un clasificador par paire de clases, soit K(K−1)/2 classifieurs ; le clasificador (j, k) n'est entraîné que sur les observaciones de c_j ou c_k. En predicción, chaque clasificador vote et la clase majoritaire l'emporte.

Traduction en langage courant

Un-contre-tous : « est-ce un chat, oui ou non ? », puis « est-ce un chien, oui ou non ? » ; on garde la réponse la plus assurée. Un-contre-un : on organise un tournoi de duels entre toutes les paires et on compte les victoires.

Point de vigilance

Les scores des K classifieurs OvR proviennent de modelos entraînés séparément, sur des problèmes de difficulté et de prévalence différentes. Leur comparabilité directe par argmax n'est pas garantie : c'est la faiblesse théorique reconnue de la stratégie.

CritèreUn-contre-tous (OvR)Un-contre-un (OvO)
Nombre de classifieursKK(K−1)/2
Pour K = 4 / 10 / 1004 / 10 / 1006 / 45 / 4 950
Taille de chaque sous-problèmen observacionesenviron 2n/K observaciones
Coût total, algoritmo linéaire en nO(K · n)O(K · n)
Coût total, algoritmo quadratique en nO(K · n²)O(n²)
Déséquilibre induitFort : 1 clase contre K−1Aucun entre les deux clases de la paire
Zones d'ambiguïtéAucun ou plusieurs classifieurs positifsVotes circulaires : A bat B, B bat C, C bat A

Lecture du tableau : le nombre de modelos croît quadratiquement en OvO, mais chaque modelo n'est entraîné que sur une fraction des datos. Pour un algoritmo dont le coût d'entrenamiento est quadratique en n — cas des SVM à noyau —, OvO est donc globalement moins coûteux que OvR malgré son nombre de modelos supérieur. C'est la raison pour laquelle scikit-learn retient OvO par défaut pour SVC, et OvR pour LinearSVC, dont le coût est linéaire.

python
from sklearn.datasets import make_classification
from sklearn.multiclass import OneVsRestClassifier, OneVsOneClassifier
from sklearn.svm import SVC

X, y = make_classification(n_samples=600, n_features=8, n_informative=6,
                           n_classes=6, n_clusters_per_class=1, random_state=0)

ovr = OneVsRestClassifier(SVC()).fit(X, y)
ovo = OneVsOneClassifier(SVC()).fit(X, y)

print("K                  :", len(set(y)))
print("OvR nb estimateurs :", len(ovr.estimators_))
print("OvO nb estimateurs :", len(ovo.estimators_))
K                  : 6
OvR nb estimateurs : 6
OvO nb estimateurs : 15

Interprétation : 6 classifieurs contre 6 × 5 / 2 = 15. La décomposition est une mécanique interne : dans les deux cas y reste un vecteur (n,) et predict renvoie une etiqueta unique.

3.4 Les algoritmos nativement multiclasses

algoritmoTraitement du multiclasseChapitre
árbol de decisiónNatif — distribución de clases par feuille037
bosque aleatorioNatif — agrégation des votes des arbres038
gradiente boostingNatif, généralement par K ensembles d'arbres039
k vecinos más cercanosNatif — vote majoritaire dans le voisinage040
Naive BayesNatif — argmax de la probabilidad a posteriori042
regresión logísticaNatif en formulation multinomiale (softmax)036
perceptrón multicoucheNatif — K neurones de sortie et softmax043
SVM à noyau (SVC)Décomposition OvO041
SVM linéaire (LinearSVC)Décomposition OvR041

Point de vigilance : l'existence d'un traitement natif ne dispense pas de vérifier le déséquilibre entre clases. Un problème à 12 clases dont trois concentrent 90 % des effectifs pose, clase par clase, les mêmes difficultés qu'un problème binaire déséquilibré.


4. La clasificación ordinale

DÉFINITION — Échelle ordinale (Stevens, 1946)

Définition rigoureuse

Dans la typologie des échelles de mesure proposée par S. S. Stevens (1946), une échelle est dite ordinale lorsque la relation d'ordre entre les modalités est définie et significative, mais que la distance entre deux modalités consécutives ne l'est pas. Les opérations admissibles sont la comparaison (<, >, =), les rangs, la médiane et les quantiles ; la somme, la media arithmétique et la différence ne le sont pas.

L'échelle d'intervalle, immédiatement supérieure, ajoute la signification des écarts ; l'échelle de rapport ajoute un zéro absolu.

Traduction en langage courant

On sait classer les modalités de la plus faible à la plus forte, mais on ne sait pas de combien elles diffèrent.

Point de vigilance

Coder une variable ordinale en entiers 0, 1, 2, 3 est une opération de codage légitime. Traiter ensuite ces entiers comme des quantités mesurées ne l'est pas : le codage crée une métrique que la mesure ne porte pas.

DÉFINITION — clasificación ordinale (ordinal regression, ordinal clasificación)

Définition rigoureuse

clasificación à etiqueta unique où K > 2 et où C est muni d'un ordre total c_1 ≺ c_2 ≺ ... ≺ c_K significatif pour le domaine, sans qu'une distance soit définie sur C. La función de pérdida doit refléter cet ordre : le coût d'une confusion entre c_1 et c_K doit excéder celui d'une confusion entre c_1 et c_2.

Traduction en langage courant

Des clases rangées de la plus faible à la plus forte, où se tromper de beaucoup est plus grave que se tromper de peu.

Point de vigilance

La désignation anglaise usuelle est ordinal regression, ce qui entretient une confusion avec la regresión au sens du chapitre 010. La tâche reste une clasificación : l'espace d'arrivée est fini.

4.1 Exemple de datos — notation interne du riesgo de crédit

dossier_idrevenu_annueltaux_endettementincidents_12manciennete_bancaireniveau_risque
D-000154 0000,21012Faible
D-000228 5000,4713Moyen
D-000319 2000,6341Critique
D-000441 0000,3827Élevé
D-000567 3000,15021Faible

L'ordre Faible ≺ Moyen ≺ Élevé ≺ Critique est porté par le métier. Aucune dato ne dit qu'un dossier Critique est « deux fois plus risqué » qu'un dossier Moyen.

python
import pandas as pd
from pandas.api.types import CategoricalDtype

ordre = CategoricalDtype(
    categories=["Faible", "Moyen", "Élevé", "Critique"], ordered=True
)
y = df["niveau_risque"].astype(ordre)

print(y.dtype)
print(y.cat.codes.head().tolist())
print((y > "Moyen").head().tolist())
category
[1, 0, 3, 2, 1]
[False, False, True, True, False]

Interprétation : y demeure un vecteur (n,), comme en binaire et en multiclasse. La différence est portée par le type : ordered=True rend la comparaison y > "Moyen" valide et interprétable. Les codes 0 à 3 sont des rangs, non des quantités.

4.2 Les deux traitements naïfs et ce qu'ils coûtent

TraitementCe qui est supposéCe qui est perdu ou introduit à tort
Comme multiclasse nominalAucun ordre entre les clasesPerte d'information : toutes les confusions sont équivalentes ; predecir Faible au lieu de Critique coûte autant que predecir Élevé au lieu de Critique
Comme regresión sur les codes 0-3Écarts égaux entre niveaux consécutifs et objetivo d'intervalleHypothèse non fondée : rien n'établit que l'écart Faible → Moyen égale l'écart Élevé → Critique ; la sortie continue impose en outre des seuils d'arrondi arbitraires
Comme ordinalOrdre total, distances non définiesTraitement conforme à la nature de la mesure

La perte d'information du traitement multiclasse se mesure directement.

python
import numpy as np
from sklearn.metrics import accuracy_score, mean_absolute_error, cohen_kappa_score

y_true = np.array([0, 1, 2, 3, 2, 1, 0, 3, 2, 1])
pred_A = np.array([0, 1, 2, 3, 2, 1, 0, 3, 1, 1])   # une erreur d'un rang
pred_C = np.array([0, 1, 2, 3, 2, 1, 0, 0, 2, 1])   # une erreur de trois rangs

for nom, p in [("A — erreur de 1 rang", pred_A), ("C — erreur de 3 rangs", pred_C)]:
    print(nom)
    print("  accuracy  :", accuracy_score(y_true, p))
    print("  MAE rangs :", round(mean_absolute_error(y_true, p), 3))
    print("  QWK       :", round(cohen_kappa_score(y_true, p, weights="quadratic"), 3))
A — erreur de 1 rang
  accuracy  : 0.9
  MAE rangs : 0.1
  QWK       : 0.952
C — erreur de 3 rangs
  accuracy  : 0.9
  MAE rangs : 0.3
  QWK       : 0.571

Interprétation : les deux prédictions obtiennent la même exactitud, 0,90, alors que la seconde confond un dossier Critique avec un dossier Faible — l'error la plus coûteuse du domaine. L'exactitud, métrique de clasificación nominale, est structurellement aveugle à l'amplitude de l'error. La MAE sur les rangs les distingue immédiatement, dans un rapport de 1 à 3, et le kappa pondéré quadratique passe de 0,952 à 0,571.

Point de vigilance : la MAE sur des rangs est un indicateur de comparaison entre modelos, non une quantité métier. Elle ne s'interprète pas comme « 0,3 niveau de riesgo en media », puisque le niveau de riesgo n'est pas mesurable.

ANALOGIE — Le podium olympique

Les places de première, deuxième et troisième sont strictement ordonnées : nul ne conteste que la première précède la deuxième.

Rien n'autorise pour autant à écrire que l'écart entre le premier et le deuxième égale l'écart entre le deuxième et le troisième. Sur un 100 mètres, le premier peut devancer le deuxième de deux centièmes et le deuxième devancer le troisième d'une demi-seconde.

Traiter les rangs comme des nombres reviendrait à affirmer que ces deux écarts sont identiques. Les ignorer complètement reviendrait à affirmer que finir troisième au lieu de premier n'est pas plus regrettable que finir deuxième. La clasificación ordinale est la formulation qui refuse ces deux erreurs.

4.3 Les approches disponibles

ApprochePrincipeRemarque
modelo à cotes proportionnelles (McCullagh, 1980)modelo logistique cumulatif : K−1 seuils partagent un même vecteur de coefficientsreferencia statistique ; hypothèse de proportionnalité des cotes à vérifier
Décomposition cumulative binaire (Frank et Hall, 2001)K−1 classifieurs binaires « y > c_k ? », probabilités recomposées par différencePermet d'utiliser n'importe quel clasificador binaire probabiliste
regresión puis discrétisationRégresser sur les rangs, puis découper par seuils optimisésSimple et souvent efficace ; assume implicitement l'équidistance
Multiclasse à coûts asymétriquesMulticlasse classique avec matrice de coûts pénalisant les grands écartsRéintroduit l'ordre par la fonction de coût

Métriques adaptées : MAE ou RMSE sur les rangs (chapitres 067 et 069), kappa pondéré quadratique (Quadratic Weighted Kappa), matriz de confusión lue en observant la concentration autour de la diagonale (chapitre 052).


5. La clasificación multilabel

DÉFINITION — clasificación multilabel (multi-label clasificación)

Définition rigoureuse

Tâche où l'espace d'arrivée est Y = {0, 1}^K, c'est-à-dire l'ensemble des parties de C = {c_1, ..., c_K}. À chaque observación x est associé un vecteur binaire y = (y_1, ..., y_K)y_k = 1 si l'etiqueta c_k s'applique. Aucune contrainte ne pèse sur Σ_k y_k, qui peut valoir 0 (aucune etiqueta) jusqu'à K (toutes).

Les etiquetas ne sont ni exclusives ni indépendantes : la modélisation de leurs corrélations constitue la difficulté propre du problème.

Traduction en langage courant

Une observación peut recevoir plusieurs etiquetas à la fois, ou aucune. Chaque etiqueta est une question « oui ou non » indépendante en apparence, mais les réponses sont liées entre elles.

Point de vigilance

Le multilabel se distingue du multiclasse-multisortie (multiclass-multioutput), où l'on prédit plusieurs variables cibles, chacune étant elle-même multiclasse. Le multilabel est le cas particulier où toutes les sorties sont binaires.

5.1 Exemple de datos — étiquetage automatique de photographies

photo_idluminance_moyteinte_dominantevisages_detectesplagecoucher_de_soleilpersonneanimal
P-0001182Orange01100
P-000295Gris20010
P-0003164Bleu11011
P-000447Vert00000
P-0005201Orange31110

Une photographie peut être simultanément une plage, un coucher de soleil et contenir une personne. La photo P-0004 ne porte aucune des quatre etiquetas : le vecteur nul est une observación valide, ce qui est impossible en multiclasse.

python
from sklearn.preprocessing import MultiLabelBinarizer

etiquettes = [
    ["plage", "coucher_de_soleil"],
    ["personne"],
    ["plage", "personne", "animal"],
    [],
]
mlb = MultiLabelBinarizer(
    classes=["animal", "coucher_de_soleil", "personne", "plage"]
)
Y = mlb.fit_transform(etiquettes)

print(mlb.classes_)
print(Y)
print(Y.shape)
print(Y.sum(axis=1))
['animal' 'coucher_de_soleil' 'personne' 'plage']
[[0 1 0 1]
 [0 0 1 0]
 [1 0 1 1]
 [0 0 0 0]]
(4, 4)
[2 1 3 0]

Interprétation : Y est une matrice (n, K), et non plus un vecteur. La somme par ligne vaut 2, 1, 3, 0 : elle n'est pas contrainte à 1.

5.2 La distinction stricte avec le multiclasse

Une objetivo multiclasse encodée en indicatrices (one-hot) produit elle aussi une matrice (n, K). La confusion est fréquente et la distinction formelle est pourtant nette.

python
from sklearn.preprocessing import LabelBinarizer

lb = LabelBinarizer()
print(lb.fit_transform(["Technique", "Facturation", "Commercial", "Technique"]))
[[0 0 1]
 [0 1 0]
 [1 0 0]
 [0 0 1]]
CritèreMulticlasse encodé en indicatricesMultilabel
Forme de la matrice(n, K)(n, K)
Somme de chaque ligneExactement 1Entre 0 et K
Vecteur nul admissibleNonOui
Sortie du modelosoftmax, probabilités sommant à 1K sigmoïdes indépendantes
función de pérdida usuelleEntropie croisée catégorielleSomme de K entropies croisées binaires
Reconstruction de l'etiquetaargmax sur la ligneSeuillage indépendant de chaque colonne

Critère de reconnaissance : Y.sum(axis=1) constant et égal à 1 signe un multiclasse encodé ; toute autre distribución signe un multilabel.

Ce schéma est la pertinence binaire (binary relevance) : K classifieurs binaires indépendants. Il est simple et parallélisable, mais ignore par construction les corrélations entre etiquetas — la co-occurrence fréquente de plage et coucher_de_soleil n'est jamais exploitée. Les chaînes de classifieurs (Read et al., 2011) y remédient en ajoutant les prédictions des etiquetas précédentes aux variables explicativas des suivantes.

5.3 Conséquence sur les métriques

Une predicción multilabel peut être partiellement correcte, situation qui n'existe ni en binaire ni en multiclasse. Les métriques doivent en tenir compte.

python
import numpy as np
from sklearn.metrics import accuracy_score, hamming_loss, f1_score

Y_true = np.array([[1,1,0,0], [0,0,1,0], [1,0,1,1], [0,0,0,1], [1,1,1,0]])
Y_pred = np.array([[1,1,0,0], [0,0,1,0], [1,0,1,0], [0,1,0,1], [1,0,1,0]])

print("exactitude exacte :", accuracy_score(Y_true, Y_pred))
print("hamming loss      :", round(hamming_loss(Y_true, Y_pred), 3))
print("F1 micro          :", round(f1_score(Y_true, Y_pred, average="micro"), 3))
print("F1 macro          :", round(f1_score(Y_true, Y_pred, average="macro"), 3))
exactitude exacte : 0.4
hamming loss      : 0.15
F1 micro          : 0.842
F1 macro          : 0.792

Interprétation : l'exactitud exacte (subset accuracy) n'accorde le point que si toutes les etiquetas de la ligne sont correctes ; elle tombe à 0,40 alors que 85 % des décisions etiqueta par etiqueta sont justes. Ces deux chiffres décrivent le même modelo et ne sont pas contradictoires : ils répondent à deux questions différentes.

MétriqueCe qu'elle mesureUsage recommandé
exactitud exacte (subset accuracy)Proportion de lignes entièrement correctesTrès sévère ; pertinente si la sortie est consommée en bloc
Hamming lossProportion d'etiquetas individuelles erronéesIndicateur global tolérant aux erreurs partielles
F1 microAgrège les comptages sur toutes les etiquetasDominé par les etiquetas fréquentes
F1 macromedia des F1 par etiquetaDonne un poids égal aux etiquetas rares
F1 par etiquetaDétail etiqueta par etiquetaDiagnostic ; indispensable au pilotage

Point de vigilance : la quasi-totalité des etiquetas d'un problème multilabel réaliste sont rares. Un modelo prédisant systématiquement le vecteur nul obtient souvent une hamming loss excellente. La lecture etiqueta par etiqueta n'est pas optionnelle.


6. La regresión logística : un clasificador au nom trompeur

C'est le piège de dénomination le plus fréquent du domaine. La regresión logistique porte le mot « regresión » et résout un problème de clasificación.

DÉFINITION — regresión logística (logistic regression)

Définition rigoureuse

modelo linéaire généralisé (Nelder et Wedderburn, 1972) pour une réponse de loi de Bernoulli, dont la fonction de lien est le logit. Le modelo postule

logit(p(x)) = ln( p(x) / (1 − p(x)) ) = β_0 + β_1 x_1 + ... + β_p x_p

p(x) = P(Y = 1 | X = x). En inversant le lien, on obtient

p(x) = 1 / (1 + exp(−(β_0 + β·x))), c'est-à-dire la fonction logistique appliquée à une combinaison linéaire des variables explicativas. Les coefficients sont estimés par maximisation de la verosimilitud.

Traduction en langage courant

On ajuste une droite, non pas sur la clase elle-même, mais sur le logarithme de la cote de l'événement ; on convertit ensuite ce résultat en probabilidad par une courbe en S comprise entre 0 et 1.

Point de vigilance

La sortie native du modelo est une probabilidad, pas une clase. La clasificación n'apparaît qu'à l'étape suivante, par comparaison à un seuil (chapitre 062). Le modelo est donc bien une regresión sur une quantité continue — la probabilidad — au service d'une tâche de clasificación.

6.1 L'origine du nom

ÉtapeContributionEffet sur la dénomination
Verhulst, 1838-1845Introduit la fonction logistique pour modéliser la croissance d'une population sous contrainteFournit le qualificatif « logistique », qui désigne la courbe en S
Berkson, 1944Forge le terme logit et promeut le modelo en biostatistiqueInstalle le lien logit comme standard
Cox, 1958Formalise l'analyse de datos binaires par ce modeloDiffusion en statistique appliquée
Nelder et Wedderburn, 1972Cadre unificateur des modelos linéaires généralisésclase le modelo dans la famille « regresión », par filiation avec la regresión lineal

Le mot « regresión » est donc un héritage de la famille statistique du modelo — un modelo linéaire ajusté sur une transformation de l'espérance conditionnelle —, non une description de la tâche résolue.

6.2 Vérification dans scikit-learn

python
from sklearn.base import is_classifier, is_regressor
from sklearn.linear_model import LogisticRegression, LinearRegression

print(is_classifier(LogisticRegression()), is_regressor(LogisticRegression()))
print(is_classifier(LinearRegression()), is_regressor(LinearRegression()))
print(hasattr(LogisticRegression(), "predict_proba"))
True False
False True
True

Interprétation : scikit-learn range LogisticRegression dans le module linear_model — par famille mathématique — mais l'expose comme un clasificador : is_classifier renvoie True, la clase hérite de ClassifierMixin, elle possède predict_proba, predict renvoie des etiquetas et score calcule une exactitud. Le rangement du module traduit la parenté algorithmique ; l'interface traduit la tâche.

python
import numpy as np

X = np.array([[10.0], [20.0], [30.0], [40.0], [50.0], [60.0]])
y = np.array([0, 0, 0, 1, 1, 1])

clf = LogisticRegression().fit(X, y)
print(clf.classes_)
print(clf.predict_proba(np.array([[25.0], [45.0]])).round(3))
print(clf.predict(np.array([[25.0], [45.0]])))
[0 1]
[[0.997 0.003]
 [0.003 0.997]]
[0 1]

Interprétation : predict_proba renvoie une matrice (2, 2) de probabilités sommant à 1 par ligne — la sortie native, continue. predict renvoie des etiquetas de clase 0 et 1 — la sortie après seuillage à 0,5. Le mécanisme complet est traité au chapitre 036.

6.3 Les autres dénominations à surveiller

NomNature réelleRemarque
LogisticRegressionclasificadorBinaire, ou multiclasse en formulation multinomiale
RidgeClassifierclasificadorregresión Ridge sur une objetivo codée −1 / +1, puis signe
SGDClassifierclasificadorOptimiseur, pas famille de modelos ; la perte détermine le modelo
LinearSVCclasificador« C » pour Classifier ; LinearSVR en est la variante de regresión
LinearRegressionRégresseurobjetivo numérique continue
Ordinal regressionclasificadorTerme consacré pour la clasificación ordinale (point 4)
KNeighborsClassifier / KNeighborsRegressorclasificador / RégresseurMême algoritmo, deux tâches, deux clases distinctes

Règle professionnelle : le nom d'une clase indique sa famille mathématique ou son histoire ; seule la nature de la variable objetivo détermine la tâche. En cas de doute, is_classifier et la présence de predict_proba tranchent.


7. Tableau récapitulatif des quatre types

CritèreBinaireMulticlasseOrdinaleMultilabel
Nombre de clasesK = 2K > 2K > 2K ≥ 2
etiquetas par observación1110 à K
Ordre sur les clasesSans objetNonOui, sans distanceSans objet
Forme de y(n,)(n,)(n,) ordonné(n, K) binaire
Sortie native du modelo1 probabilidadK probabilités softmaxProbabilités cumulées ou rangK probabilités indépendantes
Somme des probabilités111Non contrainte
ExempleTransaction frauduleuse ou nonRoutage d'un ticket vers une équipeNiveau de riesgo de créditÉtiquetage d'une photographie
Métriques appropriéesprecisión, exhaustividad, F1, ROC-AUC, PR-AUCexactitud, F1 macro / micro / pondéré, matriz de confusiónMAE sur rangs, kappa pondéré quadratique, matriz de confusiónHamming loss, F1 micro / macro, F1 par etiqueta, exactitud exacte
Métrique à proscrireexactitud si déséquilibre marquéexactitud si déséquilibre marquéexactitud seule : aveugle à l'amplitudeexactitud exacte seule : trop sévère
Chapitres de renvoi052 à 064065067, 069, 052065, 059

Trois invariants à retenir :

  1. Binaire, multiclasse et ordinale partagent la même forme de y ; seuls le nombre de modalités et la présence d'un ordre les séparent.
  2. Le multilabel est le seul type dont la objetivo est une matrice.
  3. Le type de clasificación détermine les métriques admissibles avant de déterminer les algoritmos.

8. Erreurs de raisonnement fréquentes

error — Qualifier de multiclasse un problème multilabel

Le critère n'est pas le nombre de clases mais le nombre d'etiquetas par observación. Un problème à trois clases dont une observación peut porter deux etiquetas est multilabel, pas multiclasse.

Formulation correcte : « Le multiclasse suppose l'exclusivité mutuelle des clases ; dès qu'une observación peut porter plusieurs etiquetas simultanément, le problème est multilabel et la objetivo devient une matrice (n, K). »

error — Traiter une objetivo ordinale comme une regresión sans justification

Coder Faible, Moyen, Élevé, Critique en 0, 1, 2, 3 puis régresser suppose que les écarts entre niveaux consécutifs sont égaux. Une échelle ordinale ne porte pas cette information (Stevens, 1946).

Formulation correcte : « La regresión sur les rangs est une approximation pragmatique dont l'hypothèse d'équidistance doit être énoncée et, si possible, justifiée par le métier ; elle n'est pas le traitement de referencia. »

error — Traiter une objetivo ordinale comme un multiclasse nominal

Le traitement nominal rend toutes les confusions équivalentes. Confondre Critique et Faible est alors comptabilisé au même titre que confondre Élevé et Critique, alors que le coût métier diffère d'un ordre de grandeur.

Formulation correcte : « Le traitement nominal d'une objetivo ordinale est recevable comme referencia de départ, à condition de compléter l'exactitud par une métrique sensible à l'amplitude de l'error, comme la MAE sur les rangs ou le kappa pondéré quadratique. »

error — Croire que la regresión logística est un modelo de regresión

Le nom renvoie à la famille des modelos linéaires généralisés et à la fonction logistique de Verhulst, non à la nature de la tâche. La objetivo est catégorielle.

Formulation correcte : « La regresión logística est un algoritmo de clasificación. Elle régresse le logit d'une probabilidad sur les variables explicatives ; la décision de clase résulte d'une comparaison de cette probabilidad à un seuil. »

error — Laisser la clase positive se définir par l'ordre alphabétique

Avec des etiquetas textuelles, l'ordre par défaut de scikit-learn est alphabétique. "Fraude" devient alors la clase négative et "Normal" la clase positive : precisión et exhaustividad sont calculés correctement, mais sur la clase qui n'intéresse personne.

Formulation correcte : « La clase positive est désignée explicitement comme la clase d'intérêt, généralement l'événement rare et coûteux, et cette désignation accompagne systématiquement la restitution des métriques. »

error — Considérer que K > 2 impose une décomposition OvR ou OvO

Les arbres, forêts, méthodes de boosting, KNN, Naive Bayes, la regresión logistique multinomiale et les redes neuronales traitent nativement K > 2. La décomposition ne concerne que les algoritmos intrinsèquement binaires.

Formulation correcte : « La décomposition un-contre-tous ou un-contre-un est un mécanisme de compatibilité pour les classifieurs binaires, appliqué de manière transparente par la bibliothèque, et non une étape obligatoire du multiclasse. »

error — Piloter un modelo multilabel sur la seule exactitud exacte

L'exactitud exacte exige que toutes les etiquetas d'une observación soient simultanément correctes. Sur K etiquetas, elle s'effondre mécaniquement quand K croît, même pour un modelo dont chaque décision individuelle est bonne.

Formulation correcte : « Un modelo multilabel se pilote sur un jeu de métriques : hamming loss pour la vue globale, F1 macro pour la sensibilidad aux etiquetas rares, et F1 par etiqueta pour le diagnostic. »


9. Synthèse

LES TROIS QUESTIONS DE QUALIFICATION
    1. Plusieurs étiquettes par observation ?   Oui -> MULTILABEL
    2. Combien de classes exclusives ?          K = 2 -> BINAIRE
    3. Les classes sont-elles ordonnées ?       Oui -> ORDINALE
                                                Non -> MULTICLASSE

FORME DE LA CIBLE
    Binaire     y de forme (n,)      valeurs 0 / 1
    Multiclasse y de forme (n,)      K modalités non ordonnées
    Ordinale    y de forme (n,)      K modalités ordonnées, sans distance
    Multilabel  Y de forme (n, K)    matrice binaire, somme de ligne libre

SIGNATURE FORMELLE DU MULTILABEL
    Y.sum(axis=1) constant et egal a 1  ->  multiclasse encode
    Y.sum(axis=1) quelconque            ->  multilabel

CLASSE POSITIVE (binaire)
    Toujours designee explicitement : l'evenement rare, couteux, actionnable.
    L'inversion echange rappel et specificite et transforme AUC en 1 - AUC.

CIBLE ORDINALE
    Traitee en multiclasse : perte de l'ordre, toutes les erreurs equivalentes.
    Traitee en regression  : hypothese d'ecarts egaux, non fondee (Stevens 1946).
    Traitement conforme    : modeles cumulatifs, metriques sensibles a l'ecart.

DECOMPOSITION MULTICLASSE
    Un-contre-tous : K classifieurs,        sous-problemes desequilibres
    Un-contre-un   : K(K-1)/2 classifieurs, sous-problemes de taille 2n/K

REGRESSION LOGISTIQUE
    Nom herite de la fonction logistique (Verhulst) et de la famille des
    modeles lineaires generalises (Nelder et Wedderburn, 1972).
    Tache resolue : CLASSIFICATION. Sortie native : une probabilite.
    Detail au chapitre 036.

Énoncé de synthèse

Le type d'une tâche de clasificación se lit sur la forme de la variable objetivo et non sur le vocabulaire employé : un vecteur à deux modalités désigne un problème binaire, un vecteur à K modalités un problème multiclasse — ordinal si ces modalités sont rangées sans être mesurées —, une matrice binaire un problème multilabel ; et le nom d'un algoritmo, comme celui de la regresión logistique, renseigne sur sa famille mathématique, jamais sur la tâche qu'il résout.


Quiz associés

  • 011.1-quiz-qualification-tache.md
  • 011.2-quiz-clasificación-binaire.md
  • 011.3-quiz-clasificación-multiclasse.md
  • 011.4-quiz-clasificación-ordinale.md
  • 011.5-quiz-clasificación-multilabel.md
  • 011.6-quiz-regression-logistique.md
  • 011.7-quiz-synthese-comparative.md

Chapitre suivant : 012-cycle-de-vie-ml.md