El contexto de los datos se trata de registros relacionados con aspectos y características asociadas al comportamiento de compras de clientes.
Las variables describen características comerciales y de comportamiento, tales como el segmento al que pertenece el cliente, el canal por el cual realiza sus compras, la región donde se ubica, el tipo de producto que consume con mayor frecuencia, su frecuencia de compra, su nivel de satisfacción, el método de pago utilizado y su respuesta ante promociones, entre otros.
Todas las variables son categóricas, el modelo a implementar para generar grupos o clústeres será K-Modes.
Las variables:
Los datos se encuentra en el servicio github.com https://raw.githubusercontent.com/rpizarrog/Libro-Aprendizaje-Automatico.-Casos-de-Estudio-con-R-y-Python/refs/heads/main/datos/datos_clientes_kmodes_empresarial.csv .
El caso de estudio se puede ver en https://rpubs.com/rpizarrog/1447359
Las funciones se encuentra en https://raw.githubusercontent.com/rpizarrog/Libro-Aprendizaje-Automatico.-Casos-de-Estudio-con-R-y-Python/refs/heads/main/R%20MarkDown/funciones/funciones%20para%20K-Modes.R .
Implementar y valorar los grupos clientes contruídos a partir de la implementación del modelo K-Modes.
Se valoran el modelos K-Modes con \(K=3\) y con \(K=4\), de tal forma que la evaluación se realiza considerando el costo total del modelo, las frecuencias de clientes por clúster y las modas finales que caracterizan cada grupo.
library(readr) # Para conjuntos de datos
library(ggplot2) # Gráficos
library(patchwork) # Para tablas Word
library (psych) # Para describir datos
library(scales) # PAra graficos y escalas
library(klaR) # para K-Modes
# url <- "../funciones/funciones para K-Modes.R" # local
url <- "https://raw.githubusercontent.com/rpizarrog/Libro-Aprendizaje-Automatico.-Casos-de-Estudio-con-R-y-Python/refs/heads/main/R%20MarkDown/funciones/funciones%20para%20K-Modes.R" # WEB
source (url)
Se cargan los datos originales y solo se utilzia las variabels de interés: segmento, canal, region, producto, frecuencia, satisfaccion, pago, respromocion, al final, el conjunto de datos se almacena en datos.
url <- "https://raw.githubusercontent.com/rpizarrog/Libro-Aprendizaje-Automatico.-Casos-de-Estudio-con-R-y-Python/refs/heads/main/datos/datos_clientes_kmodes_empresarial.csv"
datos_originales <- f_cargar_datos(url)
variables <- c("segmento", "canal", "region", "producto",
"frecuencia" ,"satisfaccion", "pago", "respromocion")
datos <- datos_originales[,variables]
f_visualizar_head_tail_reducido_word(datos)
segmento | canal | region | producto | ... | frecuencia | satisfaccion | pago | respromocion |
|---|---|---|---|---|---|---|---|---|
Premium | Web | Occidente | Servicios | ... | Media | Alta | Digital | Media |
Promocional | Web | Sur | Moda | ... | Media | Media | Digital | Alta |
Riesgo | Tienda | Occidente | Alimentos | ... | Baja | Media | Efectivo | Baja |
Frecuente | App | Centro | Tecnologia | ... | Alta | Alta | Transferencia | Media |
Promocional | App | Sur | Tecnologia | ... | Alta | Media | Digital | Alta |
Riesgo | Telefono | Occidente | Moda | ... | Media | Media | Tarjeta | Baja |
... | ... | ... | ... | ... | ... | ... | ... | ... |
Frecuente | Web | Norte | Servicios | ... | Media | Alta | Digital | Media |
Ocasional | App | Centro | Moda | ... | Media | Media | Efectivo | Media |
Premium | Tienda | Sur | Tecnologia | ... | Alta | Alta | Tarjeta | Alta |
Promocional | App | Sur | Moda | ... | Media | Media | Digital | Alta |
Ocasional | Tienda | Sur | Hogar | ... | Media | Media | Digital | Baja |
Frecuente | App | Norte | Moda | ... | Media | Media | Digital | Alta |
Todas las variables se hacen de tipo factor con la finalidad de conocer su frecuencia.
datos <- f_convertir_factor(datos)
f_summary_factores(datos)
## segmento canal region producto frecuencia
## Frecuente :210 App :307 Centro :309 Alimentos :165 Alta :299
## Nuevo : 98 Telefono: 32 Norte :246 Hogar :260 Baja :334
## Ocasional :260 Tienda :294 Occidente:179 Moda :256 Media:367
## Premium :155 Web :367 Sur :266 Servicios :126
## Promocional:166 Tecnologia:193
## Riesgo :111
## satisfaccion pago respromocion
## Alta :309 Digital :269 Alta :370
## Baja :216 Efectivo :252 Baja :259
## Media:475 Tarjeta :369 Media:371
## Transferencia:110
##
##
resultado_frecuencias <- f_frecuencias(
datos = datos
)
resultado_frecuencias$grafico
Se construye el modelo K-Modes con \(K=3\).
modelo_KModes_K3 <- f_crear_KModes(datos, variables, k = 3, iter_max = 50, semilla = 2026)
modelo_KModes_K3$modas_finales
datos$cluster_KModesK3 <- modelo_KModes_K3$cluster
resultado_visual <- f_visualizar_clusters_categoricos(
datos = datos,
variable_cluster = "cluster_KModesK3",
variables = variables,
ncol = 2,
titulo = "Distribución porcentual de variables categóricas por clúster"
)
resultado_visual$grafico
Los resultados del clustering K-Modes con \(K=3\) se puede interpretar de la siguiente manera:
El clúster 1, son clientes medios o promocionales, con compras por Web, frecuencia media y satisfacción media. Este grupo parece representar clientes con comportamiento intermedio. No son los clientes más leales, pero tampoco parecen completamente inactivos. Presentan una frecuencia de compra principalmente media, usan de forma importante canales como Web, y muestran una respuesta promocional también media. Una posible etiqueta sería: clientes de comportamiento medio o promocional moderado.
El clúster 2, representa a clientes frecuentes o de mayor valor, con alta frecuencia, alta satisfacción y buena respuesta promocional. Este clúster representa a los clientes con mejor perfil comercial. Tienen mayor frecuencia de compra, alta satisfacción y alta respuesta a promociones. Además, aparecen relacionados con segmentos como Frecuente y Premium. Una posible etiqueta sería: clientes frecuentes y satisfechos o clientes de alto valor comercial.
El clúster 3, implica clientes ocasionales o de riesgo, con baja frecuencia, baja satisfacción y menor respuesta promocional. Este grupo muestra características asociadas con clientes menos frecuentes, menor satisfacción y menor respuesta a promociones. También se relaciona con segmentos como Ocasional y Riesgo. Una posible etiqueta sería: clientes ocasionales o en riesgo, o también clientes de bajo compromiso comercial.
Se construye el modelo K-Modes con \(K=4\).
modelo_KModes_K4 <- f_crear_KModes(datos, variables, k = 4, iter_max = 50, semilla = 2026)
modelo_KModes_K4$modas_finales
datos$cluster_KModesK4 <- modelo_KModes_K4$cluster
resultado_visual <- f_visualizar_clusters_categoricos(
datos = datos,
variable_cluster = "cluster_KModesK4",
variables = variables,
ncol = 2,
titulo = "Distribución porcentual de variables categóricas por clúster"
)
resultado_visual$grafico
El clúster 1 refleja clientes medios o promocionales moderados, Web,
frecuencia media, satisfacción media, respuesta promocional media. Este
grupo podría interpretarse como clientes que mantienen cierta actividad
comercial, responden de manera moderada a promociones y tienen una
satisfacción principalmente media. Una etiqueta posible recomendable
sería: clientes de comportamiento medio o clientes activos
moderados.
El clúster 2 representa clientes frecuentes y satisfechos, App, frecuencia alta, satisfacción alta, respuesta promocional alta. Este grupo concentra clientes con alta frecuencia de compra, alta satisfacción y alta respuesta a promociones. Además, utiliza de manera importante canales digitales como la App y métodos de pago como tarjeta. Una etiqueta adecuada sería: clientes frecuentes y satisfechos, también podría llamarse clientes de alto valor comercial.
El clúster 3 describe clientes ocasionales o en riesgo, Tienda, baja frecuencia, baja satisfacción, baja respuesta promocional. Este clíuster, muestra baja frecuencia de compra, menor satisfacción y baja respuesta promocional. Además, se relaciona con clientes ocasionales y con compras más presenciales. Una etiqueta posible sería clientes ocasionales o de bajo compromiso o clientes en riesgo comercial.
El clúster 4 son clientes digitales de alto valor o premium, Web, App, frecuencia media-alta, satisfacción media/alta, segmento premium o promocional. Este grupo o clúster parece integrar clientes con comportamiento digital, buena respuesta a promociones y consumo asociado a tecnología. Puede representar un segmento comercial interesante, distinto del clúster 2. Una etiqueta posible sería clientes digitales promocionales o clientes tecnológicos con respuesta promocional alta.
Se ejecuta la función f_evaluar_costo_KModes() que calcula el costo de disimilitud entre ambos modelos.
resultado_costo <- f_evaluar_costo_KModes(
modelos = list(
"K-Modes K=3" = modelo_KModes_K3,
"K-Modes K=4" = modelo_KModes_K4
)
)
resultado_costo$tabla_costos
resultado_costo$grafico
El modelo K-Modes con \(K=4\) presenta un menor costo total que el modelo con \(K=3\). El costo disminuye de 3690 a 3404, lo que representa una reducción absoluta de 286 unidades y una mejora porcentual de 7.75%. Esto indica que el modelo con cuatro clústeres logra una mayor homogeneidad interna, ya que los clientes presentan menor disimilitud respecto a las modas de sus respectivos grupos. Además, si el cuarto clúster puede interpretarse como un segmento empresarial diferenciado, por ejemplo clientes digitales, promocionales o tecnológicos, entonces el modelo con K=4 resulta más conveniente. No obstante, si se busca una segmentación más simple y fácil de comunicar, el modelo con K=3 también puede ser aceptable.
La pregunta importante es: ¿La reducción de 7.75% justifica agregar un cuarto clúster? sí justificable si el cuarto clúster tiene una interpretación empresarial adecuada dentro del contexto.
El caso de eatudio cumple con el objetivo establecido al inicio. Se implementó el modelo de clustering K-Modes para \(K=3\) y \(K=4\) clústeres.
La visualización de las variables categóricas por clúster permite interpretar los perfiles identificados por el modelo K-Modes.
Con \(K=3\) se observa que el clúster 2 concentra clientes con mayor frecuencia de compra, alta satisfacción y alta respuesta a promociones, por lo que puede interpretarse como un grupo de clientes frecuentes o de alto valor comercial. El clúster 3 presenta mayor presencia de baja frecuencia, menor satisfacción y menor respuesta promocional, por lo que puede asociarse con clientes ocasionales o en riesgo. Por su parte, el clúster 1 muestra un comportamiento intermedio, con frecuencia media, satisfacción media y respuesta promocional moderada. Estos resultados muestran que K-Modes permite construir segmentos de clientes interpretables a partir de variables categóricas.
Con \(K=4\) se observa que el clúster 2 concentra clientes con alta frecuencia de compra, alta satisfacción y alta respuesta a promociones, por lo que puede interpretarse como un grupo de clientes frecuentes y satisfechos. El clúster 3 agrupa clientes con baja frecuencia, menor satisfacción y menor respuesta promocional, lo que sugiere un perfil de clientes ocasionales o en riesgo. El clúster 1 presenta un comportamiento intermedio, asociado con frecuencia media, satisfacción media y respuesta promocional moderada. Finalmente, el clúster 4 parece representar un segmento más específico de clientes digitales o promocionales, con presencia relevante en canales como Web o App, consumo de productos tecnológicos y respuesta favorable a promociones.
El modelo con \(K=4\) permite una segmentación más rica que el modelo con \(K=3\), ya que además de distinguir clientes de alto, medio y bajo compromiso, identifica un cuarto grupo con características digitales y promocionales. No obstante, la elección entre \(K=3\) y \(K=4\) debe apoyarse tanto en la interpretación de los perfiles como en el costo del modelo y la utilidad práctica de los segmentos para la toma de decisiones empresariales.
Con respecto a una comparaciópn de costos de disimilitud el modelo con \(K=4\) presenta una mejora porcentual de 7.75% con respecto a el modelo con \(K=3\).