Accueil / Factory / Algos ML / Classification hiérarchique — factory / algos ML / apprentissage non supervisé

CLASSIFICATION HIÉRARCHIQUE.

Un algorithme qui fusionne pas à pas les éléments les plus proches, jusqu'à ne former qu'un seul groupe. Le résultat est un arbre, le dendrogramme, que l'on coupe à la hauteur voulue pour obtenir plus ou moins de groupes. On voit ainsi toute la structure des données avant de choisir.

ClusteringDendrogrammeAnalyse du panierNon superviséNiveau : intermédiaire

FICHE D'IDENTITÉ

notes sur 5 · usage entreprise
PerformanceBonne sur petites bases, dépend beaucoup du lien choisi
InterprétabilitéLe dendrogramme se lit et se discute en réunion
VitesseLent et gourmand en mémoire au-delà de 10 000 lignes
Facilité de réglagePas de k imposé : on choisit la coupe en regardant l'arbre
Tolérance aux données brutesSensible aux échelles et aux extrêmes selon le lien
EN 30 SECONDES

Un arbre généalogique à l'envers. On part des individus, on réunit les deux plus proches parents, puis les familles les plus proches, jusqu'à l'ancêtre commun.

1. Chaque élément forme un groupe

On calcule la distance entre toutes les paires d'éléments. Ici, deux produits sont proches s'ils se retrouvent souvent dans les mêmes tickets de caisse.

2. On fusionne les deux groupes les plus proches

Et on recommence. La distance entre deux groupes dépend du lien choisi : moyenne des distances, plus proche voisin, plus lointain, ou Ward qui minimise la dispersion.

3. On coupe l'arbre

Chaque fusion est tracée à sa hauteur, c'est-à-dire à sa distance. Couper l'arbre à une hauteur donnée fournit les groupes. Un grand saut de hauteur signale une coupe naturelle.

LE CAS MÉTIER

univers produits · grande distribution / e-commerce
EN ENTRÉE

4 000 tickets de caisse

Pour chaque ticket, la liste des produits achetés parmi 28 références : pain, beurre, pâtes, sauce tomate, bière, couches, etc. On construit un tableau produits × tickets.

EN SORTIE

Des familles de produits achetés ensemble

Coupé à la hauteur 0,8, l'arbre isole 6 duos ou trios : pain et beurre, pâtes, sauce tomate et parmesan, bière et chips, fromage et vin rouge, café et biscuits, couches et lingettes. De quoi organiser un rayon, un menu de site ou une promotion croisée.

CE QU'ON MESURE

La distance de Jaccard et la lecture métier

La distance de Jaccard entre deux produits vaut 1 moins la part de tickets communs parmi ceux qui contiennent l'un ou l'autre. Elle reste élevée ici, car chaque produit est acheté seul la plupart du temps. On valide les groupes avec les chefs de rayon, pas seulement avec un indicateur.

QUAND LE SORTIR, QUAND L'ÉVITER

OUI

  • Quelques dizaines à quelques milliers d'éléments à regrouper
  • Besoin de montrer la structure complète avant de choisir un nombre de groupes
  • Distance métier spécifique, comme la co-présence dans les paniers
  • Typologies emboîtées : familles, sous-familles, segments

NON

  • Plus de quelques dizaines de milliers de lignes : K-means ou Mini-batch K-means
  • Besoin de règles « si A alors B » avec confiance et lift : Apriori
  • Bruit important à isoler : DBSCAN ou HDBSCAN
  • Segmentation à recalculer sur de nouvelles données : l'arbre ne classe pas un nouvel élément, K-means oui
LES 3 CHOIX QUI COMPTENT

Pas d'hyperparamètre à optimiser, mais trois choix qui changent l'arbre. Noms donnés pour R (hclust) et Python (scipy).

La distance

Euclidienne sur des chiffres standardisés, Jaccard ("binary" en R) sur des présences 0 / 1, corrélation pour des profils. C'est elle qui définit « se ressembler ».

method (le lien)

average : moyenne des distances entre groupes, bon compromis. complete : groupes compacts. single : chaînes allongées. ward.D2 : groupes homogènes, à utiliser avec une distance euclidienne.

La hauteur de coupe (h / t)

Couper là où les fusions font un grand saut de hauteur. On peut aussi demander un nombre de groupes (k en R, criterion="maxclust" en Python).

LE CODE MINIMAL

jeu d'exemple : tickets_caisse.csv ↓
# Univers produits à partir des tickets : classification hiérarchique en R
tickets <- read.csv("tickets_caisse.csv")

# Une ligne par produit, une colonne par ticket : 1 si le produit est dans le ticket
presence <- (table(tickets$produit, tickets$id_ticket) > 0) * 1

# Méthode "binary" = distance de Jaccard : part des tickets non communs
distances <- dist(presence, method = "binary")

# Fusion pas à pas des produits les plus proches, lien moyen entre groupes
arbre <- hclust(distances, method = "average")
print(round(tail(arbre$height, 8), 3))
plot(arbre, hang = -1, main = "Proximité des produits dans les paniers")

# Coupe de l'arbre à la hauteur 0,8 : les produits qui partagent souvent un panier
groupes <- cutree(arbre, h = 0.8)
for (g in unique(groupes)) {
  if (sum(groupes == g) > 1) cat(g, ":", names(groupes)[groupes == g], "\n")
}

QUESTIONS FRÉQUENTES

Comment lire un dendrogramme ?

Chaque feuille est un élément. Deux branches qui se rejoignent forment un groupe, et la hauteur de la jonction indique leur distance. Plus la jonction est basse, plus les éléments se ressemblent. On coupe l'arbre horizontalement pour obtenir les groupes.

CAH ou K-means ?

La CAH ne demande pas de fixer le nombre de groupes à l'avance et montre tous les niveaux de regroupement, mais elle devient lente au-delà de quelques dizaines de milliers de lignes. K-means passe à l'échelle mais impose k. Une pratique courante : CAH sur un échantillon pour choisir k, puis K-means sur toute la base.

Quelle méthode de lien choisir ?

Ward est le choix par défaut pour des données numériques standardisées : il produit des groupes homogènes et de tailles comparables. Le lien moyen convient à toute distance, comme Jaccard. Le lien simple est à éviter en segmentation, car il forme des chaînes.

LES ALGOS VOISINS

à comparer avant de choisir
pour les gros volumes

K-means

Rapide sur des centaines de milliers de lignes, mais demande de fixer k. On peut choisir k avec un arbre sur un échantillon.

Voir la fiche →
les règles du panier

Apriori

Donne des règles « qui achète A achète B » avec leur confiance et leur lift, plutôt que des familles.

Voir la fiche →
même matrice, k fixé

K-medoids (PAM)

Travaille sur la même matrice de distances et désigne un élément représentatif par groupe.

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 →