Accueil / Factory / Algos ML / Classification multi-label — factory / algos ML / apprentissage supervisé

CLASSIFICATION MULTI-LABEL.

Un avis peut parler à la fois de livraison et de prix ; un panier peut contenir du beurre et du parmesan. La classification multi-label prédit plusieurs étiquettes pour un même cas, au lieu d'en choisir une seule. On l'utilise pour étiqueter des documents, router des demandes ou suggérer plusieurs produits.

ClassificationMulti-labelRecommandationPanier d'achatNiveau : intermédiaire

FICHE D'IDENTITÉ

notes sur 5 · usage entreprise
PerformanceDépend du modèle de base et des liens exploités entre étiquettes
InterprétabilitéUn modèle par étiquette, chacun lisible séparément
VitesseAutant de modèles que d'étiquettes, mais chacun rapide
Facilité de réglageSeuils et ordre de la chaîne à régler par étiquette
Tolérance aux données brutesHérite des exigences du modèle de base choisi
EN 30 SECONDES

Un bibliothécaire qui range un livre : il ne choisit pas un seul rayon, il colle toutes les étiquettes pertinentes, « histoire », « cuisine », « Italie ».

1. On pose une question oui / non par étiquette

Méthode de base, la relevance binaire : un classifieur par étiquette, entraîné indépendamment. Ce produit sera-t-il dans le panier, oui ou non ?

2. On exploite les liens entre étiquettes

Dans une chaîne de classifieurs, chaque modèle reçoit aussi les réponses des modèles précédents. Le parmesan est prédit en sachant si la sauce tomate l'a été.

3. On fixe un seuil par étiquette

Chaque étiquette reçoit une probabilité. On retient celles qui dépassent un seuil, choisi selon le coût d'une étiquette oubliée ou superflue.

LE CAS MÉTIER

recommandation en caisse · distribution alimentaire / e-commerce
EN ENTRÉE

Des tickets de caisse

Un ticket par ligne, un produit par colonne (acheté ou non). Cinq produits servent d'étiquettes à prédire ensemble : beurre, sauce tomate, parmesan, chips, vin rouge. Les autres produits du panier servent d'indices.

EN SORTIE

Plusieurs suggestions par panier

Pour chaque ticket, une probabilité par produit ; au-delà de 25 %, le produit est suggéré. Sur le jeu d'exemple, la chaîne améliore surtout le parmesan : son F1 passe de 0,30 à 0,39, car il s'achète avec la sauce tomate.

CE QU'ON MESURE

Le F1 étiquette par étiquette

Une moyenne globale cache les étiquettes rares, souvent mal prédites. On suit le F1 de chaque étiquette : il combine la part des achats réels anticipés et la part des suggestions justes.

QUAND LE SORTIR, QUAND L'ÉVITER

OUI

  • Documents ou demandes qui relèvent de plusieurs thèmes à la fois
  • Suggestion de plusieurs produits complémentaires
  • Étiquettes liées entre elles, que l'on veut exploiter
  • Diagnostic ou contrôle qualité avec plusieurs défauts possibles

NON

  • Une seule classe possible par cas : c'est de la classification multiclasse classique
  • Des milliers d'étiquettes : passer à des méthodes de classement ou d'embeddings
  • Simple recherche d'associations entre produits : Apriori suffit et se lit mieux
  • Étiquettes très rares : trop peu d'exemples pour entraîner un modèle par étiquette
LES 3 CHOIX QUI COMPTENT

Noms donnés pour Python (scikit-learn). En R, la relevance binaire s'écrit en une boucle ; le package utiml propose les méthodes avancées.

Méthode : MultiOutputClassifier / ClassifierChain

Relevance binaire pour des étiquettes indépendantes, chaîne quand elles se tiennent. L'ordre de la chaîne compte : on place d'abord les étiquettes qui aident à prédire les autres.

Seuil par étiquette

Le seuil de 50 % ne convient pas aux étiquettes rares : le parmesan ne dépasse presque jamais cette probabilité. On fixe un seuil par étiquette, sur un jeu de validation.

Modèle de base

Régression logistique, Random Forest, SVM : chaque étiquette hérite de ses forces et de ses exigences. On commence simple, puis on remplace si le gain le justifie.

LE CODE MINIMAL

jeu d'exemple : tickets_caisse.csv ↓
# Produits à suggérer en caisse : classification multi-label en R
tickets <- read.csv("tickets_caisse.csv")
paniers <- as.data.frame.matrix(table(tickets$id_ticket, tickets$produit))
paniers[paniers > 1] <- 1                          # 1 ligne par ticket, 1 colonne par produit

etiquettes <- c("beurre", "sauce_tomate", "parmesan", "chips", "vin_rouge")
X <- paniers[, setdiff(names(paniers), etiquettes)]
set.seed(42)
idx <- sample(nrow(paniers), round(0.7 * nrow(paniers)))
f1 <- function(reel, pred) round(2 * sum(reel & pred) / (sum(reel) + sum(pred)), 2)

# Relevance binaire : une régression logistique par étiquette, seuil de 25 %
proba <- list()
for (e in etiquettes) {
  d <- data.frame(X, cible = paniers[[e]])
  m <- glm(cible ~ ., data = d[idx, ], family = binomial)
  proba[[e]] <- predict(m, d[-idx, ], type = "response")
  cat(e, "| F1 :", f1(paniers[[e]][-idx] == 1, proba[[e]] > 0.25), "\n")
}

# Chaîne : parmesan réappris avec sauce_tomate comme variable (prédite en test)
d <- data.frame(X, sauce_tomate = paniers$sauce_tomate, cible = paniers$parmesan)
m <- glm(cible ~ ., data = d[idx, ], family = binomial)
d_test <- d[-idx, ]
d_test$sauce_tomate <- as.integer(proba$sauce_tomate > 0.5)
cat("parmesan en chaîne | F1 :", f1(d_test$cible == 1, predict(m, d_test, type = "response") > 0.25), "\n")

QUESTIONS FRÉQUENTES

Quelle différence entre multi-label et multiclasse ?

En multiclasse, chaque cas appartient à une seule classe parmi plusieurs : un chiffre est un 3 ou un 8. En multi-label, un cas peut recevoir plusieurs étiquettes à la fois, ou aucune : un article peut parler de sport et de santé.

Qu'est-ce qu'une chaîne de classifieurs ?

Une suite de classifieurs binaires, un par étiquette, où chacun reçoit en plus les prédictions des précédents. Elle capte les liens entre étiquettes, que la relevance binaire ignore. L'ordre des étiquettes dans la chaîne influence le résultat.

Comment évaluer un modèle multi-label ?

Plusieurs mesures coexistent. Le Hamming loss compte la part d'étiquettes mal prédites. L'exactitude par sous-ensemble exige que toutes les étiquettes soient justes, ce qui est très sévère. Le F1 par étiquette, puis sa moyenne, reste le plus parlant pour le métier.

LES ALGOS VOISINS

à comparer avant de choisir
le modèle de base

Régression logistique

La brique utilisée ici pour chaque étiquette : rapide, probabilités exploitables.

Voir la fiche →
l'approche par règles

Apriori

Trouve les produits achetés ensemble sans rien prédire. Plus simple pour une analyse de paniers.

Voir la fiche →
l'autre façon de suggérer

Recommandation par contenu

Recommande des produits proches de ceux déjà choisis, à partir de leurs caractéristiques.

Voir la fiche →
— formation

Passer de la fiche à la pratique

Dataistudio forme les équipes au machine learning et à l'IA, sur des cas concrets.

Voir les formations →