Introducción al algoritmo de agrupamiento de Kmeans

May 01 2023
¿Qué es el agrupamiento de K-Means? El agrupamiento de K-Means es un algoritmo de aprendizaje automático no supervisado que se utiliza para agrupar o agrupar puntos de datos similares en un conjunto de datos. Es un algoritmo de partición, que divide los datos en grupos que no se superponen, donde cada punto de datos pertenece a un único grupo.

¿Qué es el agrupamiento de K-Means?

El agrupamiento de K-Means es un algoritmo de aprendizaje automático no supervisado que se utiliza para agrupar o agrupar puntos de datos similares en un conjunto de datos. Es un algoritmo de partición, que divide los datos en grupos que no se superponen, donde cada punto de datos pertenece a un único grupo. El agrupamiento de K-medias tiene como objetivo minimizar la suma de las distancias al cuadrado entre cada punto de datos y su centroide asignado.

Teoría — ¿Cómo funciona?

Paso 1. Primero, debemos decidir el valor de K, que es la cantidad de grupos que queremos crear. El valor de K se puede decidir al azar o usando algún método como Elbow, Silhouette.

Paso 2. A continuación, seleccionamos aleatoriamente K puntos del conjunto de datos para que actúen como centroides iniciales para cada grupo.

Paso 3. Luego calculamos la distancia euclidiana entre cada punto de datos y los centroides y asignamos el punto de datos al centroide más cercano, creando K grupos.

Paso 4. Después de asignar todos los puntos de datos a su centroide más cercano, actualizamos la ubicación de cada centroide calculando la media de todos los puntos de datos asignados a ese centroide.

Paso 5. Repetimos los pasos 3 y 4 hasta que el algoritmo converge, lo que significa que los centroides ya no se mueven o la mejora en la suma de las distancias al cuadrado entre los puntos de datos y su centroide asignado se vuelve insignificante.

¿Cómo funciona el código?

Importe las bibliotecas necesarias:

import numpy as np
import matplotlib.pyplot as plt

X = np.random.rand(100, 2) * 2
plt.scatter(X[:, 0], X[:, 1])
plt.show()

      
                

K = 7
centroids = X[np.random.choice(len(X), K, replace=False)]
plt.scatter(X[:, 0], X[:, 1])
plt.scatter(centroids[:, 0], centroids[:, 1], marker='x', s=200, linewidths=3, color='r')
plt.show()

      
                
while True: # Assign data points to the nearest centroid distances = np.sqrt(((X - centroids[:, np.newaxis])**2).sum(axis=2)) labels = np.argmin(distances, axis=0) # Calculate new centroids new_centroids = np.array([X[labels == i].mean(axis=0) for i in range(K)]) # Check for convergence if np.all(centroids == new_centroids): break # Update centroids centroids = new_centroids plt.scatter(X[:, 0], X[:, 1], c=labels) plt.scatter(centroids[:, 0], centroids[:, 1], marker='x', s=200, linewidths=3, color='r') plt.show()

Limitaciones del algoritmo de K medias

  1. K significa que el agrupamiento es sensible a la selección del centroide inicial. El algoritmo puede converger a una solución subóptima si los centroides iniciales no se seleccionan adecuadamente.
  2. K significa que el agrupamiento es sensible a valores atípicos
  3. K significa que la agrupación es sensible al valor de K. Si K no se elige correctamente, puede generar agrupaciones subóptimas.