Agrupación espectral en Python

Agrupación espectral en Python
La agrupación es un problema de aprendizaje automático ampliamente utilizado donde los puntos de datos similares se agrupan para formar un conjunto de grupos. Se utiliza ampliamente en aplicaciones como sistemas de recomendación, detección de anomalías y segmentación de clientes. Vamos a pasar por una técnica de agrupación moderna conocida como Agrupación espectral y su implementación en Python utilizando el sklearn biblioteca.

Que es la agrupación?

La agrupación es un problema de aprendizaje automático no supervisado en el que uno debe dividir las observaciones "M" en los grupos "K", con puntos en el mismo clúster extremadamente similares y los puntos en diferentes grupos son muy diferentes. Problemas como la segmentación del cliente, los sistemas de recomendación, la detección de anomalías, etc., se resuelven de la agrupación. Es posible que esté familiarizado con el algoritmo de agrupación K-means, en el que no tenemos etiquetas y debemos colocar cada punto de datos en su clúster. El método de agrupación espectral se utiliza para lograr el mismo objetivo que el método de agrupación K-means pero con un enfoque basado en gráficos. La imagen a continuación muestra los tres grupos separados entre sí y tienen puntos similares juntos.

¿Qué es la agrupación de K-means??

La agrupación de K-means implica identificar los clústeres K del conjunto de datos que son distintos entre sí. Solo se utilizan variables independientes para crear grupos. K significa que la agrupación es un algoritmo de aprendizaje no supervisado. Los puntos de datos en el mismo clúster son bastante similares, mientras que los puntos de datos en diferentes grupos son muy distintos. Comienza con k centros aleatorios y asignas elementos a los más cercanos a ellos. Luego se recalcula el centro de cada colección, lo que resulta en nuevos K centros K. Sigue haciendo esto hasta que el número de iteraciones alcance un umbral predeterminado o el centro de los grupos apenas se mueve. El método del codo se usa comúnmente para determinar el valor de k.

Clasificación vs. Agrupación

La clasificación es el resultado del aprendizaje supervisado, lo que significa que desea que el sistema genere una etiqueta conocida. Por ejemplo, si construyó un clasificador de imagen, diría: "Este es un perro, este es un gato", basado en muestras de perros y gatos que le mostró.

La agrupación es la consecuencia del aprendizaje no supervisado, lo que implica que ha visto muchas muestras pero no se les ha dado etiquetas para ellas. Por ejemplo, podemos usar la clúster para segmentar a los clientes del mismo tipo de los clientes de diferentes tipos. Esta es una declaración de problema ampliamente utilizada que se resuelve utilizando la agrupación.

¿Qué es el algoritmo de agrupación espectral??

La agrupación espectral es un algoritmo de agrupación moderno basado en la teoría de gráficos. Ha superado a varios enfoques clásicos de agrupación y sigue evolucionando. Este algoritmo toma cada punto de datos como un nodo gráfico y utiliza particiones gráficas para resolver el problema de agrupación.

Trabajo de clúster espectral

Creación de una estructura de datos de gráficos

Puede visualizar cualquier conjunto de datos como una nube de puntos, con metro señalar norte dimensiones. Puede hacer un gráfico con esos puntos, siendo los nodos los puntos y los bordes (representados por w) siendo ponderado por lo similares que son los puntos. Una vez que tenemos nuestros datos en forma de gráfico, podemos generar una matriz de adyacencia simplemente ingresando el peso del borde entre los nodos "I" y "J" en cada columna de la matriz. Esto es un metro X metro matriz simétrica. W es el nombre de la matriz de adyacencia.

Proyectando los datos

En este paso, los datos se proyectan en un espacio dimensional inferior para acercar los puntos entre sí en el espacio de dimensión inferior. La fórmula da el grado de cada nodo:

La matriz de grado se calcula utilizando la fórmula:

El laplacio del gráfico se puede calcular utilizando la fórmula L = D-W. Podemos calcular el espectro de esta matriz, o sus vectores propios dispuestos de la más significativa a menos importante, ahora que tenemos el laplaciano del gráfico. Tomar los vectores propios "k" menos significativos le da una representación de cada nodo en el gráfico en las dimensiones "k", lo que representa cada punto en el conjunto de datos. Los valores propios más pequeños están relacionados con los vectores propios menos significativos. Este es un tipo de reducción de dimensionalidad que no es lineal.

Agrupar los datos

Este paso implica la agrupación de los datos dimensionales reducidos utilizando la agrupación de K-means o cualquier otra técnica de agrupación clásica. La matriz laplaciana de gráfico normalizado se asigna primero a cada nodo. Los datos se agrupan utilizando cualquier método estándar.

En un escenario ideal, anticiparía que sus datos no están completamente conectados, con distintos componentes conectados para cada clúster. Sin embargo, en la práctica, este rara vez es el caso: depende de varias cosas, incluidos los datos en sí y cómo diseña su gráfico de adyacencia. En términos de eficiencia, los mejores grupos se separan, los comportamientos más espectrales se comportan previsiblemente: el gráfico tendrá más de un componente conectado (idealmente k, el número de clústeres en el conjunto de datos), los primeros valores propios K serán cero, y se ejecutarán K-Means en el espacio creado al tomar los primeros K eigenvectores del gráfico Laplacian arrojarán resultados bastante satisfactorios. Cuanto más cerca estén los clústeres, más lejos están los valores propios de 0, y más cerca están los puntos en el espacio propio para distintos grupos.

K-means vs. Agrupación espectral

Considere los datos que se proporcionan a continuación.

Incluso cuando el verdadero número de grupos K es conocido por el algoritmo, K-means no se agrupará con éxito los datos anteriores. Esto se debe a que K-means es un buen algoritmo de agrupación de datos para encontrar grupos globulares como los siguientes:

donde todos los miembros del clúster están cerca uno del otro (en el sentido euclidiano). Los enfoques de agrupación de gráficos, como la agrupación espectral, por otro lado, no agrupan los puntos de datos directamente en su espacio de datos nativo, sino que crean una matriz de similitud con el (I, J)th fila que representa una distancia de similitud entre el ith y jth Puntos de datos en su conjunto de datos.

De alguna manera, la agrupación espectral es más general (y potente) que las medias K, ya que la agrupación espectral es aplicable cuando K-means no es (solo use una distancia euclidiana simple como medida de similitud). Sin embargo, lo contrario no es cierto. Al elegir una de estas estrategias sobre la otra, hay algunas preocupaciones prácticas a tener en cuenta. La matriz de datos de entrada se factoriza con K-means, mientras que la matriz de laplacia se factoriza con la agrupación espectral (una matriz derivada de la matriz de similitud).

Implementación de la agrupación espectral usando Python

Importando las bibliotecas

de Sklearn.Importación de clúster SpectralClustering
importar numpy como np
Leyendo los datos
X = NP.Array ([[1, 1], [2, 1], [1, 0],
[4, 7], [3, 5], [3, 6]])

Tenga en cuenta que en este ejemplo, hemos tomado los datos con menos dimensiones. Si tiene datos dimensionales más grandes, puede aplicar el análisis de componentes principales (PCA) para reducir las dimensiones de los datos.

Inicializando nuestro modelo

modelo = SpectRalClustering (N_CLUSTERS = 2,
asigne_labels = 'discretizar',
random_state = 0).Fit (x)

Obtenga etiquetas de cada punto de datos

impresión (modelo.etiquetas_)

Producción

Array ([1, 1, 1, 0, 0, 0])

Ventajas de la agrupación espectral

  • La agrupación espectral no asume la forma de los datos. Funciona bien en todo tipo de distribuciones de datos. Otros algoritmos clásicos como K-means suponen la forma de los datos como esféricos.
  • Funciona bastante bien cuando las relaciones son más o menos transitivas (como la similitud).
  • No necesitamos todo el conjunto de datos en clúster; Solo una matriz de similitud/distancia, o tal vez solo el laplacio, será suficiente.

Desventajas de la agrupación espectral

  • Computar vectores propios es el cuello de botella; Por lo tanto, es costoso para conjuntos de datos realmente grandes.
  • No funciona bien con conjuntos de datos ruidosos.
  • El número de clústeres (k) debe decidirse de antemano.

Casos de uso de agrupación espectral

  • Segmentación de imagen
  • Segmentación de clientes
  • Resolución de entidad
  • Secuencias de proteínas Clustering espectral

Conclusión

Vimos cómo podemos usar la agrupación espectral para agrupar nuestros puntos de datos. Primero proyectamos los puntos de datos en una estructura de datos de gráficos, reducimos las dimensiones de los datos y luego aplicamos la técnica de agrupación tradicional en los datos reducidos. Más tarde vimos con qué facilidad se podría implementar este algoritmo complejo en Python utilizando algunas líneas de código.