Le clustering hiérarchique est un autre algorithme d'apprentissage automatique non supervisé, utilisé pour regrouper les ensembles de données non étiquetés dans un cluster et également appelé analyse de cluster hiérarchique ou HCA.
Dans cet algorithme, nous développons la hiérarchie des clusters sous la forme d'un arbre, et cette structure en forme d'arbre est connue sous le nom de dendrogramme .
Parfois, les résultats du clustering K-means et du clustering hiérarchique peuvent sembler similaires, mais ils diffèrent tous deux en fonction de leur fonctionnement. Comme il n’est pas nécessaire de prédéterminer le nombre de clusters comme nous l’avons fait dans l’algorithme K-Means.
La technique de clustering hiérarchique comporte deux approches :
exemples de DFA
Pourquoi un clustering hiérarchique ?
Comme nous en avons déjà d'autres regroupement des algorithmes tels que Clustering K-Means , alors pourquoi avons-nous besoin d'un clustering hiérarchique ? Ainsi, comme nous l'avons vu dans le clustering K-means, cet algorithme présente certains défis, à savoir un nombre prédéterminé de clusters, et il essaie toujours de créer des clusters de même taille. Pour résoudre ces deux défis, nous pouvons opter pour l'algorithme de clustering hiérarchique car, dans cet algorithme, nous n'avons pas besoin de connaître le nombre prédéfini de clusters.
Dans cette rubrique, nous discuterons de l'algorithme de clustering hiérarchique aggloméré.
Clustering hiérarchique aggloméré
L'algorithme de clustering hiérarchique agglomératif est un exemple populaire de HCA. Pour regrouper les ensembles de données en clusters, il suit le une approche en profondeur . Cela signifie que cet algorithme considère chaque ensemble de données comme un seul cluster au début, puis commence à combiner la paire de clusters la plus proche. Il le fait jusqu'à ce que tous les clusters soient fusionnés en un seul cluster contenant tous les ensembles de données.
Cette hiérarchie de clusters est représentée sous la forme du dendrogramme.
Comment fonctionne le clustering hiérarchique aggloméré ?
Le fonctionnement de l'algorithme AHC peut être expliqué en suivant les étapes ci-dessous :
Remarque : Pour mieux comprendre le clustering hiérarchique, il est conseillé de jeter un œil au clustering k-means.
Mesurer la distance entre deux clusters
Comme nous l'avons vu, le distance la plus proche entre les deux clusters est crucial pour le clustering hiérarchique. Il existe différentes manières de calculer la distance entre deux clusters, et ces méthodes déterminent la règle de clustering. Ces mesures sont appelées Méthodes de liaison . Certaines des méthodes de liaison les plus populaires sont indiquées ci-dessous :
À partir des approches ci-dessus, nous pouvons appliquer n’importe laquelle d’entre elles en fonction du type de problème ou des exigences commerciales.
Réalisation du dendrogramme dans le clustering hiérarchique
Le dendrogramme est une structure arborescente qui est principalement utilisée pour stocker chaque étape sous forme de mémoire exécutée par l'algorithme HC. Dans le tracé du dendrogramme, l'axe Y montre les distances euclidiennes entre les points de données et l'axe X montre tous les points de données de l'ensemble de données donné.
Le fonctionnement du dendrogramme peut être expliqué à l'aide du schéma ci-dessous :
Dans le diagramme ci-dessus, la partie gauche montre comment les clusters sont créés dans le clustering agglomératif, et la partie droite montre le dendrogramme correspondant.
- Comme nous l'avons vu ci-dessus, premièrement, les points de données P2 et P3 se combinent et forment un cluster, en conséquence un dendrogramme est créé, qui relie P2 et P3 avec une forme rectangulaire. La hauteur est décidée en fonction de la distance euclidienne entre les points de données.
- À l'étape suivante, P5 et P6 forment un cluster et le dendrogramme correspondant est créé. Elle est plus élevée que la précédente, car la distance euclidienne entre P5 et P6 est un peu plus grande que celle entre P2 et P3.
- Encore une fois, deux nouveaux dendrogrammes sont créés qui combinent P1, P2 et P3 dans un dendrogramme, et P4, P5 et P6, dans un autre dendrogramme.
- Enfin, le dendrogramme final est créé et combine tous les points de données.
Nous pouvons couper l’arborescence du dendrogramme à n’importe quel niveau selon nos besoins.
Implémentation Python du clustering hiérarchique aggloméré
Nous allons maintenant voir l’implémentation pratique de l’algorithme de clustering hiérarchique agglomératif utilisant Python. Pour implémenter cela, nous utiliserons le même problème d'ensemble de données que celui que nous avons utilisé dans le sujet précédent sur le clustering K-means afin de pouvoir comparer facilement les deux concepts.
L'ensemble de données contient les informations des clients qui ont visité un centre commercial pour faire du shopping. Ainsi, le propriétaire du centre commercial souhaite trouver des modèles ou un comportement particulier de ses clients en utilisant les informations de l'ensemble de données.
Étapes de mise en œuvre d'AHC à l'aide de Python :
Les étapes de mise en œuvre seront les mêmes que pour le clustering k-means, à l'exception de quelques changements tels que la méthode pour trouver le nombre de clusters. Voici les étapes :
Étapes de prétraitement des données :
Dans cette étape, nous importerons les bibliothèques et les ensembles de données pour notre modèle.
# Importing the libraries import numpy as nm import matplotlib.pyplot as mtp import pandas as pd
Les lignes de code ci-dessus sont utilisées pour importer les bibliothèques afin d'effectuer des tâches spécifiques, telles que numpy pour les opérations mathématiques, matplotlib pour dessiner les graphiques ou les nuages de points, et pandas pour importer l'ensemble de données.
opacité de la transition CSS
# Importing the dataset dataset = pd.read_csv('Mall_Customers_data.csv')
Comme indiqué ci-dessus, nous avons importé le même ensemble de données de Mall_Customers_data.csv, comme nous l'avons fait dans le clustering k-means. Considérez le résultat ci-dessous :
javascript si instruction
Ici, nous extrairons uniquement la matrice des caractéristiques car nous n'avons aucune information supplémentaire sur la variable dépendante. Le code est donné ci-dessous :
x = dataset.iloc[:, [3, 4]].values
Ici, nous n'avons extrait que 3 et 4 colonnes car nous utiliserons un tracé 2D pour voir les clusters. Nous considérons donc le score annuel des revenus et des dépenses comme matrice de fonctionnalités.
Étape 2 : Trouver le nombre optimal de clusters à l'aide du dendrogramme
Nous allons maintenant trouver le nombre optimal de clusters en utilisant le dendrogramme pour notre modèle. Pour cela, nous allons utiliser scipy bibliothèque car elle fournit une fonction qui renverra directement le dendrogramme de notre code. Considérez les lignes de code ci-dessous :
#Finding the optimal number of clusters using the dendrogram import scipy.cluster.hierarchy as shc dendro = shc.dendrogram(shc.linkage(x, method='ward')) mtp.title('Dendrogrma Plot') mtp.ylabel('Euclidean Distances') mtp.xlabel('Customers') mtp.show()
Dans les lignes de code ci-dessus, nous avons importé le hiérarchie module de la bibliothèque scipy. Ce module nous fournit une méthode shc.denrogram(), qui prend le lien() comme paramètre. La fonction de liaison est utilisée pour définir la distance entre deux clusters, nous avons donc passé ici le x (matrice de fonctionnalités) et la méthode ' salle ', la méthode populaire de liaison dans le clustering hiérarchique.
Les lignes de code restantes servent à décrire les étiquettes du tracé du dendrogramme.
Sortir:
En exécutant les lignes de code ci-dessus, nous obtiendrons le résultat ci-dessous :
À l'aide de ce dendrogramme, nous allons maintenant déterminer le nombre optimal de clusters pour notre modèle. Pour cela, nous trouverons le distance verticale maximale cela ne coupe aucune barre horizontale. Considérez le diagramme ci-dessous :
Dans le diagramme ci-dessus, nous avons montré les distances verticales qui ne coupent pas leurs barres horizontales. Comme on peut le visualiser, les 4èmela distance semble être au maximum, donc d'après cela, le nombre de clusters sera de 5 (les lignes verticales dans cette plage). On peut aussi prendre le 2sdnombre car il est approximativement égal au 4èmedistance, mais nous considérerons les 5 clusters car c'est la même chose que nous avons calculée dans l'algorithme K-means.
Ainsi, le nombre optimal de clusters sera de 5 , et nous entraînerons le modèle à l'étape suivante, en utilisant le même.
Étape 3 : Formation du modèle de clustering hiérarchique
Comme nous connaissons le nombre optimal de clusters requis, nous pouvons maintenant entraîner notre modèle. Le code est donné ci-dessous :
#training the hierarchical model on dataset from sklearn.cluster import AgglomerativeClustering hc= AgglomerativeClustering(n_clusters=5, affinity='euclidean', linkage='ward') y_pred= hc.fit_predict(x)
Dans le code ci-dessus, nous avons importé le AgglomératifClustering classe du module cluster de la bibliothèque scikit learn.
Ensuite, nous avons créé l'objet de cette classe nommé comme hc. La classe AgglomerativeClustering prend les paramètres suivants :
Dans la dernière ligne, nous avons créé la variable dépendante y_pred pour ajuster ou entraîner le modèle. Il entraîne non seulement le modèle, mais renvoie également les clusters auxquels appartient chaque point de données.
Après avoir exécuté les lignes de code ci-dessus, si nous passons par l'option explorateur de variables dans notre IDE Sypder, nous pouvons vérifier la variable y_pred. Nous pouvons comparer l'ensemble de données d'origine avec la variable y_pred. Considérez l'image ci-dessous :
Comme nous pouvons le voir sur l'image ci-dessus, le y_pred affiche la valeur du cluster, ce qui signifie que l'identifiant client 1 appartient au 5èmecluster (comme l'indexation commence à 0, donc 4 signifie 5èmecluster), l'identifiant client 2 appartient à 4èmecluster, et ainsi de suite.
Étape 4 : Visualiser les clusters
Comme nous avons entraîné notre modèle avec succès, nous pouvons désormais visualiser les clusters correspondant à l'ensemble de données.
Ici, nous utiliserons les mêmes lignes de code que dans le clustering k-means, à une exception près. Ici, nous ne tracerons pas le centroïde comme nous l'avons fait en k-means, car ici nous avons utilisé un dendrogramme pour déterminer le nombre optimal de clusters. Le code est donné ci-dessous :
#visulaizing the clusters mtp.scatter(x[y_pred == 0, 0], x[y_pred == 0, 1], s = 100, c = 'blue', label = 'Cluster 1') mtp.scatter(x[y_pred == 1, 0], x[y_pred == 1, 1], s = 100, c = 'green', label = 'Cluster 2') mtp.scatter(x[y_pred== 2, 0], x[y_pred == 2, 1], s = 100, c = 'red', label = 'Cluster 3') mtp.scatter(x[y_pred == 3, 0], x[y_pred == 3, 1], s = 100, c = 'cyan', label = 'Cluster 4') mtp.scatter(x[y_pred == 4, 0], x[y_pred == 4, 1], s = 100, c = 'magenta', label = 'Cluster 5') mtp.title('Clusters of customers') mtp.xlabel('Annual Income (k$)') mtp.ylabel('Spending Score (1-100)') mtp.legend() mtp.show()
Sortie : En exécutant les lignes de code ci-dessus, nous obtiendrons le résultat ci-dessous :
quand l'école a-t-elle été inventée