You don't have access to this class

Keep learning! Join and start boosting your career

Aprovecha el precio especial y haz tu profesión a prueba de IA

Antes: $249

Currency
$209
Suscríbete

Termina en:

0 Días
8 Hrs
51 Min
1 Seg

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

5/27
Resources

Contributions 10

Questions 2

Sort by:

Want to see more contributions, questions and answers from the community?

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 😔.

**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.

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

Complejidad algoritmica temporal El algoritmo K-means no realiza una iteración completa por cada centroide de manera individual, sino que actualiza los centroides y asigna los puntos a los clústeres en un ciclo iterativo. La complejidad temporal de K-means se determina principalmente por dos procesos: 1. **Asignación de puntos a los centroides más cercanos**, lo cual tiene una complejidad de O(n \\\* k \\\* d) donde n es el número de puntos de datos, k es el número de centroides (clústeres) y d es la dimensión de los datos. 2. **Recalcular los centroides en función de los puntos asignados**, lo cual también tiene una complejidad de O(n \\\* k \\\* d). Estos dos pasos se repiten durante un número determinado de iteraciones, i, lo que lleva a la complejidad total del algoritmo K-means a ser O(n \\\* k \\\* i \\\* d). Es decir, no es factorial (O(n!)) sino lineal respecto a las iteraciones y puntos de datos. Entonces, aunque K-means puede ser costoso en términos de tiempo de cómputo para grandes conjuntos de datos y muchas dimensiones, no es tan ineficiente como una complejidad factorial. Aún así, hay optimizaciones y variaciones del algoritmo, como K-means++, que ayudan a mejorar su desempeño.
En estos casos ¿Tiene solución el algoritmo o se tendrían que recalcular los centroides desde el principio? ![](https://static.platzi.com/media/user_upload/Captura%20desde%202024-12-27%2014-23-03-bc94d5c9-a849-4245-9295-09ca77f0a78a.jpg)

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.

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