¿Qué es el algoritmo k-Means y cómo funciona?

K-means es uno de los algoritmos de aprendizaje no supervisados ​​más simples que resuelven el conocido problema de agrupamiento.

El procedimiento sigue una forma simple y fácil de clasificar un conjunto de datos dado a través de un cierto número de grupos (supongamos que k grupos) fijados a priori.
La idea principal es definir k centroides, uno para cada grupo.
Estos centroides deben colocarse de una manera astuta porque la ubicación diferente causa resultados diferentes. Por lo tanto, la mejor opción es colocarlos lo más lejos posible el uno del otro. El siguiente paso es tomar cada punto que pertenece a un conjunto de datos determinado y asociarlo al centroide más cercano. Cuando no hay ningún punto pendiente, se completa el primer paso y se realiza una agrupación temprana. En este punto, necesitamos volver a calcular k nuevos centroides como baricentros de los grupos resultantes del paso anterior. Después de tener estos k nuevos centroides, se debe hacer un nuevo enlace entre los mismos puntos de ajuste de datos y el nuevo centroide más cercano. Se ha generado un bucle. Como resultado de este bucle, podemos notar que los k centroides cambian su ubicación paso a paso hasta que no se realicen más cambios. En otras palabras, los centroides ya no se mueven.

El algoritmo se compone de los siguientes pasos:

  1. Coloque K puntos en el espacio representado por los objetos que se agrupan. Estos puntos representan los centroides del grupo inicial.
  2. Asigne cada objeto al grupo que tenga el centroide más cercano.
  3. Cuando se hayan asignado todos los objetos, recalcule las posiciones de los K centroides.
  4. Repita los pasos 2 y 3 hasta que los centroides ya no se muevan. Esto produce una separación de los objetos en grupos a partir de los cuales se puede calcular la métrica a minimizar.

Aunque se puede demostrar que el procedimiento siempre terminará, el algoritmo k-means no necesariamente encuentra la configuración más óptima, correspondiente al mínimo de la función objetivo global. El algoritmo también es significativamente sensible a los centros de clúster iniciales seleccionados al azar. El algoritmo k-means se puede ejecutar varias veces para reducir este efecto.

Para un análisis detallado de la agrupación de K-medias en Map Reduce, eche un vistazo a lo siguiente: Agrupación de K-medias en Map Reduce .

(Entrada del tutorial extraída de: Annalyzing Life | Tutoriales y experimentos de análisis de datos para Layman )

Imagine un almacenista que lleva un registro de todos los historiales de compra de sus clientes. Esto le permite buscar el tipo de productos en los que un comprador individual podría estar interesado. Sin embargo, hacer esto para cada individuo es extremadamente ineficiente. Una mejor solución sería clasificar a sus clientes en grupos, con cada grupo con preferencias similares. Esto le permitiría llegar a más clientes con cada recomendación de producto.

El problema es que el almacenista no sabe 1) cómo deben clasificarse sus clientes , ni 2) cuántas de esas categorías existen . Para responder estas preguntas, podemos usar la agrupación.

Definición

La agrupación de medios k es una técnica utilizada para descubrir categorías. En el sector minorista, se puede utilizar para clasificar tanto los productos como los clientes. k representa el número de categorías identificadas, y las características promedio (media) de cada categoría son notablemente diferentes de las de otras categorías.

Una ilustración

En el caso del almacenista, podemos descubrir categorías de clientes combinando información personal con historiales de compras. Esto nos permitiría agrupar clientes con antecedentes similares, que tienden a comprar productos similares.

Para ilustrar esto, podemos usar un conjunto de datos real de las personalidades y ‘me gusta’ de los usuarios de Facebook. Estos datos se obtuvieron de usuarios de Facebook que completaron un breve cuestionario de personalidad y proporcionaron información sobre las páginas de películas que les habían “gustado”. En lugar de los puntajes de personalidad, también podemos usar información demográfica como la edad o los ingresos del hogar.

Según la experiencia, podemos tener el presentimiento de que diferentes géneros de películas atraen a personas de diferentes personalidades. Para confirmar esto, podemos construir una trama de títulos de películas a lo largo de las dimensiones de la personalidad:

