Contexto
La
segmentación o clusters es un conjunto de técnicas
cuyo propósito es formar grupos a partir de un conjunto de elementos.
Más información:
Cluster
Paso 1 - Instalar librerías
#install.packages("cluster")
library(cluster)
#install.packages("ggplot2")
library(ggplot2)
#install.packages("data.table")
library(data.table)
#install.packages("factoextra")
library(factoextra)
Paso 2 - Obtener los datos
df = data.frame(x= c(2,2,8,5,7,6,1,4), y= c(10,5,4,8,5,4,2,9))
Paso 3 - Inicializar los
grupos
Paso 4 - Generar los
segmentos
segmentos <- kmeans(df, grupos)
segmentos
## K-means clustering with 3 clusters of sizes 1, 5, 2
##
## Cluster means:
## x y
## 1 2.0 10.0
## 2 4.8 4.0
## 3 4.5 8.5
##
## Clustering vector:
## [1] 1 2 2 3 2 2 2 3
##
## Within cluster sum of squares by cluster:
## [1] 0.0 44.8 1.0
## (between_SS / total_SS = 54.5 %)
##
## Available components:
##
## [1] "cluster" "centers" "totss" "withinss" "tot.withinss"
## [6] "betweenss" "size" "iter" "ifault"
## Length Class Mode
## cluster 8 -none- numeric
## centers 6 -none- numeric
## totss 1 -none- numeric
## withinss 3 -none- numeric
## tot.withinss 1 -none- numeric
## betweenss 1 -none- numeric
## size 3 -none- numeric
## iter 1 -none- numeric
## ifault 1 -none- numeric
Paso 5 - Asignar el grupo a cada
observación
asignación <- cbind(cluster = segmentos$cluster, df)
asignación
## cluster x y
## 1 1 2 10
## 2 2 2 5
## 3 2 8 4
## 4 3 5 8
## 5 2 7 5
## 6 2 6 4
## 7 2 1 2
## 8 3 4 9
asignación$cluster <- as.factor(asignación$cluster)
summary(asignación)
## cluster x y
## 1:1 Min. :1.000 Min. : 2.000
## 2:5 1st Qu.:2.000 1st Qu.: 4.000
## 3:2 Median :4.500 Median : 5.000
## Mean :4.375 Mean : 5.875
## 3rd Qu.:6.250 3rd Qu.: 8.250
## Max. :8.000 Max. :10.000
Paso 6 - Graficar los
clusters
fviz_cluster(segmentos, data = df)

Paso 7 - Optimizar la cantidad de
grupos
La cantidad óptima de grupos corresponde al punto más alto
set.seed(123)
optimizacion <- clusGap(df, FUN=kmeans, nstart=1, K.max = 7)
plot(optimizacion, xlab = "Número de clusters k")

