in

Agrupación de K-means: algoritmo, aplicaciones, métodos de evaluación e inconvenientes

1Bexl

Agrupación de K-means: algoritmo, aplicaciones, métodos de evaluación e inconvenientes

Imad Dabbura

17 de septiembre de 2018·13 min de lectura

1*Bexl

Agrupación

Agrupación es una de las técnicas de análisis de datos exploratorios más comunes que se utiliza para obtener una intuiciónout la estructura de los datos. Se puede definir como la tarea de identificar subgrupos en los datos, de modo que los puntos de datos en el mismo subgrupo (grupo) son muy similares, mientras que los puntos de datos en diferentes grupos son muy diferentes. En otras palabras, tratamos de encontrar subgrupos homogéneos dentro de los datos de manera que los puntos de datos en cada grupo sean lo más similares posible de acuerdo con una medida de similitud, como la distancia basada en la euclídea o la distancia basada en la correlación. La decisión de qué medida de similitud utilizar es específica de la aplicación.

El análisis de agrupamiento se puede realizar sobre la base de características en las que intentamos encontrar subgrupos de muestras basadas en características o sobre la base de muestras en las que intentamos encontrar subgrupos de características basadas en muestras. Aquí cubriremos la agrupación en clústeres según las características. La agrupación en clústeres se utiliza en la segmentación del mercado; donde tratamos de encontrar clientes que sean similares entre sí, ya sea en términos de comportamientos o atributos, segmentación / compresión de imágenes; donde tratamos de agrupar regiones similares, agrupar documentos en función de temas, etc.

A diferencia del aprendizaje supervisado, la agrupación en clústeres se considera un método de aprendizaje no supervisado, ya que no tenemos la verdad básica para comparar la salida del algoritmo de agrupación en clústeres con las etiquetas verdaderas para evaluar su rendimiento. Solo queremos intentar investigar la estructura de los datos agrupando los puntos de datos en distintos subgrupos.

En esta publicación, cubriremos solo K significa el cual es considerado como uno de los algoritmos de clustering más utilizados por su sencillez.

Algoritmo Kmeans

K significa El algoritmo es un algoritmo iterativo que intenta dividir el conjunto de datos en Ksubgrupos predefinidos distintos no superpuestos (clústeres) a los que pertenece cada punto de datos solo un grupo. Intenta hacer que los puntos de datos intra-clúster sean lo más similares posible y al mismo tiempo mantiene los clústeres lo más diferentes (lejos) posible. Asigna puntos de datos a un grupo de modo que la suma de la distancia al cuadrado entre los puntos de datos y el centroide del grupo (media aritmética de todos los puntos de datos que pertenecen a ese grupo) sea mínima. Mientras menos variación tengamos dentro de los conglomerados, más homogéneos (similares) serán los puntos de datos dentro del mismo conglomerado.

La forma en que funciona el algoritmo kmeans es la siguiente:

  1. Especificar la cantidad de clústeres K.
  2. Inicialice los centroides barajando primero el conjunto de datos y luego seleccionando aleatoriamente K puntos de datos para los centroides sin reemplazo.
  3. Siga iterando hasta que no haya cambios en los centroides. es decir, la asignación de puntos de datos a grupos no está cambiando.
  • Calcule la suma de la distancia al cuadrado entre los puntos de datos y todos los centroides.
  • Asigne cada punto de datos al grupo más cercano (centroide).
  • Calcule los centroides de los grupos tomando el promedio de todos los puntos de datos que pertenecen a cada grupo.

El enfoque que sigue kmeans para resolver el problema se llama Expectativa-Maximización. El paso E consiste en asignar los puntos de datos al grupo más cercano. El paso M es calcular el centroide de cada grupo. A continuación se muestra un desglose de cómo podemos resolverlo matemáticamente (no dude en omitirlo).

La función objetivo es:

1*myXqNCTZH80uvO2QyU6F5Q

donde wik = 1 para el punto de datos xi si pertenece al clúster k; de lo contrario, wik = 0. Además, μk es el centroide del grupo de xi.

Es un problema de minimización de dos partes. Primero minimizamos J wrt wik y tratamos μk fijo. Luego minimizamos J wrt μk y tratamos wik fijo. Técnicamente hablando, primero diferenciamos J wrt wik y actualizamos las asignaciones de clústeres (E-paso). Luego, diferenciamos J wrt μk y volvemos a calcular los centroides después de las asignaciones de grupos del paso anterior (Paso M). Por lo tanto, E-step es:

1*dvqCl vFbxQp7Lx 2RpnEA

