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 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).
| Ordre | Question | Réponse | Type retenu |
|---|---|---|---|
| 1 | Une observación peut-elle porter plusieurs etiquetas simultanément ? | Oui | Multilabel |
| 2 | Combien de clases mutuellement exclusives ? | K = 2 | Binaire |
| 2 | Combien de clases mutuellement exclusives ? | K > 2 | Passer à la question 3 |
| 3 | Les clases sont-elles munies d'un ordre total naturel ? | Non | Multiclasse (nominale) |
| 3 | Les clases sont-elles munies d'un ordre total naturel ? | Oui | Ordinale |
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.
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.
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.
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 Bernoulli | S'écrit p^y · (1−p)^(1−y), base de la log-loss (chapitre 061) |
predict_proba | Renvoie une matrice (n, 2) ; la colonne d'indice 1 porte la clase 1 |
| matriz de confusión | L'ordre [0, 1] fixe la disposition TN, FP, FN, TP (chapitre 052) |
| precisión, exhaustividad, F1 | Calculé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.
| transaction_id | montant | pays_carte | pays_marchand | heure | canal | est_fraude |
|---|---|---|---|---|---|---|
| T-000001 | 42,90 | es | es | 14 | Boutique | 0 |
| T-000002 | 1 890,00 | es | RU | 3 | En ligne | 1 |
| T-000003 | 12,50 | es | es | 9 | Boutique | 0 |
| T-000004 | 7,20 | es | es | 19 | En ligne | 0 |
| T-000005 | 2 450,00 | es | US | 4 | En ligne | 1 |
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: float64Interpré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.
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.
| Grandeur | Effet de l'inversion de la clase positive |
|---|---|
| modelo appris, frontière de décision | Inchangé |
| exactitud (accuracy) | Inchangée — métrique symétrique |
| precisión, exhaustividad, F1 | Changent de valeur : ils portent sur l'autre clase |
| exhaustividad et especificidad | S'échangent |
| Faux positifs et faux négatifs | S'échangent |
| ROC-AUC | Devient 1 − AUC |
| PR-AUC | Change 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.
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.
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.
La distinction ne porte pas sur le nombre de clases mais sur le nombre d'etiquetas attribuées à une observación.
| Critère | Multiclasse | Multilabel |
|---|---|---|
Nombre de clases possibles K | K > 2 | K ≥ 2 |
| Nombre d'etiquetas par observación | Exactement 1 | 0, 1, ou plusieurs |
| Exclusivité mutuelle des clases | Oui, par hypothèse | Non |
Forme de y brut | (n,) | (n, K) |
| Somme des indicatrices sur une ligne | Toujours 1 | Entre 0 et K |
| Somme des probabilités prédites | 1, contrainte softmax | Non 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.
| ticket_id | canal | longueur_texte | client_premium | anciennete_mois | categorie |
|---|---|---|---|---|---|
| TK-0001 | Courriel | 412 | 0 | 14 | Facturation |
| TK-0002 | Téléphone | 87 | 1 | 61 | Technique |
| TK-0003 | Formulaire | 235 | 0 | 3 | Commercial |
| TK-0004 | Courriel | 1 104 | 1 | 28 | Résiliation |
| TK-0005 | Téléphone | 156 | 0 | 9 | Technique |
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: int64Interpré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).
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.
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ère | Un-contre-tous (OvR) | Un-contre-un (OvO) |
|---|---|---|
| Nombre de classifieurs | K | K(K−1)/2 |
Pour K = 4 / 10 / 100 | 4 / 10 / 100 | 6 / 45 / 4 950 |
| Taille de chaque sous-problème | n observaciones | environ 2n/K observaciones |
Coût total, algoritmo linéaire en n | O(K · n) | O(K · n) |
Coût total, algoritmo quadratique en n | O(K · n²) | O(n²) |
| Déséquilibre induit | Fort : 1 clase contre K−1 | Aucun entre les deux clases de la paire |
| Zones d'ambiguïté | Aucun ou plusieurs classifieurs positifs | Votes 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.
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 : 15Interpré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.
| algoritmo | Traitement du multiclasse | Chapitre |
|---|---|---|
| árbol de decisión | Natif — distribución de clases par feuille | 037 |
| bosque aleatorio | Natif — agrégation des votes des arbres | 038 |
| gradiente boosting | Natif, généralement par K ensembles d'arbres | 039 |
| k vecinos más cercanos | Natif — vote majoritaire dans le voisinage | 040 |
| Naive Bayes | Natif — argmax de la probabilidad a posteriori | 042 |
| regresión logística | Natif en formulation multinomiale (softmax) | 036 |
| perceptrón multicouche | Natif — K neurones de sortie et softmax | 043 |
SVM à noyau (SVC) | Décomposition OvO | 041 |
SVM linéaire (LinearSVC) | Décomposition OvR | 041 |
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é.
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 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.
| dossier_id | revenu_annuel | taux_endettement | incidents_12m | anciennete_bancaire | niveau_risque |
|---|---|---|---|---|---|
| D-0001 | 54 000 | 0,21 | 0 | 12 | Faible |
| D-0002 | 28 500 | 0,47 | 1 | 3 | Moyen |
| D-0003 | 19 200 | 0,63 | 4 | 1 | Critique |
| D-0004 | 41 000 | 0,38 | 2 | 7 | Élevé |
| D-0005 | 67 300 | 0,15 | 0 | 21 | Faible |
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.
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.
| Traitement | Ce qui est supposé | Ce qui est perdu ou introduit à tort |
|---|---|---|
| Comme multiclasse nominal | Aucun ordre entre les clases | Perte 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'intervalle | Hypothè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 ordinal | Ordre total, distances non définies | Traitement conforme à la nature de la mesure |
La perte d'information du traitement multiclasse se mesure directement.
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.571Interpré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.
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.
| Approche | Principe | Remarque |
|---|---|---|
| modelo à cotes proportionnelles (McCullagh, 1980) | modelo logistique cumulatif : K−1 seuils partagent un même vecteur de coefficients | referencia 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érence | Permet d'utiliser n'importe quel clasificador binaire probabiliste |
| regresión puis discrétisation | Régresser sur les rangs, puis découper par seuils optimisés | Simple et souvent efficace ; assume implicitement l'équidistance |
| Multiclasse à coûts asymétriques | Multiclasse classique avec matrice de coûts pénalisant les grands écarts | Ré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).
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) où 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.
| photo_id | luminance_moy | teinte_dominante | visages_detectes | plage | coucher_de_soleil | personne | animal |
|---|---|---|---|---|---|---|---|
| P-0001 | 182 | Orange | 0 | 1 | 1 | 0 | 0 |
| P-0002 | 95 | Gris | 2 | 0 | 0 | 1 | 0 |
| P-0003 | 164 | Bleu | 1 | 1 | 0 | 1 | 1 |
| P-0004 | 47 | Vert | 0 | 0 | 0 | 0 | 0 |
| P-0005 | 201 | Orange | 3 | 1 | 1 | 1 | 0 |
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.
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.
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.
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ère | Multiclasse encodé en indicatrices | Multilabel |
|---|---|---|
| Forme de la matrice | (n, K) | (n, K) |
| Somme de chaque ligne | Exactement 1 | Entre 0 et K |
| Vecteur nul admissible | Non | Oui |
| Sortie du modelo | softmax, probabilités sommant à 1 | K sigmoïdes indépendantes |
| función de pérdida usuelle | Entropie croisée catégorielle | Somme de K entropies croisées binaires |
| Reconstruction de l'etiqueta | argmax sur la ligne | Seuillage 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.
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.
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.792Interpré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étrique | Ce qu'elle mesure | Usage recommandé |
|---|---|---|
| exactitud exacte (subset accuracy) | Proportion de lignes entièrement correctes | Très sévère ; pertinente si la sortie est consommée en bloc |
| Hamming loss | Proportion d'etiquetas individuelles erronées | Indicateur global tolérant aux erreurs partielles |
| F1 micro | Agrège les comptages sur toutes les etiquetas | Dominé par les etiquetas fréquentes |
| F1 macro | media des F1 par etiqueta | Donne un poids égal aux etiquetas rares |
| F1 par etiqueta | Détail etiqueta par etiqueta | Diagnostic ; 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.
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 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
où 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.
| Étape | Contribution | Effet sur la dénomination |
|---|---|---|
| Verhulst, 1838-1845 | Introduit la fonction logistique pour modéliser la croissance d'une population sous contrainte | Fournit le qualificatif « logistique », qui désigne la courbe en S |
| Berkson, 1944 | Forge le terme logit et promeut le modelo en biostatistique | Installe le lien logit comme standard |
| Cox, 1958 | Formalise l'analyse de datos binaires par ce modelo | Diffusion en statistique appliquée |
| Nelder et Wedderburn, 1972 | Cadre unificateur des modelos linéaires généralisés | clase 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.
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
TrueInterpré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.
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.
| Nom | Nature réelle | Remarque |
|---|---|---|
LogisticRegression | clasificador | Binaire, ou multiclasse en formulation multinomiale |
RidgeClassifier | clasificador | regresión Ridge sur une objetivo codée −1 / +1, puis signe |
SGDClassifier | clasificador | Optimiseur, pas famille de modelos ; la perte détermine le modelo |
LinearSVC | clasificador | « C » pour Classifier ; LinearSVR en est la variante de regresión |
LinearRegression | Régresseur | objetivo numérique continue |
| Ordinal regression | clasificador | Terme consacré pour la clasificación ordinale (point 4) |
KNeighborsClassifier / KNeighborsRegressor | clasificador / Régresseur | Mê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.
| Critère | Binaire | Multiclasse | Ordinale | Multilabel |
|---|---|---|---|---|
| Nombre de clases | K = 2 | K > 2 | K > 2 | K ≥ 2 |
| etiquetas par observación | 1 | 1 | 1 | 0 à K |
| Ordre sur les clases | Sans objet | Non | Oui, sans distance | Sans objet |
Forme de y | (n,) | (n,) | (n,) ordonné | (n, K) binaire |
| Sortie native du modelo | 1 probabilidad | K probabilités softmax | Probabilités cumulées ou rang | K probabilités indépendantes |
| Somme des probabilités | 1 | 1 | 1 | Non contrainte |
| Exemple | Transaction frauduleuse ou non | Routage d'un ticket vers une équipe | Niveau de riesgo de crédit | Étiquetage d'une photographie |
| Métriques appropriées | precisión, exhaustividad, F1, ROC-AUC, PR-AUC | exactitud, F1 macro / micro / pondéré, matriz de confusión | MAE sur rangs, kappa pondéré quadratique, matriz de confusión | Hamming loss, F1 micro / macro, F1 par etiqueta, exactitud exacte |
| Métrique à proscrire | exactitud si déséquilibre marqué | exactitud si déséquilibre marqué | exactitud seule : aveugle à l'amplitude | exactitud exacte seule : trop sévère |
| Chapitres de renvoi | 052 à 064 | 065 | 067, 069, 052 | 065, 059 |
Trois invariants à retenir :
y ; seuls le
nombre de modalités et la présence d'un ordre les séparent.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). »
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. »
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. »
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. »
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. »
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. »
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. »
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 à
Kmodalité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.md011.2-quiz-clasificación-binaire.md011.3-quiz-clasificación-multiclasse.md011.4-quiz-clasificación-ordinale.md011.5-quiz-clasificación-multilabel.md011.6-quiz-regression-logistique.md011.7-quiz-synthese-comparative.mdChapitre suivant : 012-cycle-de-vie-ml.md