Tweet Share Share

dernière mise à jour le 20 août 2020

le Clustering ou l’analyse de cluster est un problème d’apprentissage non supervisé.

Il est souvent utilisé comme technique d’analyse de données pour découvrir des modèles intéressants dans les données, tels que des groupes de clients en fonction de leur comportement.

Il existe de nombreux algorithmes de clustering parmi lesquels choisir et aucun meilleur algorithme de clustering pour tous les cas. Au lieu de cela, il est judicieux d’explorer une gamme d’algorithmes de clustering et différentes configurations pour chaque algorithme.,

Dans ce tutoriel, vous découvrirez comment l’adapter et utiliser des algorithmes de clustering en python.

Après avoir terminé ce tutoriel, vous saurez:

  • le Clustering est un problème non supervisé de recherche de groupes naturels dans l’espace d’entités des données d’entrée.
  • Il existe de nombreux algorithmes de clustering différents et aucune méthode unique pour tous les ensembles de données.
  • comment implémenter, adapter et utiliser les meilleurs algorithmes de clustering en Python avec la bibliothèque de machine learning scikit-learn.,

lancez votre projet avec mon nouveau livre Machine Learning Mastery With Python, y compris des tutoriels étape par étape et les fichiers de code source Python pour tous les exemples.

nous allons commencer.

Algorithmes de Clustering Avec Python
Photo de Lars Plougmann, certains droits réservés.,/div>

aperçu du tutoriel

ce tutoriel est divisé en trois parties:

  1. Clustering
  2. algorithmes de Clustering
  3. exemples d’algorithmes de Clustering
    1. installation de la bibliothèque
    2. jeu de données de Clustering
    3. Propagation D’affinité
    4. Clustering agglomératif
    5. BIRCH
    6. DBSCAN
    7. k-means
    8. mini-batch k-means
    9. mean Shift
    10. Optics
    11. spectral clustering
    12. gaussian mixture model

clustering

l’analyse de cluster, ou clustering, est une tâche D’apprentissage automatique non supervisée.,

cela implique de découvrir automatiquement le regroupement naturel dans les données. Contrairement à l’apprentissage supervisé (comme la modélisation prédictive), les algorithmes de clustering n’interprètent que les données d’entrée et trouvent des groupes ou des clusters naturels dans l’espace d’entités.

Les techniques de Clustering s’appliquent lorsqu’il n’y a pas de classe à prévoir mais plutôt lorsque les instances doivent être divisées en groupes naturels.

— Page 141, l’Exploration de Données: cas Pratique d’Apprentissage de la Machine Outils et les Techniques de 2016.,

un cluster est souvent une zone de densité dans l’espace d’entités où les exemples du domaine (observations ou lignes de données) sont plus proches du cluster que les autres clusters. Le cluster peut avoir un centre (le centroïde) qui est un échantillon ou un espace d’entités ponctuelles et peut avoir une limite ou une étendue.

ces clusters reflètent vraisemblablement un mécanisme à l’œuvre dans le domaine à partir duquel les instances sont tirées, un mécanisme qui fait que certaines instances ont une plus grande ressemblance les unes avec les autres qu’avec les instances restantes.,

— Pages 141-142, l’Exploration de Données: cas Pratique d’Apprentissage de la Machine Outils et les Techniques de 2016.

le Clustering peut être utile en tant qu’activité d’analyse de données afin d’en savoir plus sur le domaine du problème, ce que l’on appelle la découverte de modèles ou la découverte de connaissances.

Par exemple:

  • L’arbre phylogénétique peut être considéré comme le résultat d’un manuel d’analyse de la concentration.
  • séparer les données normales des valeurs aberrantes ou des anomalies peut être considéré comme un problème de clustering.,
  • séparer les clusters en fonction de leur comportement naturel est un problème de clustering, appelé segmentation du marché.

le Clustering peut également être utile en tant que type d’ingénierie de fonctionnalités, où des exemples existants et nouveaux peuvent être mappés et étiquetés comme appartenant à l’un des clusters identifiés dans les données.