En otras palabras, asigne el punto de datos xi al grupo más cercano juzgado por su suma de la distancia al cuadrado del centroide del grupo.

Y M-step es:

1*fjTYV5rKOtMjCUsk3LIp w

Lo que se traduce en volver a calcular el centroide de cada grupo para reflejar las nuevas asignaciones.

Algunas cosas a tener en cuenta aquí:

  • Dado que los algoritmos de agrupación en clústeres que incluyen kmeans utilizan mediciones basadas en la distancia para determinar la similitud entre los puntos de datos, se recomienda estandarizar los datos para que tengan una media de cero y una desviación estándar de uno, ya que casi siempre las características de cualquier conjunto de datos tendrían diferentes unidades de medida. como la edad frente a los ingresos.
  • Dada la naturaleza iterativa de kmeans y la inicialización aleatoria de los centroides al inicio del algoritmo, diferentes inicializaciones pueden conducir a diferentes clústeres, ya que el algoritmo de kmeans puede atascado en un óptimo local y puede no converger al óptimo global. Por lo tanto, se recomienda ejecutar el algoritmo utilizando diferentes inicializaciones de centroides y seleccionar los resultados de la ejecución que arrojaron la suma más baja de la distancia al cuadrado.
  • La asignación de ejemplos no cambia es lo mismo que ningún cambio en la variación dentro del clúster:
1*zXm8f5juDf2mBO7odJpKkA

Implementación

Usaremos una implementación simple de kmeans aquí para ilustrar algunos conceptos. Entonces usaremos sklearn una implementación más eficiente se encarga de muchas cosas por nosotros.

Aplicaciones

El algoritmo kmeans es muy popular y se utiliza en una variedad de aplicaciones como segmentación de mercado, agrupación de documentos, segmentación de imágenes y compresión de imágenes, etc. El objetivo generalmente cuando nos sometemos a un análisis de agrupación es:

  1. Obtenga una intuición significativa de la estructura de los datos con los que estamos tratando.
  2. Agrupar y luego predecir dónde se construirán diferentes modelos para diferentes subgrupos si creemos que hay una amplia variación en los comportamientos de los diferentes subgrupos. Un ejemplo de eso es agrupar a los pacientes en diferentes subgrupos y construir un modelo para cada subgrupo para predecir la probabilidad de riesgo de sufrir un ataque cardíaco.

En esta publicación, aplicaremos la agrupación en clústeres en dos casos:

  • Segmentación de erupciones de géiseres (conjunto de datos 2D).
  • Compresión de imágenes.

Kmedios en la segmentación de erupciones de Geyser

Primero implementaremos el algoritmo kmeans en un conjunto de datos 2D y veremos cómo funciona. El conjunto de datos tiene 272 observaciones y 2 características. Los datos cubren el tiempo de espera entre erupciones y la duración de la erupción del géiser Old Faithful en el Parque Nacional Yellowstone, Wyoming, EE. UU. Intentaremos encontrar K subgrupos dentro de los puntos de datos y agrúpelos en consecuencia. A continuación se muestra la descripción de las características:

  • erupciones (flotación): tiempo de erupción en minutos.
  • esperando (int): tiempo de espera para la próxima erupción.

Primero grafiquemos los datos:

1*1VPCjrIGEZTzy Y9i50SzQ

Usaremos estos datos porque es fácil trazar y detectar visualmente los clústeres, ya que es un conjunto de datos de 2 dimensiones. Es obvio que tenemos 2 grupos. Primero estandaricemos los datos y ejecutemos el algoritmo kmeans en los datos estandarizados con K = 2.

1*dLrogayyf5UaLXD 8cmzpw

El gráfico anterior muestra el diagrama de dispersión de los datos coloreados por el grupo al que pertenecen. En este ejemplo, elegimos K = 2. El símbolo ‘*’ es el centroide de cada grupo. Podemos pensar en esos 2 grupos como si los géiseres tuvieran diferentes tipos de comportamientos en diferentes escenarios.

A continuación, mostraremos que diferentes inicializaciones de centroides pueden producir diferentes resultados. Usaré 9 diferentes random_state para cambiar la inicialización de los centroides y trazar los resultados. El título de cada gráfico será la suma de la distancia al cuadrado de cada inicialización.

Como nota al margen, este conjunto de datos se considera muy fácil y converge en menos de 10 iteraciones. Por lo tanto, para ver el efecto de la inicialización aleatoria en la convergencia, voy a ir con 3 iteraciones para ilustrar el concepto. Sin embargo, en las aplicaciones del mundo real, los conjuntos de datos no son tan limpios y agradables.

