El clustering jeràrquic és una tècnica de clustering no supervisat que busca construir una jerarquia de clusters. A diferència d'altres mètodes de clustering com K-means, el clustering jeràrquic no requereix especificar el nombre de clusters per avançat. Aquesta tècnica es pot dividir en dos tipus principals: aglomeratiu i divisori.
Tipus de Clustering Jeràrquic
Clustering Jeràrquic Aglomeratiu (HAC)
Aquest és el mètode més comú i funciona de manera ascendent:
- Inicialització: Cada punt de dades comença com un cluster individual.
- Agrupació: En cada pas, els dos clusters més propers es combinen en un sol cluster.
- Finalització: Aquest procés es repeteix fins que tots els punts de dades es troben en un sol cluster o fins que es compleix un criteri de parada específic.
Clustering Jeràrquic Divisori
Aquest mètode funciona de manera descendent:
- Inicialització: Tots els punts de dades comencen en un sol cluster.
- Divisió: En cada pas, el cluster es divideix en dos subclusters.
- Finalització: Aquest procés es repeteix fins que cada punt de dades és un cluster individual o fins que es compleix un criteri de parada específic.
Mètodes de Càlcul de Distàncies entre Clusters
Per determinar quins clusters s'han de combinar o dividir, es poden utilitzar diferents mètodes per calcular la distància entre clusters:
- Mètode del Vincle Senzill (Single Linkage): La distància entre dos clusters és la distància mínima entre qualsevol parell de punts (un de cada cluster).
- Mètode del Vincle Complet (Complete Linkage): La distància entre dos clusters és la distància màxima entre qualsevol parell de punts (un de cada cluster).
- Mètode del Vincle Mitjà (Average Linkage): La distància entre dos clusters és la mitjana de totes les distàncies entre parells de punts (un de cada cluster).
- Mètode del Centroid (Centroid Linkage): La distància entre dos clusters és la distància entre els seus centroides.
- Mètode de Ward: Aquest mètode minimitza la suma de les variàncies dins de cada cluster.
Implementació Pràctica
Exemple amb Python
A continuació, es mostra un exemple de com implementar el clustering jeràrquic aglomeratiu utilitzant la biblioteca scipy
i matplotlib
per visualitzar el dendrograma.
import numpy as np import matplotlib.pyplot as plt from scipy.cluster.hierarchy import dendrogram, linkage from sklearn.datasets import make_blobs # Generar dades de mostra X, _ = make_blobs(n_samples=50, centers=3, random_state=42) # Calcular l'enllaç jeràrquic Z = linkage(X, method='ward') # Crear el dendrograma plt.figure(figsize=(10, 7)) dendrogram(Z) plt.title('Dendrograma del Clustering Jeràrquic') plt.xlabel('Índex de les Mostres') plt.ylabel('Distància') plt.show()
Explicació del Codi
- Generació de Dades: Utilitzem
make_blobs
desklearn.datasets
per generar un conjunt de dades de mostra amb 50 punts i 3 centres. - Càlcul de l'Enllaç Jeràrquic: Utilitzem la funció
linkage
descipy.cluster.hierarchy
per calcular l'enllaç jeràrquic utilitzant el mètode de Ward. - Creació del Dendrograma: Utilitzem
dendrogram
descipy.cluster.hierarchy
per crear i visualitzar el dendrograma.
Exercici Pràctic
Exercici
Implementa un clustering jeràrquic aglomeratiu utilitzant el mètode del vincle complet (complete linkage) amb un conjunt de dades de la teva elecció. Visualitza el dendrograma resultant.
Solució
import numpy as np import matplotlib.pyplot as plt from scipy.cluster.hierarchy import dendrogram, linkage from sklearn.datasets import make_blobs # Generar dades de mostra X, _ = make_blobs(n_samples=50, centers=3, random_state=42) # Calcular l'enllaç jeràrquic amb el mètode del vincle complet Z = linkage(X, method='complete') # Crear el dendrograma plt.figure(figsize=(10, 7)) dendrogram(Z) plt.title('Dendrograma del Clustering Jeràrquic (Complete Linkage)') plt.xlabel('Índex de les Mostres') plt.ylabel('Distància') plt.show()
Errors Comuns i Consells
- No Normalitzar les Dades: Assegura't de normalitzar o estandarditzar les dades abans d'aplicar el clustering jeràrquic, especialment si les característiques tenen diferents escales.
- Interpretació del Dendrograma: La interpretació del dendrograma pot ser subjectiva. És important establir un criteri clar per tallar el dendrograma i determinar el nombre de clusters.
- Elecció del Mètode de Vincle: La selecció del mètode de vincle pot afectar significativament els resultats. Prova diferents mètodes i compara els resultats per trobar el més adequat per al teu conjunt de dades.
Conclusió
El clustering jeràrquic és una tècnica poderosa per agrupar dades sense necessitat de conèixer el nombre de clusters per avançat. La seva capacitat per crear una jerarquia de clusters el fa especialment útil per a l'anàlisi exploratòria de dades. En el proper mòdul, explorarem altres tècniques de clustering no supervisat, com l'Anàlisi de Components Principals (PCA).
Curs de Machine Learning
Mòdul 1: Introducció al Machine Learning
- Què és el Machine Learning?
- Història i evolució del Machine Learning
- Tipus de Machine Learning
- Aplicacions del Machine Learning
Mòdul 2: Fonaments d'Estadística i Probabilitat
- Conceptes bàsics d'estadística
- Distribucions de probabilitat
- Inferència estadística
- Teorema de Bayes
Mòdul 3: Preprocessament de Dades
Mòdul 4: Algoritmes de Machine Learning Supervisat
- Regressió lineal
- Regressió logística
- Arbres de decisió
- Màquines de suport vectorial (SVM)
- K-Veïns més propers (K-NN)
- Xarxes neuronals
Mòdul 5: Algoritmes de Machine Learning No Supervisat
- Clustering: K-means
- Clustering jeràrquic
- Anàlisi de components principals (PCA)
- Anàlisi d'agrupament DBSCAN
Mòdul 6: Avaluació i Validació de Models
Mòdul 7: Tècniques Avançades i Optimització
- Ensemble Learning
- Gradient Boosting
- Xarxes neuronals profundes (Deep Learning)
- Optimització d'hiperparàmetres
Mòdul 8: Implementació i Desplegament de Models
- Frameworks i biblioteques populars
- Implementació de models en producció
- Manteniment i monitoratge de models
- Consideracions ètiques i de privacitat
Mòdul 9: Projectes Pràctics
- Projecte 1: Predicció de preus d'habitatges
- Projecte 2: Classificació d'imatges
- Projecte 3: Anàlisi de sentiments a xarxes socials
- Projecte 4: Detecció de fraus