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
- Inicialització: Seleccionar K punts inicials (centroides) de manera aleatòria o utilitzant una tècnica específica.
- Assignació: Assignar cada punt de dades al centreide més proper.
- Actualització: Recalcular els centroides com la mitjana dels punts assignats a cada cluster.
- 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
- Importació de biblioteques: Importem
numpy
per a la manipulació de dades,matplotlib
per a la visualització iKMeans
descikit-learn
per a l'algorisme K-means. - Dades d'exemple: Definim un conjunt de dades bidimensional.
- Crear el model K-means: Inicialitzem el model K-means amb 2 clusters.
- Ajustar el model: Ajustem el model a les dades.
- Predir els clusters: Utilitzem el model per predir els clusters de les dades.
- 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ó
- Dades d'exemple: Definim el conjunt de dades proporcionat.
- Crear el model K-means: Inicialitzem el model K-means amb 3 clusters.
- Ajustar el model: Ajustem el model a les dades.
- Predir els clusters: Utilitzem el model per predir els clusters de les dades.
- 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
- 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