
🔵 K-means falla con clusters curvos. Spectral Clustering los resuelve usando vectores propios del grafo de similitud.
El problema con K-means:
En datos con forma de luna (o cualquier estructura no lineal), K-means agrupa incorrectamente porque asume clusters esféricos.
El flujo de Spectral Clustering:
Dataset → Grafo de Similitud → Laplaciano → Vectores Propios → Clusters
Los 7 pasos:
- Obtener datos
- Matriz de similitud (W) → mide similitud entre cada par de puntos (kernel Gaussiano con parámetro
gamma) - Matriz de grado (D) → diagonal: suma de similitudes de cada punto con todos los demás
- Laplaciano (L = D − W) → captura la estructura del grafo
- Eigendecomposición de L →
eigenvalues, eigenvectors = np.linalg.eigh(L) - Seleccionar los k vectores propios más pequeños → corresponden a los k clusters (eigengap heuristic: elegir donde hay el mayor salto entre valores propios consecutivos)
- Aplicar K-means en el espacio de embedding espectral → ahora los clusters son linealmente separables
Por qué funciona:
Los vectores propios del Laplaciano transforman los datos a un nuevo espacio donde puntos muy conectados quedan juntos. K-means sí funciona ahí, aunque no funcionaba en el espacio original.
💡 Explicación en pocas palabras#
Spectral Clustering no agrupa por distancia euclidiana, sino por conectividad en un grafo de similitud. El truco elegante: los vectores propios del Laplaciano del grafo actúan como nuevas features donde las estructuras complejas se vuelven linealmente separables. La combinación de álgebra lineal + K-means permite detectar clusters que ningún método basado en distancias podría encontrar.
Más información en el link 👇