1*smb3nXFMihSmbJGO3kS0Ww

Como muestra el gráfico anterior, solo terminamos con dos formas diferentes de agrupaciones basadas en diferentes inicializaciones. Escogeríamos el que tenga la menor suma de distancia al cuadrado.

Kmedios de compresión de imágenes

En esta parte, implementaremos kmeans para comprimir una imagen. La imagen en la que trabajaremos es 396 x 396 x 3. Por lo tanto, para cada ubicación de píxel tendríamos 3 enteros de 8 bits que especifican los valores de intensidad de rojo, verde y azul. Nuestro objetivo es reducir la cantidad de colores a 30 y representar (comprimir) la foto usando solo esos 30 colores. Para elegir qué colores usar, usaremos el algoritmo kmeans en la imagen y trataremos cada píxel como un punto de datos. Eso significa remodelar la imagen de alto x ancho x canales a (alto * ancho) x canal, es decir, tendríamos 396 x 396 = 156,816 puntos de datos en un espacio tridimensional que son la intensidad de RGB. Hacerlo nos permitirá representar la imagen usando los 30 centroides para cada píxel y reduciría significativamente el tamaño de la imagen en un factor de 6. El tamaño de la imagen original era 396 x 396 x 24 = 3.763.584 bits; sin embargo, la nueva imagen comprimida sería 30 x 24 + 396 x 396 x 4 = 627,984 bits. La gran diferencia proviene del hecho de que usaremos centroides como una búsqueda de colores de píxeles y eso reduciría el tamaño de cada ubicación de píxel a 4 bits en lugar de 8 bits.

De ahora en adelante usaremos sklearn implementación de kmeans. Pocas cosas a tener en cuenta aquí:

  • n_init es el número de veces que se ejecutan los kmedios con una inicialización de centroide diferente. Se informará el resultado del mejor.
  • tol es la métrica de variación dentro del clúster que se utiliza para declarar la convergencia.
  • El defecto de init es k-medias ++ que se supone que produce mejores resultados que la inicialización aleatoria de centroides.
1*JUzQ9Xq4dTpiO0D6Nj8glA

Podemos ver la comparación entre la imagen original y la comprimida. La imagen comprimida se parece a la original, lo que significa que podemos conservar la mayoría de las características de la imagen original. Con un número menor de clústeres, tendríamos una mayor tasa de compresión a expensas de la calidad de la imagen. Como nota al margen, este método de compresión de imágenes se llama compresión de datos con pérdida porque no podemos reconstruir la imagen original a partir de la imagen comprimida.

Métodos de evaluación

A diferencia del aprendizaje supervisado, donde tenemos la verdad básica para evaluar el rendimiento del modelo, el análisis de agrupamiento no tiene una métrica de evaluación sólida que podamos usar para evaluar el resultado de diferentes algoritmos de agrupamiento. Además, dado que kmeans requiere k como entrada y no lo aprende de los datos, no hay una respuesta correcta en términos de la cantidad de clusters que deberíamos tener en cualquier problema. A veces, el conocimiento del dominio y la intuición pueden ayudar, pero generalmente ese no es el caso. En la metodología de predicción de clústeres, podemos evaluar qué tan bien se están desempeñando los modelos en función de diferentes K clústeres, ya que los clústeres se utilizan en el modelado posterior.

En esta publicación, cubriremos dos métricas que pueden darnos cierta intuición sobre k:

  • Método del codo
  • Análisis de silueta

Método del codo

Codo El método nos da una idea de lo bueno k El número de conglomerados se basaría en la suma de la distancia al cuadrado (SSE) entre los puntos de datos y los centroides de los conglomerados asignados. Elegimos k en el lugar donde SSE comienza a aplanarse y forma un codo. Usaremos el conjunto de datos del géiser y evaluaremos SSE para diferentes valores de k y observe dónde la curva puede formar un codo y aplanarse.

1*9z8erk4kvsnxkfv QhsHZg

El gráfico anterior muestra que k = 2 no es una mala elección. A veces, todavía es difícil determinar una buena cantidad de grupos para usar porque la curva disminuye monótonamente y puede no mostrar ningún codo o tiene un punto obvio donde la curva comienza a aplanarse.

Análisis de silueta

Análisis de silueta se puede utilizar para determinar el grado de separación entre conglomerados. Para cada muestra:

04LD7YzrzEFTAoFi6nfGMhy 1.1632071083.fit lim.size 1200x630

La contraparte de TikTok de China agrega nuevos límites para los adolescentes

Descargas de archivos de Java – Java SE 15