L’évaluation des grappes identifiées est subjective et peut nécessiter un expert du domaine, bien qu’il existe de nombreuses mesures quantitatives spécifiques aux grappes., En règle générale, les algorithmes de clustering sont comparés académiquement sur des ensembles de données synthétiques avec des clusters prédéfinis, qu’un algorithme est censé découvrir.

le Clustering est une technique d’apprentissage non supervisée, il est donc difficile d’évaluer la qualité de la sortie d’une méthode donnée.

— Page 534, l’Apprentissage de la Machine: d’Un point de vue Probabiliste, 2012.

Algorithmes de Clustering

Il existe plusieurs types d’algorithmes de clustering.,

de nombreux algorithmes utilisent des mesures de similarité ou de distance entre des exemples dans l’espace des entités dans le but de découvrir des régions denses d’observations. En tant que tel, il est souvent recommandé de mettre à l’échelle les données avant d’utiliser des algorithmes de clustering.

La notion de degré de similarité (ou de dissemblance) entre les objets individuels regroupés est au cœur de tous les objectifs de l’analyse de cluster. Une méthode de clustering tente de regrouper les objets en fonction de la définition de similarité qui lui est fournie.,

— Page 502, Les Éléments de l’Apprentissage Statistique: l’Exploration de Données, l’Inférence, et la Prédiction, en 2016.

certains algorithmes de clustering nécessitent de spécifier ou de deviner le nombre de clusters à découvrir dans les données, tandis que d’autres nécessitent la spécification d’une distance minimale entre les observations dans laquelle les exemples peuvent être considérés comme « proches” ou « connectés »., »

en tant que telle, l’analyse de grappes est un processus itératif dans lequel l’évaluation subjective des grappes identifiées est réinjectée dans les modifications apportées à la configuration de l’algorithme jusqu’à ce qu’un résultat souhaité ou approprié soit atteint.

la bibliothèque scikit-learn fournit une suite d’algorithmes de clustering différents.,

Une liste de 10 des algorithmes les plus populaires est la suivante:

  • Propagation D’affinité
  • Clustering agglomératif
  • BIRCH
  • DBSCAN
  • k-Means
  • Mini-Batch K-Means
  • décalage moyen
  • optique
  • Clustering Spectral
  • mélange de gaussiens

chaque algorithme propose une approche différente du défi de la découverte de groupes naturels dans les données.

Il n’y a pas de meilleur algorithme de clustering, et pas de moyen facile de trouver le meilleur algorithme pour vos données sans l’aide d’expériences contrôlées.,

dans ce tutoriel, nous allons examiner comment utiliser chacun de ces 10 algorithmes de clustering populaires de la bibliothèque scikit-learn.

Les exemples vous serviront de base pour copier-coller les exemples et tester les méthodes sur vos propres données.

nous ne plongerons pas dans la théorie derrière le fonctionnement des algorithmes ou ne les comparerons pas directement. Pour un bon point de départ sur ce sujet, voir:

  • Clustering, scikit-learn API.

nous plonger dans.,

Exemples d’Algorithmes de Clustering

Dans cette section, nous allons examiner comment utiliser 10 populaire algorithmes de clustering dans scikit-learn.

ceci inclut un exemple d’ajustement du modèle et un exemple de visualisation du résultat.

Les exemples sont conçus pour que vous puissiez copier-coller dans votre propre projet et appliquer les méthodes à vos propres données.

installation de la bibliothèque

tout d’abord, installons la bibliothèque.

Ne sautez pas cette étape car vous devrez vous assurer que la dernière version est installée.,>

1
sudo pip install scikit-learn

For additional installation instructions specific to your platform, see:

  • Installing scikit-learn

Next, let’s confirm that the library is installed and you are using a modern version.,

exécutez le script suivant pour imprimer le numéro de version de la bibliothèque.,

1
2
3

# vérifier scikit-learn version
importer sklearn
print(sklearn.,__version__)

l’Exécution de l’exemple, vous devriez voir le numéro de version suivant ou plus.

1
de 0,22.,1

ensemble de données de Clustering

Nous allons utiliser la fonction make_classification() pour créer un ensemble de données de classification binaire de test.

