Accueil / Factory / Algos ML / DBSCAN — factory / algos ML / apprentissage non supervisé

ALGORITHME DBSCAN.

Un algorithme qui cherche les zones où les points sont serrés et en fait des groupes, quelle que soit leur forme. Les points isolés sont déclarés bruit au lieu d'être rangés de force quelque part. On ne fixe pas le nombre de groupes, mais un rayon et un nombre minimum de voisins.

ClusteringDensitéDétection de bruitNon superviséNiveau : intermédiaire

FICHE D'IDENTITÉ

notes sur 5 · usage entreprise
PerformanceExcellent sur des groupes denses de forme libre
InterprétabilitéGroupes et bruit se lisent, pas de profil moyen fourni
VitesseRapide avec index spatial jusqu'à des centaines de milliers
Facilité de réglageeps délicat, un seul rayon pour toutes les zones
Tolérance aux données brutesStandardisation obligatoire, souffre en grande dimension
EN 30 SECONDES

Vue d'avion d'une plage : les groupes de serviettes serrées forment des familles, les serviettes isolées ne font partie d'aucune. Pas besoin de savoir d'avance combien de familles il y a.

1. On compte les voisins de chaque point

Dans un rayon eps. Un point qui a au moins minPts voisins, lui compris, est un point cœur : il se trouve dans une zone dense.

2. On relie les points cœurs proches

Deux points cœurs à moins de eps l'un de l'autre appartiennent au même groupe. De proche en proche, le groupe s'étend et peut prendre n'importe quelle forme.

3. On rattache les bordures, on écarte le bruit

Un point non cœur mais proche d'un point cœur rejoint son groupe. Les autres points sont déclarés bruit : ils n'appartiennent à aucun groupe.

LE CAS MÉTIER

maintenance · industrie / énergie / transport
EN ENTRÉE

Une mesure par heure pendant 3 mois

Température et vibration d'une machine. La température suit un cycle jour / nuit : on travaille sur son écart au profil habituel de l'heure, pour ne pas confondre un après-midi chaud et une anomalie.

EN SORTIE

Deux régimes de fonctionnement et des mesures isolées

DBSCAN trouve deux groupes : le régime de janvier-février et un régime plus chaud et plus vibrant à partir du 28 février. Parmi les 35 mesures déclarées bruit, les 8 plus chaudes pour leur heure, environ 8 à 10 °C au-dessus du profil, sont des pics isolés de janvier-février.

CE QU'ON MESURE

Un changement de régime daté, des alertes à qualifier

Il n'y a pas d'étiquette : on juge sur le sens métier. Le passage d'un groupe à l'autre date le changement de comportement de la machine. Les points de bruit forment une liste courte à faire vérifier par la maintenance.

QUAND LE SORTIR, QUAND L'ÉVITER

OUI

  • Nombre de groupes inconnu et groupes de formes irrégulières
  • Besoin d'isoler le bruit ou les mesures aberrantes plutôt que de les classer
  • Peu de variables (2 à 10), bien choisies et standardisées
  • Données géographiques : zones de forte densité de clients, d'incidents, de livraisons

NON

  • Zones de densités très différentes : un seul eps ne convient pas, préférer HDBSCAN
  • Des dizaines de variables : les distances perdent leur sens, réduire d'abord avec une ACP
  • Besoin de segments de taille comparable avec un profil moyen : K-means
  • Détecter des anomalies ponctuelles sans chercher de groupes : Isolation Forest
LES 3 RÉGLAGES QUI COMPTENT

Noms donnés pour R (paquet dbscan) et Python (scikit-learn). Dans les deux, le point lui-même compte parmi ses voisins.

eps

Le rayon du voisinage, sur données standardisées. Trop petit : tout devient bruit. Trop grand : tout fusionne. On le choisit au coude du graphe des distances au k-ième voisin (kNNdistplot en R).

minPts / min_samples

Le nombre de points requis dans le rayon pour former une zone dense. Règle usuelle : au moins le nombre de variables plus un, souvent le double. Plus il est grand, plus il y a de bruit.

Choix et préparation des variables

Standardiser, et retirer les effets connus avant de chercher des groupes, comme le cycle jour / nuit ici. Sans cette étape, DBSCAN retrouve le cycle au lieu des anomalies.

LE CODE MINIMAL

jeu d'exemple : capteurs_machine.csv ↓
# Surveillance d'une machine : DBSCAN en R
library(dbscan)

capteurs <- read.csv("capteurs_machine.csv")
heure <- as.integer(substr(capteurs$horodatage, 12, 13))
# Écart de température au profil habituel de l'heure (retire le cycle jour / nuit)
capteurs$ecart_temp <- capteurs$temperature - ave(capteurs$temperature, heure, FUN = median)
X <- scale(capteurs[, c("ecart_temp", "vibration")])

# Aide au choix de eps : chercher le coude de la courbe des distances au 9e voisin
kNNdistplot(X, k = 9)

# eps : rayon du voisinage ; minPts : points requis, le point lui-même compris
modele <- dbscan(X, eps = 0.3, minPts = 10)
capteurs$groupe <- modele$cluster   # 0 = bruit

# Groupes trouvés : effectif par mois et mesures moyennes
print(table(groupe = capteurs$groupe, mois = substr(capteurs$horodatage, 1, 7)))
print(aggregate(cbind(temperature, vibration) ~ groupe, data = capteurs, FUN = mean))
bruit <- capteurs[capteurs$groupe == 0, ]
print(head(bruit[order(-bruit$ecart_temp), c("horodatage", "temperature", "ecart_temp")], 10))

QUESTIONS FRÉQUENTES

Comment choisir eps dans DBSCAN ?

On calcule pour chaque point la distance à son k-ième voisin, avec k = minPts - 1, puis on trie ces distances et on les trace. Le coude de la courbe, où elle se met à monter vite, donne une bonne valeur de eps. On vérifie ensuite que les groupes obtenus ont un sens métier.

Quelle différence entre DBSCAN et K-means ?

K-means demande le nombre de groupes, les suppose ronds et range chaque point dans un groupe. DBSCAN trouve seul le nombre de groupes, accepte toutes les formes et laisse les points isolés en bruit. En revanche, DBSCAN dépend fortement de eps et gère mal les densités variables.

Que signifie le label -1 dans DBSCAN ?

Dans scikit-learn, -1 désigne le bruit : les points qui ne sont ni des points cœurs ni proches d'un point cœur. Dans le paquet R dbscan, le bruit est codé 0. Ces points méritent souvent un examen à part, car ce sont des cas atypiques.

LES ALGOS VOISINS

à comparer avant de choisir
sans choisir eps

HDBSCAN

Explore tous les rayons à la fois et garde les groupes les plus stables. S'adapte aux zones de densités différentes.

Voir la fiche →
pour dater le changement

Détection de ruptures

Travaille directement sur la série temporelle et donne la date exacte du changement de régime.

Voir la fiche →
pour les anomalies seules

Isolation Forest

Donne un score d'anomalie à chaque point, sans chercher de groupes. Plus adapté quand seul l'inhabituel compte.

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 →