Métodos de clustering

Autor: | Última modificación: 7 de noviembre de 2022 | Tiempo de Lectura: 3 minutos
Temas en este post:

¿Sabías que existen diferentes métodos de clustering que puedes usar para ejecutar tus agrupamientos de manera más fácil y óptima?

El clustering es el método por el cual se agrupan entidades en función de sus similitudes. ¿Y qué tipo de similitudes? Eso es precisamente lo que responderemos en este artículo, ya que vamos a evaluar algunos de los métodos de clustering más famosos que existen para poder identificar la forma de agrupar distintos elementos en sus respectivas categorías.

Métodos de clustering: clustering particionado

Métodos de clustering: k-means

Este es el primero y uno de los más famosos métodos de clustering y se basa en centroides. El centroide o centro geométrico es el punto resultante de la media aritmética de la posición de todos los puntos.

  1. Elige k centroides al azar.
  2. Asigna el elemento al centroide más cercano.
  3. Se hace el recálculo de centroides.
  4. Se repite desde 2 mientras los centroides se sigan actualizando.
options (repr.plot.height = 4, repr.plot.width = 6, repr.plot.res = 300)

N <- 380
x1 <- c (rnorm (N, mean = 2, sd = 2), rnorm (N, mean = -2, sd = 2), rnorm (N, mean = -5, sd = 1))
x2 <- c (0.4 * x1 + c (rnorm (N, mean = 3, sd = 2), rnorm (N, mean = -3, sd = 1), rnorm (N, mean = 7, sd = 1)))
df <- data.frame (x1, x2)

library (ggplot2)
ggplot (data = df, aes (x = x1, y = x2)) + geom_point (alpha = 0.7)
métodos de clustering

Tenemos una nube de puntos y la idea es que el algoritmo de clustering k-means nos los agrupe. A ojo, podríamos decir que hay tres grupos de puntos.

¿Qué es lo que necesita el primero de los métodos de clustering, el k-means? Este necesita que le digamos cuántos grupos hay, ya que él no se va a inventar esta información.

Lo primero que haremos será definir la función de la distancia euclídea:

mydistance <- function (v1, v2) {
sqrt ((vi [1] - v2 [1]) ^ 2 + [v1 [2] - v2 [2]) ^ 2)
}

assign_points_to_centroid <- function (mydata, centroids) {
groups <- rep (NA, nrow (mydata))
for (i in 1:nrow (mydata)) {
distance_to_centroids[j] <- mydistance (mydata[ i ,] , centroids [ j ,])
}
group[1] <- which.min (distance_to_centroids)
}
group
}

get_new_centroids <- function (mydata, group) { 
k <- length (unique (group))
centroids <- data.frame (x1 = rep (NA, k), x2 = rep (NA, k))
for (i in l : k) {
idx <- which (i == group)
centroids [ i ,] <- colMeans (mydata [idx ,])
}
centroids
}
plot_all <- function (mydata, centroids, group) {
mydata$group <- factor (group)
mydata$centroidx1 <- centroid$x1 [group]
mydata$centroidx2 <- centroids$x2 [group]
ggplot (data = mydata, aes (x = x1, y = x2) + geom_point (color = group, size = 0.5) + geom_point (aes (x = centroidx1, y = centroidx2), shape = " * ", size = 5, color = "purple")
}

centroids <- data.frame (x1 = c (1, 2), x2 = c (1, 1))
#centroids <- data.frame (x1 = c (1, 2, 3), x2 = c (1,1,1))
centroids
group <- assign_points_to_centroid (df, centroids)
plot_all (df, centroids, group)

centroids <- get_new_centroids (df, group)
centroids
x1x2
<dbl><dbl>
11
21
Cálculo 1 de centroides
x1x2
<dbl><dbl>
-3.0142151.012854
3.3215223.810731
Cálculo 2 de centroides

El centroide es la media de todos los puntos. Nosotros hemos empezado con dos centroides al azar, que se pueden ver identificados por las estrellas moradas en el gráfico. Entre los métodos de clustering que existen, el k-means lo que ha hecho es clasificar en dos los puntos (puntos negros y puntos rojos) a partir de los dos centroides que hemos definido.

Métodos de clustering 1

Lo que haremos ahora será calcular el centroide de todos los puntos negros. Estos centroides se calculan con get_new_centroids.

Métodos de clustering 2

Ahora, nos ha calculado los centroides de los dos puntos de centroides que hemos definido previamente. La tabla cálculo 1 de centroides nos muestra cómo eran antes (primera gráfica) y la tabla cálculo 2 de centroides nos muestra cómo son ahora (gráfico 2).

Este proceso es iterativo.

Este algoritmo lo implementa R:

kmeans (data. frame, k)

myclust <- kmeans (df, 3)

print ("Los centroides son")

myclust$centers
#myclust$cluster

[1] «Los centroides son»

x1x2
12.3865383.871801
2-4.9283514.911918
3-2.038935-3.760849
mycluster$centers [, "x1"]

1: 2.38653815316614

2: -4.92835087692713

3: -2.03893540198899

str (myclust)

table (myclust$cluster) #contar cuántos clústeres hay en el grupo 1, cuántos en el grupo 2, etc.
myclust$cluster
Métodos de clustering 3
123
287307306
cl <- factor (myclust$cluster)

clustered <- cbind (df, group = cl)
clustered$centroidx1 <- myclust$centers [group, "x1"]
clustered$centroidx2 <- myclust$centers [group, "x2"]
ggplot (data = clustered, aes (x = x1, y = x2)) + geom_point (aes (color = group), size = 0.5) +
geom_point (aes (x = centroidx1, y = centroidx2), shape = " * ", size = 5, color = "purple")

summary (clustered)

Siempre debemos asignar el clúster a un factor.

Métodos de clustering 4

Por último, hemos pintado de un color distinto cada clúster.

Métodos de clustering 5

¿Qué sigue?

Si quieres seguir aprendiendo sobre métodos de clustering y otros temas relacionados, puedes inscribirte en nuestro Big Data, Inteligencia Artificial & Machine Learning Full Stack Bootcamp, la formación intensiva con la que, en unos pocos meses, dominarás todos los conocimientos teóricos y prácticos necesarios para incursionar en el gran mercado laboral IT. ¡Solicita más información y cambia tu vida!

👉 Descubre más del Big Data, Inteligencia Artificial & Machine Learning Full Stack Bootcamp ¡Descarga el temario!

👉 Prueba el Bootcamp Gratis por una Semana ¡Empieza ahora mismo!

👉 Conoce nuestros otros Bootcamps en Programación y Tecnología

[email protected]

¿Trabajo? Aprende a programar y consíguelo.

¡No te pierdas la próxima edición del Aprende a Programar desde Cero Full Stack Jr. Bootcamp!

 

Prepárate en 4 meses, aprende las últimas tecnologías y consigue trabajo desde ya. 

 

Solo en España hay más de 120.400 puestos tech sin cubrir, y con un sueldo 11.000€ por encima de la media nacional. ¡Es tu momento!

 

🗓️ Próxima edición: 13 de febrero

 

Reserva tu plaza descubre las becas disponibles.