Introducció
Els algoritmes de clustering són tècniques d'aprenentatge automàtic no supervisat que agrupen un conjunt de dades en clústers (o grups) de manera que els elements dins d'un mateix clúster siguin més similars entre ells que amb els elements d'altres clústers. Aquestes tècniques són àmpliament utilitzades en anàlisi de dades, mineria de dades, reconeixement de patrons i moltes altres aplicacions.
Conceptes Bàsics
Abans d'entrar en els detalls dels diferents algoritmes de clustering, és important entendre alguns conceptes bàsics:
- Distància: Mesura de la similitud entre dos punts de dades. Les mesures de distància més comunes són la distància euclidiana, la distància de Manhattan i la distància cosinus.
- Centroid: El punt central d'un clúster, sovint calculat com la mitjana dels punts de dades dins del clúster.
- Inèrcia: Mesura de la dispersió dels punts de dades dins dels seus respectius clústers. Una inèrcia més baixa indica clústers més compactes.
Algoritmes de Clustering
K-means
Descripció
K-means és un dels algoritmes de clustering més populars i senzills. L'objectiu és dividir un conjunt de dades en K clústers, on K és un paràmetre predefinit.
Procediment
- Inicialitzar K centroids aleatòriament.
- Assignar cada punt de dades al centroid més proper.
- Recalcular els centroids com la mitjana dels punts assignats a cada clúster.
- Repetir els passos 2 i 3 fins que els centroids no canviïn significativament.
Exemple de Codi
from sklearn.cluster import KMeans import numpy as np # Generar dades aleatòries X = np.random.rand(100, 2) # Aplicar K-means kmeans = KMeans(n_clusters=3, random_state=0).fit(X) # Obtenir les etiquetes dels clústers labels = kmeans.labels_ # Obtenir els centroids centroids = kmeans.cluster_centers_
Avantatges i Desavantatges
Avantatges:
- Senzill i fàcil d'implementar.
- Escalable per a grans conjunts de dades.
Desavantatges:
- Necessita especificar K.
- Sensible a la inicialització dels centroids.
- No funciona bé amb clústers de formes no esfèriques.
Algoritme de Clustering Jeràrquic
Descripció
El clustering jeràrquic construeix una jerarquia de clústers. Pot ser aglomeratiu (bottom-up) o divisori (top-down).
Procediment
-
Aglomeratiu:
- Comença amb cada punt de dades com un clúster individual.
- Fusiona els clústers més propers iterativament fins que només quedi un clúster.
-
Divisori:
- Comença amb tots els punts de dades en un sol clúster.
- Divideix iterativament els clústers fins que cada punt de dades estigui en el seu propi clúster.
Exemple de Codi
from scipy.cluster.hierarchy import dendrogram, linkage import matplotlib.pyplot as plt # Generar dades aleatòries X = np.random.rand(100, 2) # Aplicar clustering jeràrquic Z = linkage(X, 'ward') # Dibuixar el dendrograma plt.figure() dendrogram(Z) plt.show()
Avantatges i Desavantatges
Avantatges:
- No necessita especificar el nombre de clústers.
- Proporciona una representació visual (dendrograma).
Desavantatges:
- No és escalable per a grans conjunts de dades.
- Les decisions de fusió/divisió són irreversibles.
DBSCAN (Density-Based Spatial Clustering of Applications with Noise)
Descripció
DBSCAN és un algoritme de clustering basat en la densitat que pot trobar clústers de formes arbitràries i identificar punts de soroll.
Procediment
- Seleccionar un punt no visitat i trobar tots els punts dins d'un radi ε (epsilon).
- Si el nombre de punts dins del radi és superior a un mínim predefinit (minPts), es crea un nou clúster.
- Expandir el clúster agregant punts densament connectats.
- Repetir fins que tots els punts hagin estat visitats.
Exemple de Codi
from sklearn.cluster import DBSCAN # Generar dades aleatòries X = np.random.rand(100, 2) # Aplicar DBSCAN dbscan = DBSCAN(eps=0.1, min_samples=5).fit(X) # Obtenir les etiquetes dels clústers labels = dbscan.labels_
Avantatges i Desavantatges
Avantatges:
- No necessita especificar el nombre de clústers.
- Pot trobar clústers de formes arbitràries.
- Identifica punts de soroll.
Desavantatges:
- Sensible als paràmetres ε i minPts.
- No funciona bé amb dades de densitat variable.
Exercicis Pràctics
Exercici 1: Aplicar K-means
- Genera un conjunt de dades aleatòries amb 200 punts en 2 dimensions.
- Aplica l'algoritme K-means amb K=4.
- Visualitza els clústers i els centroids.
Solució
import matplotlib.pyplot as plt # Generar dades aleatòries X = np.random.rand(200, 2) # Aplicar K-means kmeans = KMeans(n_clusters=4, random_state=0).fit(X) labels = kmeans.labels_ centroids = kmeans.cluster_centers_ # Visualitzar els clústers plt.scatter(X[:, 0], X[:, 1], c=labels, cmap='viridis') plt.scatter(centroids[:, 0], centroids[:, 1], s=300, c='red') plt.show()
Exercici 2: Aplicar DBSCAN
- Genera un conjunt de dades aleatòries amb 300 punts en 2 dimensions.
- Aplica l'algoritme DBSCAN amb ε=0.05 i minPts=5.
- Visualitza els clústers i els punts de soroll.
Solució
# Generar dades aleatòries X = np.random.rand(300, 2) # Aplicar DBSCAN dbscan = DBSCAN(eps=0.05, min_samples=5).fit(X) labels = dbscan.labels_ # Visualitzar els clústers plt.scatter(X[:, 0], X[:, 1], c=labels, cmap='viridis') plt.show()
Resum
En aquesta secció, hem explorat diversos algoritmes de clustering, incloent K-means, clustering jeràrquic i DBSCAN. Hem après els conceptes bàsics, avantatges i desavantatges de cada algoritme, i hem aplicat aquests algoritmes a conjunts de dades aleatòries mitjançant exemples de codi en Python. Els exercicis pràctics proporcionats ajuden a reforçar els conceptes apresos i a desenvolupar habilitats pràctiques en l'aplicació d'algoritmes de clustering.
Algoritmes Avançats
Mòdul 1: Introducció als Algoritmes Avançats
Mòdul 2: Algoritmes d'Optimització
- Programació Lineal
- Algoritmes d'Optimització Combinatòria
- Algoritmes Genètics
- Optimització de Colònia de Formigues
Mòdul 3: Algoritmes en Grafs
- Representació de Grafs
- Cerca en Grafs: BFS i DFS
- Algoritmes de Camins Mínims
- Algoritmes de Flux Màxim
- Algoritmes d'Aparellament en Grafs
Mòdul 4: Algoritmes de Cerca i Ordenació
Mòdul 5: Algoritmes d'Aprenentatge Automàtic
- Introducció a l'Aprenentatge Automàtic
- Algoritmes de Classificació
- Algoritmes de Regressió
- Xarxes Neuronals i Deep Learning
- Algoritmes de Clustering
Mòdul 6: Casos d'Estudi i Aplicacions
- Optimització en la Indústria
- Aplicacions de Grafs en Xarxes Socials
- Cerca i Ordenació en Grans Volums de Dades
- Aplicacions d'Aprenentatge Automàtic en la Vida Real