l’ensemble de données aura 1 000 exemples, avec deux entités d’entrée et un cluster par classe. Les clusters sont visuellement évidents en deux dimensions afin que nous puissions tracer les données avec un nuage de points et colorer les points du tracé par le cluster assigné. Cela aidera à voir, au moins sur le problème de test, comment « bien” les grappes ont été identifiées.,

Les clusters de ce problème de test sont basés sur une gaussienne multivariée, et tous les algorithmes de clustering ne seront pas efficaces pour identifier ces types de clusters. En tant que tels, les résultats de ce tutoriel ne doivent pas être utilisés comme base pour comparer les méthodes en général.

un exemple de création et de synthèse de l’ensemble de données de clustering synthétique est répertorié ci-dessous.

L’exécution de l’exemple crée l’ensemble de données de clustering synthétique, puis crée un nuage de points des données d’entrée avec des points colorés par étiquette de classe (clusters idéalisés).,

Nous pouvons clairement voir deux groupes distincts de données dans deux dimensions et l’espoir serait qu’un algorithme de clustering automatique puisse détecter ces groupes.

diagramme de dispersion d’un ensemble de données de Clustering synthétique avec des Points colorés par Cluster connu

ensuite, nous pouvons commencer à regarder des exemples d’algorithmes de clustering appliqués à cet ensemble de données.

j’ai fait quelques tentatives minimales pour ajuster chaque méthode à l’ensemble de données.

Pouvez-vous obtenir un meilleur résultat pour l’un des algorithmes?
faites-moi savoir dans les commentaires ci-dessous.,

Propagation D’affinité

La Propagation D’affinité consiste à trouver un ensemble d’exemples qui résument le mieux les données.

Nous avons conçu une méthode appelée « propagation d’affinité”, qui prend en entrée des mesures de similarité entre des paires de points de données. Les messages à valeur réelle sont échangés entre les points de données jusqu’à ce qu’un ensemble d’exemplaires et de clusters correspondants de haute qualité émerge progressivement

-Clustering by Passing Messages Between Data Points, 2007.,

La technique est décrite dans le document:

  • le Clustering par la transmission de Messages Entre les Points de Données, 2007.

Il est implémenté via la classe AffinityPropagation et la configuration principale à régler est le « damping” défini entre 0.5 et 1, et peut-être « preference.”

L’exemple complet ci-dessous.

l’Exécution de l’exemple s’inscrit le modèle sur l’ensemble de données d’apprentissage et prédit un cluster pour chaque exemple dans le jeu de données. Un nuage de points est ensuite créé avec des points colorés par leur cluster attribué.

dans ce cas, je n’ai pas pu obtenir un bon résultat.,

diagramme de dispersion d’un ensemble de données avec des Clusters identifiés à L’aide d’une Propagation D’affinité

Clustering agglomératif

le clustering agglomératif consiste à fusionner des exemples jusqu’à ce que le nombre souhaité de clusters soit atteint.

Il fait partie d’une classe plus large de méthodes de clustering hiérarchique et vous pouvez en savoir plus ici:

  • clustering hiérarchique, Wikipedia.,

Il est implémenté via la classe AgglomerativeClustering et la configuration principale à régler est l’ensemble « n_clusters”, une estimation du nombre de clusters dans les données, par exemple 2.

L’exemple complet ci-dessous.

l’Exécution de l’exemple s’inscrit le modèle sur l’ensemble de données d’apprentissage et prédit un cluster pour chaque exemple dans le jeu de données. Un nuage de points est ensuite créé avec des points colorés par leur cluster attribué.

dans ce cas, un regroupement raisonnable est trouvé.,

diagramme de dispersion d’un ensemble de données avec des Clusters identifiés à l’aide de Clustering agglomératif

BIRCH

BIRCH Clustering (BIRCH est l’abréviation de balanced iterative Reducing and Clustering using
Hierarchies) consiste à construire une structure arborescente à partir de laquelle les centroïdes

BIRCH regroupe incrémentalement et dynamiquement les points de données métriques multidimensionnels entrants pour essayer de produire le meilleur clustering de qualité avec les ressources disponibles (c’est-à-dire,, mémoire disponible et contraintes de temps).

— BIRCH: une méthode efficace de regroupement de données pour les grandes bases de données, 1996.

La technique est décrite dans le document:

  • BOULEAU: Un efficace méthode de clustering pour les grandes bases de données, 1996.

Il est implémenté via la classe Birch et la configuration principale à régler est les hyperparamètres « threshold” et « n_clusters”, ce dernier fournissant une estimation du nombre de clusters.

L’exemple complet ci-dessous.,

l’Exécution de l’exemple s’inscrit le modèle sur l’ensemble de données d’apprentissage et prédit un cluster pour chaque exemple dans le jeu de données. Un nuage de points est ensuite créé avec des points colorés par leur cluster attribué.

Dans ce cas, un excellent groupement est trouvé.,

diagramme de dispersion de L’ensemble de données avec des Clusters identifiés à L’aide de BIRCH Clustering

DBSCAN

DBSCAN Clustering (où DBSCAN est l’abréviation de densité-Based Spatial Clustering of Applications with Noise) implique de trouver des zones à haute densité l’espace de fonctionnalité autour d’eux en tant que clusters.

we nous présentons le nouvel algorithme de clustering DBSCAN s’appuyant sur une notion de clusters basée sur la densité qui est conçue pour découvrir des clusters de forme arbitraire., DBSCAN ne nécessite qu’un seul paramètre d’entrée et aide l’utilisateur à déterminer une valeur appropriée pour celui— ci

-algorithme basé sur la densité pour découvrir des Clusters dans de grandes bases de données spatiales avec du bruit, 1996.

La technique est décrite dans le document:

  • Une Densité à Base de l’Algorithme pour la Découverte de Clusters dans les Grandes Bases de données Spatiales avec Bruit, 1996.

Il est implémenté via la classe DBSCAN et la configuration principale à régler est les hyperparamètres « eps” et « min_samples”.

L’exemple complet ci-dessous.,

l’Exécution de l’exemple s’inscrit le modèle sur l’ensemble de données d’apprentissage et prédit un cluster pour chaque exemple dans le jeu de données. Un nuage de points est ensuite créé avec des points colorés par leur cluster attribué.

dans ce cas, un regroupement raisonnable est trouvé, bien que plus de réglage soit nécessaire.,

diagramme de dispersion d’un ensemble de données avec des Clusters identifiés à L’aide du Clustering DBSCAN

K-Means

le Clustering K-Means peut être l’algorithme de clustering le plus connu et consiste à assigner des exemples à des clusters afin de minimiser la variance au sein de chaque cluster.

le but principal de cet article est de décrire un processus de partitionnement d’une population à N Dimensions en k ensembles sur la base d’un échantillon., Le processus, qui est appelé « K-means », semble donner des partitions qui sont raisonnablement efficaces dans le sens de la variance à l’intérieur de la classe.

— quelques méthodes de classification et d’analyse des observations multivariées, 1967.

La technique est décrite ici:

  • k-means, Wikipedia.

Il est implémenté via la classe KMeans et la configuration principale à régler est l’hyperparamètre « n_clusters” défini sur le nombre estimé de clusters dans les données.

L’exemple complet ci-dessous.,

l’Exécution de l’exemple s’inscrit le modèle sur l’ensemble de données d’apprentissage et prédit un cluster pour chaque exemple dans le jeu de données. Un nuage de points est ensuite créé avec des points colorés par leur cluster attribué.

dans ce cas, un regroupement raisonnable est trouvé, bien que la variance égale inégale dans chaque dimension rend la méthode moins adaptée à cet ensemble de données.,

diagramme de dispersion de L’ensemble de données avec des Clusters identifiés à L’aide de K-Means Clustering

Mini-Batch K-Means

Mini-Batch K-Means est une version modifiée de k-means qui met à jour les centroïdes dataset, ce qui peut le rendre plus rapide pour les grands ensembles de données, et peut-être plus robuste au bruit statistique.

… nous proposons l’utilisation de mini-optimisation par lots pour les k-means., Cela réduit le coût de calcul de plusieurs ordres de grandeur par rapport à l’algorithme par lots classique tout en donnant des solutions nettement meilleures que la descente de gradient stochastique en ligne.

— à l’Échelle du Web K-means, 2010.

