Les algorithmes non paramétriques non supervisés sont largement utilisés en entreprise pour analyser de grands jeux de données.

La raison est simple : dans beaucoup d'applications concrètes, obtenir les vraies étiquettes (labels) est très difficile, voire impossible.

Illustration des méthodes non paramétriques non supervisées pour analyser de grands jeux de données

Dans ces cas-là :

  • Soit les équipes data annotent les données, ce qui peut s'avérer infaisable en pratique,

  • Soit on utilise des méthodes non supervisées pour identifier des patterns.

Si KMeans est très répandu ici grâce à sa simplicité et son efficacité en tant qu'algorithme de clustering, il a de nombreuses limites :

  • Il ne prend pas en compte la covariance des clusters.

  • Il ne peut produire que des clusters sphériques. Comme tu peux le voir ci-dessous, même si les données forment des clusters non circulaires, il produit quand même des clusters ronds.

Clustering KMeans produisant des clusters sphériques malgré des données aux formes non circulaires

Les algorithmes basés sur la densité, comme DBSCAN, répondent assez efficacement à ces limitations.

L'idée centrale derrière DBSCAN est de regrouper les points de données en fonction de la "densité", c'est-à-dire que les points proches les uns des autres dans une région de haute densité sont groupés ensemble, et séparés des autres par des régions de plus faible densité.

Clustering DBSCAN regroupant les points selon la densité, séparés par des régions de faible densité

Mais malheureusement, avec DBSCAN, on se heurte à un autre problème souvent sous-estimé.

L'un des éléments qui rend DBSCAN parfois inutilisable en pratique, c'est son temps d'exécution.

Jusqu'à récemment, on pensait que DBSCAN avait une complexité de O(nlogn), mais il a été prouvé qu'elle est de O(n²) dans le pire des cas.

D'ailleurs, on peut aussi le vérifier sur la figure ci-dessous. Elle montre le temps d'exécution de DBSCAN en fonction du nombre d'échantillons :

Graphique du temps d'exécution de DBSCAN en fonction du nombre d'échantillons, relation quadratique

C'est clair : DBSCAN a une relation quadratique avec la taille du jeu de données.

Il y a donc un besoin croissant de développer des versions plus efficaces de DBSCAN.

DBSCAN++ est un pas majeur vers un DBSCAN rapide et scalable.

En résumé, DBSCAN++ repose sur l'observation suivante : on n'a besoin de calculer les estimations de densité que pour un sous-ensemble "m" des "n" points du jeu de données, où "m" peut être bien plus petit que "n" pour obtenir un clustering correct.

L'efficacité de DBSCAN++ est évidente sur l'image ci-dessous :

Comparaison de DBSCAN et DBSCAN++ : temps d'exécution et qualité du clustering

Sur un jeu de données de 60 000 points :

  • DBSCAN++ est 20x plus rapide que DBSCAN.

  • DBSCAN++ produit de meilleurs scores de clustering que DBSCAN.

Mais comment ça fonctionne de bout en bout ?

  • Pourquoi sélectionner un sous-ensemble de points reste efficace ?

  • Quelles stratégies peut-on utiliser pour sélectionner ce sous-ensemble ?

  • Quelles autres limitations DBSCAN++ résout-il ?

  • DBSCAN++ est un algorithme récent. Quels sont les points à garder en tête pour l'utiliser efficacement ?

Si tu es curieux, le dernier deep dive en machine learning traite exactement de ce sujet : DBSCAN++ : l'alternative plus rapide et scalable au clustering DBSCAN.

La plupart des jeux de données réels sont non supervisés et naturellement très volumineux :

  • KMeans n'est généralement pas adapté à cause des hypothèses strictes mentionnées plus haut.

  • DBSCAN peut fonctionner, mais il souffrira du temps d'exécution.

  • Du coup, connaître des algorithmes comme DBSCAN++ devient vraiment essentiel.

Bien sûr, je sais que beaucoup d'entre vous n'ont pas forcément une compréhension claire de DBSCAN lui-même.

J'ai donc aussi fourni une présentation détaillée de DBSCAN, qui sert de base naturelle pour comprendre DBSCAN++.

Autre point : un problème avec DBSCAN++, c'est qu'il n'est pas intégré dans Sklearn.

Mais pas de panique.

Pour cet article, j'ai écrit une implémentation entièrement vectorisée de DBSCAN++, qui est liée dans l'article et que tu peux utiliser dans tes projets.

Je suis convaincu qu'apprendre DBSCAN++ sera extrêmement précieux pour tes compétences et tes projets futurs :)

Envie d'aller plus loin ? DataXp t'attend : formations et parcours pour progresser en data science, machine learning et IA.

Commentaires

Avatar

ou participer

À lire ensuite

Des shots dans la même veine, à lire entre deux tâches.

Voir tous les shots
caret-right