Conclusión
El clustering es una valiosa herramienta del análisis de datos que
nos permite identificar características que a simple vista no vemos en
conjuntos de datos y que con esas características podemos hacer grupos
de datos que nos harán posible enfocarnos en las características de cada
grupo, lo que es sumamente valioso para distintas disciplinas como por
ejemplo el marketing, donde necesitamos agrupar a nuestros clientes en
distintos tipos de clientes.
LS0tCnRpdGxlOiAiUHJhY3RpY2EgMSAtIENsdXN0ZXIiCmF1dGhvcjogIkdhYnJpZWwgTWVkaW5hIgpkYXRlOiAiMjAyNC0wMi0yMSIKb3V0cHV0OgogIGh0bWxfZG9jdW1lbnQ6CiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUKICAgIHRvYzogeWVzCiAgICB0b2NfZmxvYXQ6IHllcwogICAgY29kZV9kb3dubG9hZDogeWVzCiAgICB0aGVtZTogYm9vdHN0cmFwCiAgICBoaWdobGlnaHQ6IHRhbmdvCiAgcGRmX2RvY3VtZW50OgogICAgdG9jOiB5ZXMKLS0tCgojIyA8c3BhbiBzdHlsZT0iY29sb3I6IGJsYWNrOyI+Q2x1c3RlcmluZzwvc3Bhbj4KCiFbXSgvVXNlcnMvZ2FicmllbG1lZGluYS9Eb3dubG9hZHMvTTIvOWI5MmQ0NDg5NjZiOGYxMDYzODZiOGYzM2Q2OTM2OWYuZ2lmKQoKIyMgPHNwYW4gc3R5bGU9ImNvbG9yOiBibGFjazsiPkNvbnRleHRvPC9zcGFuPgoKPGRpdiBzdHlsZT0idGV4dC1hbGlnbjoganVzdGlmeSI+CgoKTGEgKipzZWdtZW50YWNpw7NuKiogbyBjbHVzdGVycyBlcyB1biBjb25qdW50byBkZSB0w6ljbmljYXMgY3V5byBwcm9ww7NzaXRvIGVzIGZvcm1hciBncnVwb3MgYSBwYXJ0aXIgZGUgdW4gY29uanVudG8gZGUgZWxlbWVudG9zLiA8ZGl2Lz4gIAoKCgpNw6FzIGluZm9ybWFjacOzbjogIAoKW0NsdXN0ZXJdKGh0dHBzOi8vd3d3LmdyYXBoZXZlcnl3aGVyZS5jb20vcXVlLWVzLWVsLWNsdXN0ZXJpbmcvKQoKIyMgPHNwYW4gc3R5bGU9ImNvbG9yOiBibGFjazsiPlBhc28gMSAtIEluc3RhbGFyIGxpYnJlcsOtYXM8L3NwYW4+CgpgYGB7ciBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQojaW5zdGFsbC5wYWNrYWdlcygiY2x1c3RlciIpCgpsaWJyYXJ5KGNsdXN0ZXIpCiNpbnN0YWxsLnBhY2thZ2VzKCJnZ3Bsb3QyIikKCmxpYnJhcnkoZ2dwbG90MikKI2luc3RhbGwucGFja2FnZXMoImRhdGEudGFibGUiKQoKbGlicmFyeShkYXRhLnRhYmxlKQojaW5zdGFsbC5wYWNrYWdlcygiZmFjdG9leHRyYSIpCgpsaWJyYXJ5KGZhY3RvZXh0cmEpCmBgYAoKCgojIyA8c3BhbiBzdHlsZT0iY29sb3I6IGJsYWNrOyI+UGFzbyAyIC0gT2J0ZW5lciBsb3MgZGF0b3M8L3NwYW4+CgpgYGB7ciB9CmRmID0gZGF0YS5mcmFtZSh4PSBjKDIsMiw4LDUsNyw2LDEsNCksIHk9IGMoMTAsNSw0LDgsNSw0LDIsOSkpCmBgYAoKCiMjIDxzcGFuIHN0eWxlPSJjb2xvcjogYmxhY2s7Ij5QYXNvIDMgLSBJbmljaWFsaXphciBsb3MgZ3J1cG9zPC9zcGFuPgoKYGBge3IgfQpncnVwb3MgPC0gMwpgYGAKCgojIyA8c3BhbiBzdHlsZT0iY29sb3I6IGJsYWNrOyI+UGFzbyA0IC0gR2VuZXJhciBsb3Mgc2VnbWVudG9zPC9zcGFuPgoKYGBge3IgfQpzZWdtZW50b3MgPC0ga21lYW5zKGRmLCBncnVwb3MpCnNlZ21lbnRvcwpzdW1tYXJ5KHNlZ21lbnRvcykKYGBgCgojIyA8c3BhbiBzdHlsZT0iY29sb3I6IGJsYWNrOyI+UGFzbyA1IC0gQXNpZ25hciBlbCBncnVwbyBhIGNhZGEgb2JzZXJ2YWNpw7NuPC9zcGFuPgoKCmBgYHtyIH0KYXNpZ25hY2nDs24gPC0gY2JpbmQoY2x1c3RlciA9IHNlZ21lbnRvcyRjbHVzdGVyLCBkZikKYXNpZ25hY2nDs24KYXNpZ25hY2nDs24kY2x1c3RlciA8LSBhcy5mYWN0b3IoYXNpZ25hY2nDs24kY2x1c3RlcikKc3VtbWFyeShhc2lnbmFjacOzbikKYGBgCgojIyA8c3BhbiBzdHlsZT0iY29sb3I6IGJsYWNrOyI+UGFzbyA2IC0gR3JhZmljYXIgbG9zIGNsdXN0ZXJzPC9zcGFuPgoKYGBge3IgfQpmdml6X2NsdXN0ZXIoc2VnbWVudG9zLCBkYXRhID0gZGYpCgpgYGAKCiMjIDxzcGFuIHN0eWxlPSJjb2xvcjogYmxhY2s7Ij5QYXNvIDcgLSBPcHRpbWl6YXIgbGEgY2FudGlkYWQgZGUgZ3J1cG9zPC9zcGFuPgoKTGEgY2FudGlkYWQgw7NwdGltYSBkZSBncnVwb3MgY29ycmVzcG9uZGUgYWwgcHVudG8gbcOhcyBhbHRvIAoKYGBge3IgfQpzZXQuc2VlZCgxMjMpCgpvcHRpbWl6YWNpb24gPC0gY2x1c0dhcChkZiwgRlVOPWttZWFucywgbnN0YXJ0PTEsIEsubWF4ID0gNykKCnBsb3Qob3B0aW1pemFjaW9uLCB4bGFiID0gIk7Dum1lcm8gZGUgY2x1c3RlcnMgayIpCmBgYAoKIyMgPHNwYW4gc3R5bGU9ImNvbG9yOiBibGFjazsiPkNvbmNsdXNpw7NuPC9zcGFuPgoKRWwgY2x1c3RlcmluZyBlcyB1bmEgdmFsaW9zYSBoZXJyYW1pZW50YSBkZWwgYW7DoWxpc2lzIGRlIGRhdG9zIHF1ZSBub3MgcGVybWl0ZSBpZGVudGlmaWNhciBjYXJhY3RlcsOtc3RpY2FzIHF1ZSBhIHNpbXBsZSB2aXN0YSBubyB2ZW1vcyBlbiBjb25qdW50b3MgZGUgZGF0b3MgeSBxdWUgY29uIGVzYXMgY2FyYWN0ZXLDrXN0aWNhcyBwb2RlbW9zIGhhY2VyIGdydXBvcyBkZSBkYXRvcyBxdWUgbm9zIGhhcsOhbiBwb3NpYmxlIGVuZm9jYXJub3MgZW4gbGFzIGNhcmFjdGVyw61zdGljYXMgZGUgY2FkYSBncnVwbywgbG8gcXVlIGVzIHN1bWFtZW50ZSB2YWxpb3NvIHBhcmEgZGlzdGludGFzIGRpc2NpcGxpbmFzIGNvbW8gcG9yIGVqZW1wbG8gZWwgbWFya2V0aW5nLCBkb25kZSBuZWNlc2l0YW1vcyBhZ3J1cGFyIGEgbnVlc3Ryb3MgY2xpZW50ZXMgZW4gZGlzdGludG9zIHRpcG9zIGRlIGNsaWVudGVzLgo=