La technique est décrite dans le document:

  • à l’Échelle du Web K-means, 2010.

Il est implémenté via la classe MiniBatchKMeans et la configuration principale à régler est l’hyperparamètre « n_clusters” défini sur le nombre estimé de clusters dans les données.

L’exemple complet ci-dessous.,

l’Exécution de l’exemple s’inscrit le modèle sur l’ensemble de données d’apprentissage et prédit un cluster pour chaque exemple dans le jeu de données. Un nuage de points est ensuite créé avec des points colorés par leur cluster attribué.

dans ce cas, un résultat équivalent à l’algorithme standard de K-means est trouvé.

diagramme de dispersion d’un ensemble de données avec des Clusters identifiés à l’aide D’un mini-lot K-Means Clustering

mean Shift

Mean shift clustering implique de trouver et d’adapter des centroïdes en fonction de la densité,

nous prouvons pour les données discrètes la convergence d’une procédure récursive de décalage moyen vers le point stationnaire le plus proche de la fonction de densité sous-jacente et donc son utilité dans la détection des modes de la densité.

— Décalage: Une approche solide vers l’espace de la fonctionnalité d’analyse, 2002.

La technique est décrite dans le document:

  • Décalage: Une approche solide vers l’espace de la fonctionnalité d’analyse, 2002.

Il est implémenté via la classe MeanShift et la configuration principale à régler est l’hyperparamètre « bande passante”.,

L’exemple complet ci-dessous.

l’Exécution de l’exemple s’inscrit le modèle sur l’ensemble de données d’apprentissage et prédit un cluster pour chaque exemple dans le jeu de données. Un nuage de points est ensuite créé avec des points colorés par leur cluster attribué.

Dans ce cas, un ensemble raisonnable de clusters dans les données.,

diagramme de dispersion de L’ensemble de données avec des Clusters identifiés à l’aide du Clustering à décalage moyen

OPTICS

OPTICS clustering (où OPTICS est l’abréviation de L’Ordre des Points pour identifier la Structure de Clustering) est une version modifiée

Nous introduisons un nouvel algorithme à des fins d’analyse de cluster qui ne produit pas explicitement un cluster d’un ensemble de données; mais crée à la place un ordre augmenté de la base de données représentant sa structure de cluster basée sur la densité., Cet ordre de cluster contient des informations équivalentes aux clusterings basés sur la densité correspondant à une large gamme de paramètres.

— OPTIQUE: la commande afin d’identifier le regroupement de la structure, 1999.

La technique est décrite dans le document:

  • OPTIQUE: la commande afin d’identifier le regroupement de la structure, 1999.

Il est implémenté via la classe OPTICS et la configuration principale à régler est les hyperparamètres « eps” et « min_samples”.

L’exemple complet ci-dessous.,

l’Exécution de l’exemple s’inscrit le modèle sur l’ensemble de données d’apprentissage et prédit un cluster pour chaque exemple dans le jeu de données. Un nuage de points est ensuite créé avec des points colorés par leur cluster attribué.

dans ce cas, je n’ai pas pu obtenir un résultat raisonnable sur cet ensemble de données.

diagramme de dispersion d’un ensemble de données avec des Clusters identifiés à l’aide du Clustering optique

Clustering Spectral

le Clustering Spectral est une classe générale de méthodes de clustering, tirée de l’algèbre linéaire.,

Une alternative prometteuse qui a récemment émergé dans un certain nombre de domaines consiste à utiliser des méthodes spectrales pour le clustering. Ici, on utilise les vecteurs propres supérieurs d’une matrice dérivée de la distance entre les points.

— Sur Spectral Clustering: Analyse et d’un algorithme, 2002.

La technique est décrite dans le document:

  • Sur Spectral Clustering: Analyse et d’un algorithme, 2002.,

Il est implémenté via la classe SpectralClustering et le Clustering Spectral principal est une classe générale de méthodes de clustering, tirée de l’algèbre linéaire. to tune est l’hyperparamètre « n_clusters » utilisé pour spécifier le nombre estimé de clusters dans les données.

L’exemple complet ci-dessous.

