Teoria

La segmentación o clusters es un conjunto de técnicas cuyo propósito es formar grupos a partir de un conjunto de elementos.

Paso 1. Instalar librerias

#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. Cantidad de grupos

grupos <- 3

Paso 4. Generar los segmentos

segmentos <- kmeans(df,grupos)
segmentos
## K-means clustering with 3 clusters of sizes 2, 3, 3
## 
## Cluster means:
##          x        y
## 1 1.500000 3.500000
## 2 7.000000 4.333333
## 3 3.666667 9.000000
## 
## Clustering vector:
## [1] 3 1 2 3 2 2 1 3
## 
## Within cluster sum of squares by cluster:
## [1] 5.000000 2.666667 6.666667
##  (between_SS / total_SS =  85.8 %)
## 
## Available components:
## 
## [1] "cluster"      "centers"      "totss"        "withinss"     "tot.withinss"
## [6] "betweenss"    "size"         "iter"         "ifault"

Paso 5. Asignar el grupo al que pertenece cada observación

asignacion <- cbind(df, cluster = segmentos$cluster)
asignacion
##   x  y cluster
## 1 2 10       3
## 2 2  5       1
## 3 8  4       2
## 4 5  8       3
## 5 7  5       2
## 6 6  4       2
## 7 1  2       1
## 8 4  9       3

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 de la siguiente gráfica.
set.seed(123)
optimizacion <- clusGap(df, FUN=kmeans, nstart=1, K.max =7)
plot(optimizacion, xlab="Número de clusters k")

Conclusión

La segmentación o clusters es un algoritmo útil para las empresas que desean clasificar sus clientes y dirigir campañas de marketing más enfocadas y especializadas.

LS0tDQp0aXRsZTogIkNsdXN0ZXJzIFB1bnRvcyINCmF1dGhvcjogIkdhYnJpZWwgTW9uY2FkYSBBMDE3MjIxODciDQpkYXRlOiAiMjAyNC0wOC0xNSINCm91dHB1dDogDQogIGh0bWxfZG9jdW1lbnQ6DQogICAgdG9jOiBUUlVFDQogICAgdG9jX2Zsb2F0OiBUUlVFDQogICAgY29kZV9kb3dubG9hZDogVFJVRQ0KICAgIHRoZW1lOiBjb3Ntbw0KLS0tDQoNCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfSANCmtuaXRyOjpvcHRzX2NodW5rJHNldCh3YXJuaW5nID0gRkFMU0UsIG1lc3NhZ2UgPSBGQUxTRSkgDQpgYGANCg0KIVtdKEM6XFxVc2Vyc1xcZ2FicmlcXERvd25sb2Fkc1xcVGVjXFxTZW0gN1xcTW9kdWxvIDJcXGNsdXN0ZXIuZ2lmKQ0KDQojIFRlb3JpYQ0KTGEgc2VnbWVudGFjacOzbiBvIGNsdXN0ZXJzIGVzIHVuIGNvbmp1bnRvIGRlIHTDqWNuaWNhcyBjdXlvIHByb3DDs3NpdG8gZXMgZm9ybWFyIGdydXBvcyBhIHBhcnRpciBkZSB1biBjb25qdW50byBkZSBlbGVtZW50b3MuDQoNCiMgUGFzbyAxLiBJbnN0YWxhciBsaWJyZXJpYXMNCmBgYHtyfQ0KI2luc3RhbGwucGFja2FnZXMoImNsdXN0ZXIiKQ0KbGlicmFyeShjbHVzdGVyKQ0KI2luc3RhbGwucGFja2FnZXMoImdncGxvdDIiKQ0KbGlicmFyeShnZ3Bsb3QyKQ0KI2luc3RhbGwucGFja2FnZXMoImRhdGEudGFibGUiKQ0KbGlicmFyeShkYXRhLnRhYmxlKQ0KI2luc3RhbGwucGFja2FnZXMoImZhY3RvZXh0cmEiKQ0KbGlicmFyeShmYWN0b2V4dHJhKQ0KYGBgDQoNCiMgUGFzbyAyLiBPYnRlbmVyIGxvcyBkYXRvcw0KYGBge3J9DQpkZiA8LSBkYXRhLmZyYW1lKHg9YygyLDIsOCw1LDcsNiwxLDQpLCB5PWMoMTAsNSw0LDgsNSw0LDIsOSkpDQpgYGANCg0KIyBQYXNvIDMuIENhbnRpZGFkIGRlIGdydXBvcw0KYGBge3J9DQpncnVwb3MgPC0gMw0KYGBgDQoNCiMgUGFzbyA0LiBHZW5lcmFyIGxvcyBzZWdtZW50b3MNCmBgYHtyfQ0Kc2VnbWVudG9zIDwtIGttZWFucyhkZixncnVwb3MpDQpzZWdtZW50b3MNCmBgYA0KDQojIFBhc28gNS4gQXNpZ25hciBlbCBncnVwbyBhbCBxdWUgcGVydGVuZWNlIGNhZGEgb2JzZXJ2YWNpw7NuDQpgYGB7cn0NCmFzaWduYWNpb24gPC0gY2JpbmQoZGYsIGNsdXN0ZXIgPSBzZWdtZW50b3MkY2x1c3RlcikNCmFzaWduYWNpb24NCmBgYA0KDQojIFBhc28gNi4gR3JhZmljYXIgbG9zIGNsdXN0ZXJzDQpgYGB7cn0NCmZ2aXpfY2x1c3RlcihzZWdtZW50b3MsIGRhdGE9ZGYpDQpgYGANCg0KDQojIFBhc28gNy4gT3B0aW1pemFyIGxhIGNhbnRpZGFkIGRlIGdydXBvcw0KYGBge3J9DQojIExhIGNhbnRpZGFkIMOzcHRpbWEgZGUgZ3J1cG9zIGNvcnJlc3BvbmRlIGFsIHB1bnRvIG3DoXMgYWx0byBkZSBsYSBzaWd1aWVudGUgZ3LDoWZpY2EuDQpzZXQuc2VlZCgxMjMpDQpvcHRpbWl6YWNpb24gPC0gY2x1c0dhcChkZiwgRlVOPWttZWFucywgbnN0YXJ0PTEsIEsubWF4ID03KQ0KcGxvdChvcHRpbWl6YWNpb24sIHhsYWI9Ik7Dum1lcm8gZGUgY2x1c3RlcnMgayIpDQpgYGANCg0KIyBDb25jbHVzacOzbiANCkxhIHNlZ21lbnRhY2nDs24gbyBjbHVzdGVycyBlcyB1biBhbGdvcml0bW8gw7p0aWwgcGFyYSBsYXMgZW1wcmVzYXMgcXVlIGRlc2VhbiBjbGFzaWZpY2FyIHN1cyBjbGllbnRlcyB5IGRpcmlnaXIgY2FtcGHDsWFzIGRlIG1hcmtldGluZyBtw6FzIGVuZm9jYWRhcyB5IGVzcGVjaWFsaXphZGFzLg0K