No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

¡Se acaba el precio especial! Aprende Inglés, AI, programación y más.

Antes: $249

Currency
$209
Suscríbete

Termina en:

1 Días
9 Hrs
54 Min
55 Seg

¿Qué es el algoritmo de K-means y cómo funciona?

5/27
Recursos

Aportes 10

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Un par de observaciones que pueden servir.

  1. Kmeans es un método basado en “distancias”, luego el calculo en cada iteracion se puede ver afectado ante la existencia de outliers.
  2. Es costoso a nivel computacional cuando la cantidad de datos aumenta, ya que implica comparar cada dato con todos los demás.
  3. Tiene un problema grave y es que a cada punto NECESARIAMENTE lo ubica dentro de un cluster. Si tenemos un outlier nunca lo vamos a percibir por que lo va a asignar a un cluster

Jajaja cuando hasta una animacion te da resultados dudosos jajaja 😔.

Hice mi propia implementación del algoritmo KMeans con numpy y scipy, chéquenlo por si les interesa tener una idea de cómo funciona a nivel de código:

kmeans

Debería funcionar con cualquier número de features y de clusters.

Aquí un notebook con su uso:
notebook

Detalles:

  • Aparentemente no funciona muy bien con un número de clusters muy grande.
  • Algunas clasificaciones funcionan mal debido a la forma en la que los centros son elegidos.

No sera mucho aporte este comentario por que tiendo a realizar mi resumen completo con los proyectos. Pero como siempre dije y digo en estos cursos, Carlos sos de las mejores personas que vi en esta plataforma explicando temas, siempre estuve el pendiente por que hace cuando empecé a estudiar Web Dev hacia los cursos del profe Sergio Orduz de matemáticas por gusto propio, y sentí que faltaba esa calidad de profesor y manera extensa de explicar las cosas, por que armaban cursos muy al punto y se sentían como si buscara un tutorial paso a paso en medium de cómo hacer un X en especifico y ya.
Muy lindo tener un profe como vos en la plataforma 😃
10/10

# Introduction to k-Means Clustering with scikit-learn in Python <https://www.datacamp.com/tutorial/k-means-clustering-python?utm_source=google&utm_medium=paid_search&utm_campaignid=21057859163&utm_adgroupid=157296744657&utm_device=c&utm_keyword=&utm_matchtype=&utm_network=g&utm_adpostion=&utm_creative=692112538474&utm_targetid=aud-517318241907:dsa-2218886984100&utm_loc_interest_ms=&utm_loc_physical_ms=9060927&utm_content=&utm_campaign=230119_1-sea~dsa~tofu_2-b2c_3-es-lang-en_4-prc_5-na_6-na_7-le_8-pdsh-go_9-na_10-na_11-na-feb24&gad_source=1&gclid=CjwKCAiAxaCvBhBaEiwAvsLmWOnl8ivK3JhOnEaytD-ZXFXjCqFsTpjlsp0gmRghz5v9UoRz8Y25vBoCpKkQAvD_BwE>

Esa pagina es adictiva para un cientifico de datos 😉

Para ilustrar cómo funciona el algoritmo K-means, consideremos un ejemplo simple con un conjunto de datos bidimensional en el que queremos agrupar puntos en dos clústeres. Imagina que tienes los siguientes puntos en un plano cartesiano:

Punto A: (2, 3)
Punto B: (3, 3)
Punto C: (2, 2)
Punto D: (6, 5)
Punto E: (6, 6)
Punto F: (7, 7)

Pasos del algoritmo K-means:

Inicialización: Inicialmente, seleccionamos dos puntos aleatorios como los centros iniciales de los clústeres. Supongamos que elegimos los puntos A y D como centros iniciales.

  1. Asignación: Calculamos la distancia entre cada punto de datos y los centros de los clústeres (A y D) y asignamos cada punto al clúster cuyo centro está más cerca. Por ejemplo, los puntos A, B, y C se asignarían al clúster A, y los puntos D, E, y F se asignarían al clúster D.

  2. Actualización de los centros: Calculamos los nuevos centros de los clústeres como el promedio de los puntos asignados a cada clúster. Los nuevos centros serían (2.33, 2.67) para el clúster A y (6.33, 6.0) para el clúster D.

  3. Repetición: Repetimos los pasos 2 y 3. Después de la segunda iteración, los puntos se asignarán de manera diferente. Ahora, los puntos A, B, C, y D se asignarán al clúster A, y los puntos E y F se asignarán al clúster D.

  4. Resultados: Después de varias iteraciones, el algoritmo convergerá a una solución. En este caso, los dos clústeres resultantes serán:

  • Clúster 1:

Punto A: (2, 3)
Punto B: (3, 3)
Punto C: (2, 2)
Punto D: (6, 5)

  • Clúster 2:
    Punto E: (6, 6)
    Punto F: (7, 7)

En este ejemplo, K-means ha agrupado los puntos en dos clústeres basados en su proximidad en el espacio bidimensional. Ten en cuenta que la elección de los centros iniciales puede afectar los resultados, y en la práctica, el algoritmo se ejecuta varias veces con diferentes inicializaciones para mejorar la estabilidad de los clústeres.

K-means es un algoritmo de agrupamiento (clustering) ampliamente utilizado en el campo de la minería de datos y el aprendizaje automático. Su objetivo principal es dividir un conjunto de datos en grupos o clústeres, de tal manera que los elementos dentro de un mismo grupo sean similares entre sí, mientras que los elementos de grupos diferentes sean distintos. A continuación, te explicaré cómo funciona el algoritmo K-means:
*

  • Inicialización: El primer paso es seleccionar un número predefinido de clústeres (K) que deseas obtener a partir de tus datos. Luego, se eligen K puntos iniciales como centros de los clústeres. Estos puntos iniciales pueden ser seleccionados aleatoriamente o mediante algún otro método, como k-means++ para mejorar la inicialización.

  • Asignación: Para cada punto de datos en tu conjunto, se calcula la distancia entre el punto y los K centros de los clústeres. El punto se asigna al clúster cuyo centro está más cerca de él. Esto crea K grupos iniciales.

  • Actualización de los centros: Una vez que todos los puntos de datos se han asignado a un clúster, se recalculan los centros de cada clúster como el promedio de todos los puntos asignados a ese clúster. Estos nuevos centros representan el “centroide” de cada grupo.

  • Repetición: Los pasos 2 y 3 se repiten iterativamente hasta que se cumpla algún criterio de detención, como la convergencia (cuando los centros de los clústeres dejan de cambiar significativamente) o después de un número fijo de iteraciones.

  • Resultados: Una vez que el algoritmo ha convergido, los puntos de datos se encuentran asignados a sus respectivos clústeres. El resultado es un conjunto de K grupos, donde cada grupo contiene puntos de datos similares entre sí y diferentes de los puntos en otros grupos.

Es importante tener en cuenta que K-means es un algoritmo heurístico y puede converger a un mínimo local en lugar de encontrar la solución óptima global. Por lo tanto, en la práctica, es común ejecutar el algoritmo varias veces con diferentes inicializaciones y seleccionar la mejor solución. También, la elección de un valor adecuado para K puede ser crucial, y se pueden utilizar métodos como el codo (elbow method) o el índice de Davies-Bouldin para determinar el número óptimo de clústeres.

  • K-means es eficiente y fácil de implementar, pero tiene limitaciones, como la sensibilidad a la inicialización y la forma de los clústeres. Para problemas más complejos, es posible que se necesiten algoritmos de agrupamiento más avanzados.
**K-means** es un algoritmo de clustering o agrupamiento no supervisado que tiene como objetivo dividir un conjunto de puntos en **K** grupos (o clusters), en el que cada punto pertenece al grupo cuyo valor medio es más cercano. El "valor medio" aquí se refiere al promedio de los puntos y se llama "centroide". ### Cómo funciona: 1. **Inicialización**: Se seleccionan **K** puntos al azar como centroides iniciales. Estos pueden ser puntos aleatorios o una selección aleatoria de puntos del conjunto de datos. 2. **Asignación**: Cada punto se asigna al centroide más cercano. 3. **Actualización de centroides**: El centroide de cada cluster se recalcula como el promedio de todos los puntos asignados a ese cluster. 4. **Repetición**: Los pasos 2 y 3 se repiten hasta que los centroides no cambien significativamente en iteraciones consecutivas o hasta que se cumpla alguna otra condición de parada (como un número máximo de iteraciones). 5. **Resultado**: Una vez que el algoritmo se detiene, tendremos **K** clusters con puntos asignados a cada uno de ellos. ### Visualización: #### Paso 1: Inicialización ![Inicialización K-means](https://miro.medium.com/max/2824/1*KrcZK0xYgTa4qFrVr0fO2w.gif) #### Paso 2 y 3: Asignación y Actualización ![Asignación y Actualización K-means](https://miro.medium.com/max/2824/1*4LOxZL6bFl3rXlr2uCiKlQ.gif) ### Consideraciones: * La elección inicial de centroides puede afectar el resultado. Por lo tanto, a menudo se ejecuta el algoritmo varias veces con diferentes inicializaciones y se elige el resultado con el valor más bajo de la función objetivo. * Es importante preprocesar los datos (por ejemplo, normalizarlos) antes de aplicar K-means, ya que el algoritmo es sensible a la escala de las características. * El número de clusters, **K**, debe ser determinado previamente. A veces, el valor óptimo de **K** se determina usando técnicas como el "método del codo". * K-means puede no funcionar bien cuando los clusters tienen formas no esféricas o tamaños muy diferentes.

Es verdad lo facil que es entender este algoritmo con visulizacion, me encanta.