k-means método elbow

Hallar k para k-means utilizando el método elbow?

El algoritmo KMeans puede agrupar datos observados. Pero, ¿cuántos grupos (k) hay?

El método elbow encuentra el valor óptimo para k (#clusters).

Definición metodo elbow

metodo elbow elblogpython

El método Elbow es un procedimiento de clustering en el que se calculan los valores de la inercia para diferentes valores del número de clusters para encontrar el número óptimo de clusters.

La inercia representa la suma de las distancias cuadráticas de las muestras a su clúster más cercano, es decir, la suma de los errores cuadráticos dentro de cada grupo.

Explicación metodo elbow

El método Elbow toma en cuenta la suma de los errores cuadráticos para cada cluster, donde el número de clusters es un parámetro que se puede modificar. Al variar el número de clusters, se pueden obtener diferentes valores de la inercia. El valor óptimo de clusters se encuentra donde se produzca un cambio brusco en el valor de la inercia. Esto se conoce como el «codo» en la gráfica de la inercia en función del número de clusters.

El método Elbow es una forma útil de encontrar el número óptimo de clusters, ya que es una técnica sencilla, fácil de entender y de implementar. Esto lo hace una buena opción para aquellos que buscan una solución rápida para el problema de clustering.

Ventajas y Desventajas sobre metodo elbow

  • Ventajas
    • Es una técnica fácil de entender y de implementar.
    • Es una buena opción para aquellos que buscan una solución rápida para el problema de clustering.
    • Permite encontrar el número óptimo de clusters.
  • Desventajas
    • No se puede determinar con certeza el número óptimo de clusters, ya que el cambio brusco en el valor de la inercia puede ser difícil de detectar.
    • No es una solución óptima para los problemas de clustering, ya que no se garantiza que el número óptimo de clusters resulte en el mejor resultado posible.

Determinar k óptimo

La técnica para determinar K, el número de gruposse llama el método elbow.

Con un poco de fantasía, puedes ver un codo en el gráfico a continuación.

Graficaremos:

  • valores de K en el eje horizontal
  • la distorsión en el eje Y (los valores calculados con la función de costo).
    Esto resulta en:

Cuando K aumenta, los clustering están más cerca de los clustering de los grupos.

Las mejoras disminuirán, en algún momento rápidamente, creando la forma del codo.

Ese punto es el valor óptimo para K. En la imagen de arriba, K=3.

Ejemplo del método elbow

metodo elbow ejemplo elblogpython

Paso 1: Selección del número de clusters

Antes de aplicar el método elbow, es necesario decidir el número máximo de clusters que se quiere evaluar. Este número dependerá del problema que se esté abordando y de la cantidad de datos disponibles.

Paso 2: Aplicación del algoritmo de clustering

A continuación, se aplica el algoritmo de clustering seleccionado para el conjunto de datos en cuestión. Es importante elegir un algoritmo adecuado para el problema, ya que distintos algoritmos pueden arrojar resultados diferentes.

Paso 3: Cálculo de la suma de los cuadrados dentro de los clusters (WCSS)

Una vez que se ha aplicado el algoritmo de clustering, se calcula la suma de los cuadrados dentro de los clusters (WCSS, por sus siglas en inglés). Esto se hace sumando la distancia euclidiana al cuadrado entre cada punto y el centro del cluster al que pertenece. Cuanto menor sea este valor, mayor será la cohesión dentro de los clusters.

Paso 4: Gráfica del método elbow

El siguiente paso es graficar los valores de WCSS en función del número de clusters. Esta gráfica mostrará un descenso de los valores de WCSS a medida que se aumenta el número de clusters, ya que al haber más clusters, la cohesión dentro de cada uno de ellos es mayor.

El punto de inflexión de esta curva, es decir, el punto en el que el descenso de la curva se hace menos pronunciado, se asemeja a un codo. Este punto indica el número óptimo de clusters para el conjunto de datos en cuestión.

Paso 5: Elección del número óptimo de clusters

Finalmente, se elige el número óptimo de clusters en función del punto de inflexión de la curva. Este número será el que permita una cohesión adecuada dentro de los clusters, pero evitando la creación de clusters innecesarios.

El siguiente código de ejemplo crea encuentra el valor óptimo para k.

 


from sklearn.cluster import KMeans
from sklearn import metrics
from scipy.spatial.distance import cdist
import numpy as np
import matplotlib.pyplot as plt

x1 = np.array([3, 1, 1, 2, 1, 6, 6, 6, 5, 6, 7, 8, 9, 8, 9, 9, 8])
x2 = np.array([5, 4, 5, 6, 5, 8, 6, 7, 6, 7, 1, 2, 1, 2, 3, 2, 3])

plt.plot()
plt.xlim([0, 10])
plt.ylim([0, 10])
plt.title('Dataset')
plt.scatter(x1, x2)
plt.show()


plt.plot()
X = np.array(list(zip(x1, x2))).reshape(len(x1), 2)
colors = ['b', 'g', 'r']
markers = ['o', 'v', 's']


distortions = []
K = range(1,10)
for k in K:
    kmeanModel = KMeans(n_clusters=k).fit(X)
    kmeanModel.fit(X)
    distortions.append(sum(np.min(cdist(X, kmeanModel.cluster_centers_, 'euclidean'), axis=1)) / X.shape[0])


plt.plot(K, distortions, 'bx-')
plt.xlabel('k')
plt.ylabel('Distortion')
plt.title('The Elbow Method showing the optimal k')
plt.show()

Aprende más de programación:

Aquí tienes mas publicaciones sobre Machine Learning:

Podemos ayudar a comprender los datos mediante la construcción de modelos matemáticos, esto es clave para el machine learning. Uno ...
En esta clasificación podemos dividir las redes neuronales en dos tipos principales: Redes neuronales monocapa: generalmente son las más fáciles ...
Machine Learning: Máquinas que Aprenden a Aprender. Actualmente, el Machine Learning es una disciplina que tiene innumerables usos y posibilidades ...
xlwings es una biblioteca de Python que te permite usar todo el poder de este lenguaje de programación en combinación ...
El aprendizaje supervisado en este contexto no se trata de cuidar a bebés problemáticos mientras sus padres no están 😉 ...
El perfil de Ingeniero en Machine Learning se ha convertido en uno de los más buscados en el área de ...

¿ Te pareció de utilidad este articulo k-means método elbow?
⬇️ Te agradecería si compartes esta publicación.⬇️