l’Exécution de l’exemple s’inscrit le modèle sur l’ensemble de données d’apprentissage et prédit un cluster pour chaque exemple dans le jeu de données. Un nuage de points est ensuite créé avec des points colorés par leur cluster attribué.

dans ce cas, des grappes raisonnables ont été trouvées.,

diagramme de dispersion d’un ensemble de données avec des Clusters identifiés à l’aide de clusters de spectres Clustering

modèle de mélange gaussien

Un modèle de mélange gaussien résume une fonction de densité de probabilité multivariée avec un mélange de distributions de probabilité gaussiennes comme son nom l’indique.

Pour en savoir plus sur le modèle, voir:

  • modèle de Mélange, Wikipedia.,

Il est implémenté via la classe GaussianMixture et la configuration principale à régler est l’hyperparamètre « n_clusters” utilisé pour spécifier le nombre estimé de clusters dans les données.

L’exemple complet ci-dessous.

l’Exécution de l’exemple s’inscrit le modèle sur l’ensemble de données d’apprentissage et prédit un cluster pour chaque exemple dans le jeu de données. Un nuage de points est ensuite créé avec des points colorés par leur cluster attribué.

dans ce cas, nous pouvons voir que les clusters ont été parfaitement identifiés., Ce n’est pas surprenant étant donné que l’ensemble de données a été généré comme un mélange de gaussiens.

diagramme de dispersion de L’ensemble de données avec des Clusters identifiés à l’aide de Clustering de mélange gaussien

lecture supplémentaire

Cette section fournit plus de ressources sur le sujet si vous cherchez à aller plus loin.

Documents

  • le Clustering par la transmission de Messages Entre les Points de Données, 2007.
  • BOULEAU: Un efficace méthode de clustering pour les grandes bases de données, 1996.,
  • Une Densité à Base de l’Algorithme pour la Découverte de Clusters dans les Grandes Bases de données Spatiales avec Bruit, 1996.
  • quelques méthodes de classification et d’analyse des observations multivariées, 1967.
  • à l’Échelle du Web K-means, 2010.
  • Décalage: Une approche solide vers l’espace de la fonctionnalité d’analyse, 2002.
  • Sur Spectral Clustering: Analyse et d’un algorithme, 2002.

Livres

  • l’Exploration de Données: cas Pratique d’Apprentissage de la Machine Outils et les Techniques de 2016.
  • Les éléments de L’apprentissage statistique: exploration de données, inférence et prédiction, 2016.,
  • apprentissage automatique: une Perspective probabiliste, 2012.

Api

  • le Clustering, scikit-learn API.
  • sklearn.ensembles de données.API make_classification.
  • sklearn.cluster API.

Articles

  • analyse de Cluster, Wikipedia.
  • clustering hiérarchique, Wikipedia.
  • k-signifie clustering, Wikipedia.
  • modèle de Mélange, Wikipedia.

résumé

dans ce tutoriel, vous avez découvert comment adapter et utiliser les meilleurs algorithmes de clustering en python.,

plus précisément, vous avez appris:

  • le Clustering est un problème non supervisé de recherche de groupes naturels dans l’espace d’entités des données d’entrée.
  • Il existe de nombreux algorithmes de clustering différents, et aucune méthode unique pour tous les ensembles de données.
  • comment implémenter, adapter et utiliser les meilleurs algorithmes de clustering en Python avec la bibliothèque de machine learning scikit-learn.

avez-vous des questions?
Posez vos questions dans les commentaires ci-dessous et je ferai de mon mieux pour y répondre.

Découvrez Vite l’Apprentissage de la Machine en Python!,

Développer Vos Propres Modèles en quelques Minutes

…avec seulement quelques lignes de code scikit-learn

Apprenez comment dans mon nouvel Ebook:
maîtrise de L’apprentissage automatique avec Python

couvre des tutoriels d’auto-apprentissage et des projets de bout en bout comme:
chargement de données, visualisation, modélisation, réglage, et bien plus encore…

enfin apporter L’apprentissage automatique à
vos propres projets

sauter les universitaires. Seulement Les Résultats.

Voir Ce qui est à l’Intérieur de

Tweet partager Partager

Articles

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *