Saltar al contenido

¿Cómo generar clustering?

Clustering multivariante de k-means python

Hay muchos algoritmos de clustering disponibles en Scikit-Learn y en otros lugares, pero quizás el más sencillo de entender es un algoritmo conocido como k-means clustering, que está implementado en sklearn.cluster.KMeans.

Pero te preguntarás cómo este algoritmo encuentra estos clústeres tan rápidamente. Después de todo, el número de combinaciones posibles de asignaciones de clústeres es exponencial en el número de puntos de datos; una búsqueda exhaustiva sería muy, muy costosa.

El «paso M» o «paso de maximización» se llama así porque implica la maximización de alguna función de aptitud que define la ubicación de los centros de los clusters; en este caso, esa maximización se logra tomando una simple media de los datos en cada cluster.

La literatura sobre este algoritmo es amplia, pero puede resumirse como sigue: en circunstancias típicas, cada repetición del paso E y del paso M siempre dará como resultado una mejor estimación de las características del cluster.

Es posible que no se consiga el resultado globalmente óptimo¶En primer lugar, aunque se garantiza que el procedimiento E-M mejora el resultado en cada paso, no se puede asegurar que conduzca a la mejor solución global.

Generar datos aleatorios para la agrupación

A menudo, puede encontrarse en una situación en la que los datos disponibles no están etiquetados. Como no hay etiquetas, no se puede realizar la clasificación. En estos casos, hay que emplear técnicas de aprendizaje automático sin supervisión. Uno de estos enfoques es el clustering. En el clustering, el objetivo es agrupar los datos en grupos separados basados en los datos dados. Por ejemplo, puede tener datos de clientes y querer agruparlos en grupos separados en función de sus similitudes. Por ejemplo, los clientes pueden agruparse en función de su comportamiento. Otras aplicaciones de la agrupación son la segmentación de imágenes, la agrupación de documentos, la detección de anomalías y los motores de recomendación. Estos problemas de agrupación pueden ser resueltos por una amplia gama de algoritmos de clustering. Estos algoritmos funcionan de forma diferente y requieren distintas configuraciones.  En este artículo, vamos a echar un vistazo a algunos de estos algoritmos de clustering y cómo aplicarlos. También echaremos un vistazo a cómo se puede generar un conjunto de datos de clustering y adaptarlo a un algoritmo de clustering.

Conjunto de datos de clustering sklearn

Para hacerlo evidente, mostramos los mismos datos pero ahora los puntos de datos están coloreados (Figura 2). Estos puntos se concentran en diferentes grupos, o clusters, porque sus coordenadas están cerca unas de otras. En este ejemplo, las coordenadas espaciales representan dos características numéricas, y su proximidad espacial puede interpretarse como el grado de similitud de sus características. Siendo realistas, podemos tener muchas características en nuestro conjunto de datos, pero la idea de cercanía (=similitud) sigue aplicándose incluso en un espacio de mayor dimensión. Además, no es raro observar clusters en los datos reales, que representan diferentes grupos de puntos de datos con características similares.

El clustering se refiere a los algoritmos para descubrir tales clusters en datos no etiquetados. Los puntos de datos que pertenecen al mismo clúster presentan características similares, mientras que los puntos de datos de diferentes clústeres son distintos entre sí. La identificación de estos clusters conduce a la segmentación de los puntos de datos en una serie de grupos distintos. Dado que los grupos se identifican a partir de los propios datos, a diferencia de las clases objetivo conocidas, la agrupación se considera un aprendizaje no supervisado.

Sklearn genera datos

Ahora nos aventuramos en nuestra primera aplicación, que es el clustering con el algoritmo k-means. La agrupación es un ejercicio de minería de datos en el que tomamos un montón de datos y encontramos grupos de puntos que son similares entre sí. K-means es un algoritmo que es genial para encontrar clusters en muchos tipos de conjuntos de datos.

En primer lugar, vamos a necesitar generar algunas muestras. Podríamos generar las muestras de forma aleatoria, pero es probable que eso nos dé puntos muy dispersos, o sólo un gran grupo, lo que no es muy interesante para la agrupación.

La forma en que esto funciona es crear n_clusters diferentes centros al azar (usando np.random.random((1, n_features))) y usarlos como puntos centrales para tf.random_normal. La función tf.random_normal genera valores aleatorios distribuidos normalmente, que luego añadimos al punto central actual. Esto crea una mancha de puntos alrededor de ese centro. A continuación, registramos los centroides (centroids.append) y las muestras generadas (slices.append(samples)). Finalmente, creamos «Una gran lista de muestras» usando tf.concat, y convertimos los centroides en una variable TensorFlow también usando tf.concat.

Esta web utiliza cookies propias para su correcto funcionamiento. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad