Introducció al Clustering

El clustering és una tècnica de machine learning no supervisat que s'utilitza per agrupar dades en subconjunts (clusters) de manera que els elements dins de cada cluster siguin més similars entre ells que amb els elements d'altres clusters. K-means és un dels algorismes de clustering més populars i àmpliament utilitzats.

Què és K-means?

K-means és un algorisme de clustering iteratiu que divideix un conjunt de dades en K clusters, on K és un paràmetre definit per l'usuari. L'objectiu és minimitzar la variància dins de cada cluster.

Passos de l'algorisme K-means

  1. Inicialització: Seleccionar K punts inicials (centroides) de manera aleatòria o utilitzant una tècnica específica.
  2. Assignació: Assignar cada punt de dades al centreide més proper.
  3. Actualització: Recalcular els centroides com la mitjana dels punts assignats a cada cluster.
  4. Iteració: Repetir els passos d'assignació i actualització fins que els centroides no canviïn significativament o es compleixi un criteri de parada.

Exemple de K-means

Suposem que tenim un conjunt de dades bidimensional amb els següents punts:

Punt X Y
A 1 2
B 2 3
C 3 4
D 8 7
E 9 8
F 10 9

Volem agrupar aquests punts en 2 clusters (K=2).

Inicialització

Seleccionem dos punts inicials com a centroides, per exemple, A (1,2) i D (8,7).

Assignació

Calcularem la distància euclidiana de cada punt als centroides i assignarem cada punt al centreide més proper.

Punt Distància a (1,2) Distància a (8,7) Assignació
A 0 9.22 (1,2)
B 1.41 7.81 (1,2)
C 2.83 6.40 (1,2)
D 9.22 0 (8,7)
E 10.63 1.41 (8,7)
F 12.04 2.83 (8,7)

Actualització

Recalculem els centroides com la mitjana dels punts assignats a cada cluster.

  • Nou centreide per (1,2): mitjana de A, B, C = ((1+2+3)/3, (2+3+4)/3) = (2,3)
  • Nou centreide per (8,7): mitjana de D, E, F = ((8+9+10)/3, (7+8+9)/3) = (9,8)

Iteració

Repetim els passos d'assignació i actualització fins que els centroides no canviïn significativament.

Implementació en Python

A continuació, es mostra una implementació bàsica de K-means utilitzant la biblioteca scikit-learn en Python.

import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans

# Dades d'exemple
X = np.array([[1, 2], [2, 3], [3, 4], [8, 7], [9, 8], [10, 9]])

# Crear el model K-means
kmeans = KMeans(n_clusters=2, random_state=0)

# Ajustar el model a les dades
kmeans.fit(X)

# Predir els clusters
y_kmeans = kmeans.predict(X)

# Visualitzar els resultats
plt.scatter(X[:, 0], X[:, 1], c=y_kmeans, s=50, cmap='viridis')
centroids = kmeans.cluster_centers_
plt.scatter(centroids[:, 0], centroids[:, 1], c='red', s=200, alpha=0.75)
plt.show()

Explicació del codi

  1. Importació de biblioteques: Importem numpy per a la manipulació de dades, matplotlib per a la visualització i KMeans de scikit-learn per a l'algorisme K-means.
  2. Dades d'exemple: Definim un conjunt de dades bidimensional.
  3. Crear el model K-means: Inicialitzem el model K-means amb 2 clusters.
  4. Ajustar el model: Ajustem el model a les dades.
  5. Predir els clusters: Utilitzem el model per predir els clusters de les dades.
  6. Visualitzar els resultats: Visualitzem els punts de dades i els centroides dels clusters.

Exercici Pràctic

Exercici

Utilitza l'algorisme K-means per agrupar el següent conjunt de dades en 3 clusters:

Punt X Y
A 1 2
B 2 1
C 3 4
D 5 7
E 3 5
F 8 9
G 5 6
H 4 5
I 6 8
J 7 9

Solució

import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans

# Dades d'exemple
X = np.array([[1, 2], [2, 1], [3, 4], [5, 7], [3, 5], [8, 9], [5, 6], [4, 5], [6, 8], [7, 9]])

# Crear el model K-means
kmeans = KMeans(n_clusters=3, random_state=0)

# Ajustar el model a les dades
kmeans.fit(X)

# Predir els clusters
y_kmeans = kmeans.predict(X)

# Visualitzar els resultats
plt.scatter(X[:, 0], X[:, 1], c=y_kmeans, s=50, cmap='viridis')
centroids = kmeans.cluster_centers_
plt.scatter(centroids[:, 0], centroids[:, 1], c='red', s=200, alpha=0.75)
plt.show()

Explicació de la Solució

  1. Dades d'exemple: Definim el conjunt de dades proporcionat.
  2. Crear el model K-means: Inicialitzem el model K-means amb 3 clusters.
  3. Ajustar el model: Ajustem el model a les dades.
  4. Predir els clusters: Utilitzem el model per predir els clusters de les dades.
  5. Visualitzar els resultats: Visualitzem els punts de dades i els centroides dels clusters.

Errors Comuns i Consells

  • Selecció del valor de K: Un valor inadequat de K pot resultar en clusters poc significatius. Utilitza tècniques com l'elbow method per determinar el valor òptim de K.
  • Inicialització dels centroides: La selecció inicial dels centroides pot afectar el resultat final. Utilitza inicialitzacions com K-means++ per millorar la convergència.
  • Escalatge de dades: Assegura't que les dades estiguin escalades (normalitzades o estandarditzades) per evitar que les dimensions amb rangs més grans dominin la distància euclidiana.

Conclusió

L'algorisme K-means és una eina poderosa per agrupar dades en clusters significatius. Tot i que és senzill d'implementar, la seva eficàcia depèn de la selecció adequada del nombre de clusters i de la inicialització dels centroides. Amb una comprensió clara dels seus passos i una implementació acurada, K-means pot proporcionar insights valuosos en l'anàlisi de dades.

Curs de Machine Learning

Mòdul 1: Introducció al Machine Learning

Mòdul 2: Fonaments d'Estadística i Probabilitat

Mòdul 3: Preprocessament de Dades

Mòdul 4: Algoritmes de Machine Learning Supervisat

Mòdul 5: Algoritmes de Machine Learning No Supervisat

Mòdul 6: Avaluació i Validació de Models

Mòdul 7: Tècniques Avançades i Optimització

Mòdul 8: Implementació i Desplegament de Models

Mòdul 9: Projectes Pràctics

Mòdul 10: Recursos Addicionals

© Copyright 2024. Tots els drets reservats