Desde la inspección inicial, parece haber tres grupos:

  • Rojo: extrovertidos concienzudos a los que les gustan los géneros de acción y romance
  • Azul: personas ansiosas y abiertas a las que les gustan los géneros de fantasía y fantasía.
  • Amarillo: introvertidos con ansiedades sociales a quienes les gustan las animaciones japonesas (cultura otaku)
  • Las películas en el centro parecen ser las favoritas de los hogares.

Con esta información, el almacenista ahora puede estar más seguro de recomendar productos a los clientes interesados. Por ejemplo, si un cliente compró un DVD de 27 vestidos , el almacenista podría deducir que es probable que su cliente sea concienzudo o extravertido, y también podría estar interesado en otra película en el mismo grupo, como 50 First Dates . Además de la recomendación de productos, estos grupos también permiten al almacenista agrupar productos similares para obtener descuentos efectivos.

Explicación técnica

Después de ver cómo se pueden usar los clústeres, ahora examinaremos cómo funciona la técnica. Recuerde que la agrupación resuelve dos problemas:

  • Determinar el número de categorías que existen
  • Determinar los miembros de cada categoría.

Una forma de averiguar el número de categorías es mediante inspección visual, como en la trama anterior de títulos de películas.

Otra forma es usar algo llamado diagrama de pantalla:

(Gráfico de pantalla que muestra un ‘pliegue’ donde el número de grupos es igual a 3)

Este gráfico muestra cómo disminuye la dispersión dentro del grupo (es decir, qué tan disperso está un grupo) a medida que aumenta el número de grupos. Con más grupos, los miembros del grupo pueden estar más cerca de los centros de los grupos, formando grupos más compactos. Por el contrario, si solo hay un clúster al que pertenecen todos los miembros, la dispersión dentro del clúster sería máxima.

La elección del número de grupos se basa en el principio de rendimientos marginales decrecientes. Si hay demasiados grupos pequeños, el resultado puede ser demasiado complejo, de modo que las categorías no se pueden generalizar a nuevos productos o clientes. Por lo tanto, el diagrama de pantalla revela un “nudo” en el que el número de grupos derivados puede reducir la dispersión dentro del grupo en un grado razonable, más allá del cual tener más grupos produciría grupos más pequeños y aún más pequeños. Estos grupos más pequeños tienen un costo creciente de resultados más complejos y menos generalizables.

Después de determinar el número de clústeres, podemos determinar la membresía del clúster. Esto implica un proceso iterativo simple. Ilustraremos este proceso con un ejemplo de 2 grupos:

Paso 1: Comience adivinando dónde están los puntos centrales de cada grupo. Llamemos a estos pseudo-centros, ya que aún no sabemos si realmente están en el centro de sus grupos.

Paso 2: Asigne cada punto de datos al pseudocentro más cercano. Al hacerlo, acabamos de formar grupos, y cada grupo comprende todos los puntos de datos asociados con su pseudocentro.

Paso 3: Actualice la ubicación del pseudocentro de cada clúster, de modo que ahora esté en el centro de todos sus miembros.

Paso 4: repita los pasos de reasignar miembros del clúster (Paso 2) y reubicar los centros del clúster (Paso 3), hasta que no haya más cambios en la membresía del clúster. Vea el proceso iterativo completo en la animación a continuación:

Estos 4 pasos concluyen el proceso de determinar la membresía del clúster. El mismo proceso se usa para 3 o más grupos. Además, si bien el ejemplo anterior solo muestra puntos de datos que varían a lo largo de 2 dimensiones (ya que los gráficos bidimensionales son más fáciles de visualizar), la agrupación también se puede hacer para 3 o más dimensiones. En otras palabras, el almacenista podría agrupar a sus clientes combinando múltiples fuentes de información además de su personalidad, como su edad, ingresos y qué tan lejos está su hogar de su tienda.

Además del sector minorista, la agrupación se utiliza en una amplia gama de campos. Por ejemplo, la agrupación puede ayudar a identificar genotipos biológicos y a identificar puntos críticos de actividad criminal.

Limitaciones

Si bien k -means clustering es una herramienta útil, no está exenta de limitaciones:

  • Cada punto de datos solo se puede asignar a un clúster. A veces, un punto de datos puede estar en el medio de 2 grupos, con la misma posibilidad de ser asignado a cualquiera de ellos, pero luego un pequeño turno podría empujarlo de manera superflua a uno de ellos. Por lo tanto, una solución más sólida podría incluir valores de probabilidad, que indican la probabilidad de que cada punto de datos pertenezca a cada grupo.
  • Se supone que los grupos son esféricos. La distancia desde un centro de clúster hasta su punto de datos más alejado es similar al radio del clúster, y el proceso iterativo de encontrar puntos de datos más cercanos al centro de clúster es similar a estrechar el radio del clúster, de modo que los clústeres resultantes son esferas compactas. Esto podría plantear un problema si la forma de un grupo real es, por ejemplo, una elipse. Un clúster alargado puede truncarse y sus miembros subsumirse en un clúster cercano.
  • Se supone que los grupos son discretos. La agrupación de medios k no permite que los clústeres se superpongan ni se aniden entre sí.

Si bien existen algoritmos de agrupamiento alternativos que superan estas limitaciones, la fortaleza del algoritmo de agrupamiento k- significa radica en su elegante simplicidad. Una buena estrategia podría ser comenzar con la agrupación de medios k para obtener una comprensión básica de la estructura de datos, antes de sumergirse en métodos más avanzados para examinar áreas donde la agrupación de medios k no es suficiente.


Descargar: Script R utilizado para simular procesos iterativos .

Para más tutoriales, visite mi sitio: Annalyzing Life | Tutoriales y experimentos de análisis de datos para Layman

Respuesta no matemática.
Imagina que tienes algunos datos (2D para simplificar), no conoces las etiquetas pero tienes algunos conocimientos sobre cuántos grupos o estructuras puede tener (K). Ahora desea construir grupos K para agrupar los datos en ellos utilizando alguna noción de similitud. Usted es libre de elegir la métrica de similitud, euclidiana, mahalanobis, coseno o lo que sea, pero cada métrica de similitud tiene su propia complejidad. K-significa construir grupos esféricos (círculo en 2D) para que sepa qué tipo de grupos puede obtener.
Ahora desea comenzar, elija K puntos iniciales aleatorios o elíjalo de manera inteligente. Estos son los representantes de sus grupos iniciales, pero pueden no ser correctos, por lo que desea mejorar su elección. Luego encuentre la distancia de cada punto desde estos centros … asigne los puntos al grupo con una distancia mínima. Después de este paso, algunos puntos se moverán a otros grupos, es decir, la estructura de su grupo puede cambiar. Encuentre el centro de cada grupo K y repita el proceso nuevamente hasta que el número fijo de iteraciones o centros se detengan para actualizar o los puntos de datos se detengan para cambiar la membresía del grupo.
Puede que esta no sea una solución óptima, pero le dará cierta intuición sobre las estructuras de los datos.

El algoritmo de agrupamiento K-mean es un método simple para crear el número deseado de particiones de un conjunto de datos. Las particiones significan un conjunto de muestras en los datos que son más cercanas / similares entre sí.

Deberá especificar el número de particiones usted mismo.

El algoritmo realiza esta tarea de agrupamiento utilizando una lógica muy sencilla. En primer lugar, selecciona aleatoriamente k (número de particiones) puntos en los datos. En segundo lugar, asigna cada muestra restante en los datos a la “media” más cercana. Después de eso, para cada grupo, se calcula una nueva media tomando el centro de los puntos de datos asignados a ese grupo. Nuevos medios conducirán a una asignación diferente de datos a los clústeres. Este proceso continúa hasta alcanzar una partición razonable de los datos. Por lo general, si utiliza una biblioteca ML, se le pedirá que establezca el número máximo de iteraciones para el algoritmo.

También es importante enfatizar que el algoritmo no tiene nada que ver con el algoritmo k-vecinos más cercanos.

El algoritmo de agrupamiento k-means divide una información completa en k conjuntos. Cada conjunto contiene un centroide, y la distancia entre el centroide y todos los puntos individuales en el conjunto se minimiza. Para encontrar esos k centroides y sus puntos de datos asociados, se sigue este algoritmo:

  1. Obtenga todo el conjunto de datos y asigne al azar k centroides. (Esos k centroides pueden ser los primeros k puntos de datos).
  2. Para cada punto de datos,
  1. Calcule la distancia absoluta entre el punto y cada uno de los k centroides.
  2. El punto de datos se convierte en parte del grupo del centroide que corresponde a la distancia mínima del punto de datos.
  • Para actualizar cada centroide, tome la media de todos los puntos dentro de su grupo.
  • Repita los pasos 2 y 3 si los centroides han cambiado en el paso 3.
  • Has terminado con el algoritmo.
  • A continuación se muestra el sitio para la implementación de C ++ y Java:

    Fuente: Implementación del algoritmo de agrupación K-Mean en Java – RadixCode

    Información: CS221, una implementación pura de Python de la agrupación de K-Means. Visualización de clúster opcional mediante plot.ly., K significa clúster de código Java – DataOnFocus

    El algoritmo K-means es un algoritmo de aprendizaje no supervisado utilizado para agrupar problemas. Sin profundizar en las matemáticas de la agrupación de k-medias, veamos cómo funciona.

    En un algoritmo no supervisado, no tenemos datos etiquetados. Así que consideremos la tarea de agrupar estos puntos de datos en dos grupos de rojo y verde.

    Lo primero que podemos hacer es inicializar aleatoriamente dos puntos, llamados centroides de clúster.

    k-means es un método iterativo y hace dos cosas.

    1. Primero es un paso de asignación de clúster
    2. El segundo es un paso de centroide de movimiento

    En el primer paso, el algoritmo va a cada uno de los puntos de datos y divide los puntos en clases respectivas, dependiendo de si está más cerca del centroide rojo del grupo o del centroide verde central.

    En el segundo paso, movemos el paso centroide. Calculamos la media de la ubicación de todos los puntos rojos y movemos el centroide rojo allí. Hacemos lo mismo para el centroide verde.

    Realizamos el paso anterior nuevamente para el centroide del clúster y los movemos a sus nuevos medios. Realizamos este paso hasta que el centroide del clúster no se mueva más y el color de los puntos no cambie más.

    El algoritmo k-means es un algoritmo de agrupamiento . Eso significa que tiene un montón de puntos en algún espacio, y desea adivinar en qué grupos parecen estar. Por ejemplo, digamos que tenemos estos puntos:

    o
    o oo
    oo

    oo
    oo o

    Como humano, puedes verlos fácilmente y decir que los que están en la parte superior izquierda son un grupo y los que están en la parte inferior derecha son un grupo, pero si había muchos más grupos, o si se superponían, o si estaban en un espacio tridimensional o mucho más alto, sería más difícil.

    Con el algoritmo k-means, tiene que decirle cuántos grupos buscar (esa es la “k”), y le dice algunos puntos de datos reales (como las o en el diagrama anterior), y luego trata de adivinar Una agrupación razonable de los puntos en k grupos.

    Así es básicamente cómo funciona :

    1. Comience con k puntos inventados. Estos serán sus centros de clúster, y los moverá según la ubicación de los puntos reales. Estos primeros puntos inventados pueden ser aleatorios, o puede tener una forma inteligente de elegirlos.
    2. Para cada uno de sus centros de clúster, encuentre todos los puntos de datos reales más cercanos a ese centro que a cualquiera de los otros centros. Esos puntos pertenecen a ese grupo (pero es posible que este grupo aún no sea una buena suposición).
    3. Para cada uno de los grupos que creó en el paso 2 (habrá k de ellos, uno para cada centro de grupo), observe los puntos en el grupo y encuentre el promedio de ellos. Este es su nuevo centro para ese grupo (y puede tirar el viejo centro). Este nuevo centro es probablemente una mejor suposición, ya que se basa en los puntos de datos reales.
    4. Repita los pasos 2 y 3. Obtendrá una cosa diferente porque sus centros de clúster se movieron. Siga repitiendo los pasos 2 y 3, y eventualmente los centros del clúster dejarán de moverse. Así que ahora tienes una idea de cuáles son los grupos.

    Dependiendo de con qué puntos comenzaste, podrías terminar con una suposición diferente para los grupos que si hubieras tenido diferentes puntos de partida. Pero siempre convergerás con algo: nunca habrá un caso en el que los centros de clúster sigan moviéndose y nunca se detengan.

    Una limitación del algoritmo k-means es que no funciona bien si los grupos reales tienen tamaños muy diferentes (algunos pequeños y otros grandes), o si no son muy circulares (por ejemplo, si son largos y flaco).

    Parafraseando de mi tutorial de Introducción a K-means Clustering :

    ¿Qué es?

    El algoritmo k-means es una forma de encontrar grupos o grupos en sus datos. A menudo, puede plantear la hipótesis de que existen grupos en sus datos, pero esos grupos no han sido identificados o etiquetados antes de tiempo. El algoritmo de agrupamiento k-means es un conjunto de pasos que funcionan de manera iterativa para encontrar los grupos y etiquetar los datos. “K” es una variable que representa el número de grupos.

    En general, es una técnica versátil y simple que se usa comúnmente para responder la pregunta “¿hay grupos en estos datos y cuáles son?”.

    ¿Como funciona?

    Después de elegir algún valor de “k” para probar y seleccionar los centroides iniciales, el algoritmo itera entre dos pasos a medida que converge en una respuesta:

    1. Un paso de asignación de datos, donde cada punto de datos se asigna al centroide de clúster más cercano
    2. Un paso de actualización del centroide, donde los centroides se actualizan para reflejar los datos en cada grupo

    hasta que se cumplan algunos criterios de detención.

    Deberá ejecutar el algoritmo de agrupación k-means para un rango de valores k y comparar los resultados para encontrar el valor de k que mejor represente el número de grupos en sus datos.

    El tutorial que vinculé anteriormente tiene más detalles sobre las matemáticas detrás del algoritmo, algunos casos de uso comercial comunes y un ejemplo de cómo lo usaría en Python.

    Aquí hay un video que hice sobre la agrupación de K-means (algunas diapositivas robadas de Lauren Hannah).

    La entrada a K-Means es un conjunto de puntos (observaciones) y un número entero K. El objetivo es dividir los puntos de entrada en K conjuntos distintos (grupos). El primer paso es inicializar el algoritmo eligiendo K ubicaciones de centroides de clúster iniciales. Esto normalmente se hace eligiendo aleatoriamente K puntos del conjunto de entrada.

    Para saber más visite Learnvern

    Refiera esto

    ¿Cómo funciona K-Means?

    K-significa agrupamiento

    k-means es uno de los algoritmos de aprendizaje no supervisados ​​más simples que resuelven el conocido problema de agrupamiento. El procedimiento sigue una manera simple y fácil de clasificar un conjunto de datos dado a través de un cierto número de grupos (supongamos k grupos) fijados a priori. La idea principal es definir k centros, uno para cada grupo. Estos centros deben colocarse de una manera astuta debido a que diferentes ubicaciones causan resultados diferentes. Por lo tanto, la mejor opción es colocarlos lo más lejos posible el uno del otro. El siguiente paso es tomar cada punto que pertenece a un conjunto de datos determinado y asociarlo al centro más cercano. Cuando no hay ningún punto pendiente, se completa el primer paso y se realiza una edad temprana del grupo.

    Wikipedia es un buen lugar para comenzar: k-means clustering

    More Interesting

    ¿Qué algoritmos y estructuras de datos debo aprender para ZCO e INOI?

    ¿Cómo podemos verificar si un punto (digamos el origen) se encuentra en un casco convexo 6-D (o ND) y qué tan lejos está el punto de cualquiera de los lados (facetas) del casco convexo?

    ¿Qué algoritmos de máquina requieren escala / normalización de datos?

    ¿Se puede implementar un mapa usando Tree? ¿Se puede implementar un mapa usando List? Esto es específico de Java, pero me gustaría conocer el enfoque general.

    ¿Para qué se usan realmente los algoritmos?

    Conozco estructuras de datos y algoritmos. ¿Cómo programo un compilador simple?

    Cómo resolver http://www.spoj.com/problems/SAMER08A/ usando el algoritmo de Dijkstra

    ¿Qué es una explicación intuitiva de bosques aleatorios?

    ¿Cómo se puede calcular la mediana de una gran variedad de enteros sin mantener todos los valores en la memoria?

    ¿Tengo que hacer programación competitiva si estoy aprendiendo la estructura de datos y los algoritmos, mientras que la programación competitiva me distrae o primero tengo que aprender la estructura de datos y el algoritmo por completo y luego saltar a la programación competitiva?

    ¿Explicar diferentes algoritmos de ruta más corta, sus restricciones, complejidades?

    ¿Debería centrarme en aprender más idiomas o algoritmos y estructuras de datos?

    ¿Dar un nombre largo a una variable es una pérdida de memoria? ¿Int qwertyuiop_asdfghjkl_zxcvbnm; int i; tener el mismo efecto en el tiempo de compilación y ejecución?

    ¿Qué algoritmo usa Google para GMaps?

    ¿Cuál es el número esperado de movimientos necesarios para terminar un juego de serpientes y escaleras?