Introducción
El clustering es una técnica de aprendizaje no supervisado que agrupa un conjunto de objetos de tal manera que los objetos en el mismo grupo (o clúster) son más similares entre sí que a los objetos de otros grupos. Esta técnica es ampliamente utilizada en minería de datos, reconocimiento de patrones y análisis de datos.
Objetivos del Tema
- Comprender los conceptos básicos del clustering.
- Conocer los algoritmos de clustering más comunes.
- Aplicar algoritmos de clustering a conjuntos de datos reales.
- Evaluar la calidad de los clústeres obtenidos.
Conceptos Básicos
Definiciones Clave
- Clúster: Un grupo de datos que son similares entre sí.
- Centroid: El centro de un clúster.
- Distancia: Una medida de similitud o disimilitud entre dos puntos de datos.
Tipos de Clustering
- Particional: Divide los datos en k clústeres no solapados.
- Jerárquico: Crea una jerarquía de clústeres.
- Densidad: Agrupa puntos que están densamente conectados.
- Basado en Modelos: Asume que los datos son generados por una mezcla de distribuciones probabilísticas.
Algoritmos de Clustering
K-means
Descripción
K-means es uno de los algoritmos de clustering más simples y populares. Divide los datos en k clústeres, donde cada clúster está representado por el centroide de los puntos de datos en el clúster.
Pasos del Algoritmo
- Seleccionar k puntos como centroides iniciales.
- Asignar cada punto de datos al clúster cuyo centroide esté más cercano.
- Recalcular los centroides como el promedio de los puntos de datos en cada clúster.
- Repetir los pasos 2 y 3 hasta que los centroides no cambien significativamente.
Ejemplo en Python
from sklearn.cluster import KMeans import numpy as np # Datos de ejemplo X = np.array([[1, 2], [1, 4], [1, 0], [10, 2], [10, 4], [10, 0]]) # Crear el modelo K-means kmeans = KMeans(n_clusters=2, random_state=0).fit(X) # Predecir los clústeres labels = kmeans.labels_ # Obtener los centroides centroids = kmeans.cluster_centers_ print("Labels:", labels) print("Centroids:", centroids)
Ejercicio Práctico
Ejercicio: Utiliza el algoritmo K-means para agrupar el conjunto de datos iris
de sklearn en 3 clústeres. Visualiza los resultados utilizando un gráfico de dispersión.
Solución
from sklearn.datasets import load_iris import matplotlib.pyplot as plt # Cargar el conjunto de datos iris iris = load_iris() X = iris.data # Aplicar K-means kmeans = KMeans(n_clusters=3, random_state=0).fit(X) labels = kmeans.labels_ # Visualizar los resultados plt.scatter(X[:, 0], X[:, 1], c=labels, cmap='viridis') plt.xlabel('Sepal length') plt.ylabel('Sepal width') plt.title('K-means Clustering on Iris Dataset') plt.show()
DBSCAN (Density-Based Spatial Clustering of Applications with Noise)
Descripción
DBSCAN es un algoritmo de clustering basado en densidad que puede encontrar clústeres de forma arbitraria y manejar ruido (puntos de datos que no pertenecen a ningún clúster).
Pasos del Algoritmo
- Para cada punto de datos, encontrar los puntos en su vecindad (dentro de un radio ε).
- Si un punto tiene al menos
min_samples
puntos en su vecindad, se considera un punto central y se forma un clúster. - Expandir el clúster a todos los puntos densamente conectados.
- Repetir hasta que todos los puntos estén asignados a un clúster o marcados como ruido.
Ejemplo en Python
from sklearn.cluster import DBSCAN # Datos de ejemplo X = np.array([[1, 2], [2, 2], [2, 3], [8, 7], [8, 8], [25, 80]]) # Crear el modelo DBSCAN db = DBSCAN(eps=3, min_samples=2).fit(X) # Predecir los clústeres labels = db.labels_ print("Labels:", labels)
Ejercicio Práctico
Ejercicio: Utiliza el algoritmo DBSCAN para agrupar el conjunto de datos make_moons
de sklearn. Visualiza los resultados utilizando un gráfico de dispersión.
Solución
from sklearn.datasets import make_moons # Generar datos de ejemplo X, _ = make_moons(n_samples=300, noise=0.05) # Aplicar DBSCAN db = DBSCAN(eps=0.2, min_samples=5).fit(X) labels = db.labels_ # Visualizar los resultados plt.scatter(X[:, 0], X[:, 1], c=labels, cmap='viridis') plt.xlabel('Feature 1') plt.ylabel('Feature 2') plt.title('DBSCAN Clustering on make_moons Dataset') plt.show()
Evaluación de Clustering
Métricas de Evaluación
- Índice de Silueta: Mide la coherencia de los clústeres.
- Coeficiente de Dunn: Mide la compacidad y separación de los clústeres.
- Homogeneidad y Completitud: Miden la pureza de los clústeres.
Ejemplo de Evaluación
from sklearn.metrics import silhouette_score # Calcular el índice de silueta para K-means silhouette_avg = silhouette_score(X, labels) print("Silhouette Score for K-means:", silhouette_avg)
Conclusión
En esta sección, hemos explorado los conceptos básicos del clustering y algunos de los algoritmos más comunes, como K-means y DBSCAN. También hemos aprendido cómo evaluar la calidad de los clústeres obtenidos. Estos conocimientos son fundamentales para aplicar técnicas de clustering a problemas del mundo real y extraer información valiosa de los datos.
Próximos Pasos
En el siguiente módulo, profundizaremos en los casos de estudio y aplicaciones prácticas de los algoritmos de clustering en diversos campos, como la industria y las redes sociales.
Algoritmos Avanzados
Módulo 1: Introducción a los Algoritmos Avanzados
Módulo 2: Algoritmos de Optimización
- Programación Lineal
- Algoritmos de Optimización Combinatoria
- Algoritmos Genéticos
- Optimización de Colonia de Hormigas
Módulo 3: Algoritmos en Grafos
- Representación de Grafos
- Búsqueda en Grafos: BFS y DFS
- Algoritmos de Caminos Mínimos
- Algoritmos de Flujo Máximo
- Algoritmos de Emparejamiento en Grafos
Módulo 4: Algoritmos de Búsqueda y Ordenación
Módulo 5: Algoritmos de Aprendizaje Automático
- Introducción al Aprendizaje Automático
- Algoritmos de Clasificación
- Algoritmos de Regresión
- Redes Neuronales y Deep Learning
- Algoritmos de Clustering
Módulo 6: Casos de Estudio y Aplicaciones
- Optimización en la Industria
- Aplicaciones de Grafos en Redes Sociales
- Búsqueda y Ordenación en Grandes Volúmenes de Datos
- Aplicaciones de Aprendizaje Automático en la Vida Real