Introducción

Se presenta un análisis sobre los K-Means para los datos de Zara trabajados durante todo el módulo. El objetivo que se toma principal para el segmentar el análisis son las variables Price y Sales Volume y se busca generar al final estrategias empresariales.

Para este análisis y el informe se va a realizar usando la plataforma RStudio.

El análisis se estructura en varias secciones, comenzando con la preparación de los datos, seguido por la evaluación de la tendencia de agrupación, la determinación del número óptimo de grupos, la creación de clústeres con K-means, y finalmente, la interpretación de los resultados y propuestas de decisiones empresariales basadas en los clústeres identificados.

1. Preparación de los Datos

Para realizar el análisis de clúster, se siguieron los siguientes pasos:

Carga de Paquetes y Datos

Se cargaron las siguientes librerías que fueron las ultilizadas para realizar el Script: cluster, factoextra, flexclust, FeatureImpCluster, tidyverse, y gtsummary. Luego, se importa el archivo CSV que contiene la base de datos zara

library(cluster)
library(factoextra)
library(flexclust)
library(FeatureImpCluster)
library(tidyverse)
library(gtsummary)

zara <- read.csv("C:/Users/juan_/Downloads/zara(2).csv", sep=";")

head(zara)
##   Product.ID Product.Position Promotion Product.Category Seasonal Sales.Volume
## 1     185102            Aisle        No         Clothing       No         2823
## 2     188771            Aisle        No         Clothing       No          654
## 3     180176          End-cap       Yes         Clothing      Yes         2220
## 4     112917            Aisle       Yes         Clothing      Yes         1568
## 5     192936          End-cap        No         Clothing      Yes         2942
## 6     117590          End-cap        No         Clothing       No         2968
##   brand                                                                 url
## 1  Zara       https://www.zara.com/us/en/basic-puffer-jacket-p06985450.html
## 2  Zara             https://www.zara.com/us/en/tuxedo-jacket-p08896675.html
## 3  Zara      https://www.zara.com/us/en/slim-fit-suit-jacket-p01564520.html
## 4  Zara       https://www.zara.com/us/en/stretch-suit-jacket-p01564300.html
## 5  Zara       https://www.zara.com/us/en/double-faced-jacket-p08281477.html
## 6  Zara https://www.zara.com/us/en/contrasting-collar-jacket-p06987331.html
##                sku                      name
## 1  272145190-250-2       BASIC PUFFER JACKET
## 2 324052738-800-46             TUXEDO JACKET
## 3 335342680-800-44      SLIM FIT SUIT JACKET
## 4 328303236-420-44       STRETCH SUIT JACKET
## 5  312368260-800-2       DOUBLE FACED JACKET
## 6  320298385-807-2 CONTRASTING COLLAR JACKET
##                                                                                                                                                                                              description
## 1          Puffer jacket made of tear-resistant ripstop fabric. High collar and adjustable long sleeves with adhesive straps. Welt pockets at hip. Adjustable hem with side elastics. Front zip closure.
## 2                               Straight fit blazer. Pointed lapel collar and long sleeves with buttoned cuffs. Welt pockets at hip and interior pocket. Central back vent at hem. Front button closure.
## 3                              Slim fit jacket. Notched lapel collar. Long sleeves with buttoned cuffs. Welt pocket at chest and flap pockets at hip. Interior pocket. Back vents. Front button closure.
## 4 Slim fit jacket made of viscose blend fabric. Notched lapel collar. Long sleeves with buttoned cuffs. Welt pocket at chest and flap pockets at hip. Interior pocket. Back vents. Front button closure.
## 5                                                             Jacket made of faux leather faux shearling with fleece interior. Tabbed lapel collar. Long sleeves. Zip pockets at hip. Front zip closure.
## 6                                             Relaxed fit jacket. Contrasting lapel collar and long sleeves with buttoned cuffs. Front pouch pockets. Interior pocket. Washed effect. Front zip closure.
##    price currency                 scraped_at   terms section
## 1  19.99      USD 2024-02-19T08:50:05.654618 jackets     MAN
## 2 169.00      USD 2024-02-19T08:50:06.590930 jackets     MAN
## 3 129.00      USD 2024-02-19T08:50:07.301419 jackets     MAN
## 4 129.00      USD 2024-02-19T08:50:07.882922 jackets     MAN
## 5 139.00      USD 2024-02-19T08:50:08.453847 jackets     MAN
## 6  79.90      USD 2024-02-19T08:50:09.140497 jackets     MAN

Selección y Estandarización de Variables

Una vez cargado los datos se seleccionaron las variables price y Sales.Volume para el analisis cluster y donde se reflejo que los rangos y escalas son muy diferentes, por este motivo se aplica una estandarización (scale()) para asegurar que tengan una media de cero y evitar tener picos.

zaraparacluster <- zara %>% 
  select("price","Sales.Volume")

summary(zaraparacluster)
##      price         Sales.Volume 
##  Min.   :  7.99   Min.   : 529  
##  1st Qu.: 49.90   1st Qu.:1243  
##  Median : 79.90   Median :1840  
##  Mean   : 86.25   Mean   :1824  
##  3rd Qu.:109.00   3rd Qu.:2399  
##  Max.   :439.00   Max.   :2989
zara_std <- scale(zaraparacluster)
summary(zara_std)
##      price          Sales.Volume     
##  Min.   :-1.5026   Min.   :-1.85566  
##  1st Qu.:-0.6980   1st Qu.:-0.83231  
##  Median :-0.1220   Median : 0.02264  
##  Mean   : 0.0000   Mean   : 0.00000  
##  3rd Qu.: 0.4368   3rd Qu.: 0.82420  
##  Max.   : 6.7728   Max.   : 1.67019

2. Evaluación de la Tendencia de Agrupación

Antes de aplicar los K-means, se evalúa si los datos tienden a generar Clusters.

Estadístico de Hopkins

get_clust_tendency(zara_std, n = 50, graph = FALSE)$hopkins_stat
## [1] 0.8356497

Al generar el codigo de Hopkins, este nos da un valor de 0.8356, lo que nos indica que los datos tienen una tendencia fuerte a la agrupacion, debido que para considerar esto los valores deben estar lejos del 0.5 y cerca al 1.

Gráfico VAT (Visual Assessment of Tendency)

dist_matrix <- dist(zara_std)
fviz_dist(dist_matrix, show_labels = FALSE) +
  labs(title = "Gráfico VAT - Tendencia de Agrupación")

El gráfico VAT lo que nos muestra es la tendencia fuerte a la agrupacion de parte de los clusters, debido a que la diagonal tiene reflejado los puntos bien oscuros y nuestro estadistico de Hopkins nos otorgo un 0.8656.

3. Determinación del Número Óptimo de Grupos (K)

Para encontrar el numero de clusters se utilizó el método “gap statistic” mediante fviz_nbclust

fviz_nbclust(zara_std, kmeans, method = "gap_stat")

fviz_nbclust(zara_std, kmeans) # Para ver el gráfico sin el método específico

Al realizar el grafico se encuentra que el numero optimo utilizando el gap_stat viene siendo en el punto 1 que es el mas alto, pero al correr nuevamente la funcion sin el Gap logran encontrar que el numero optimo de clusters es igual a 3.

4. Creación de los Clústeres con K-means

Se aplica el algoritmo K-means a los datos estandarizados, fijando el número de clústeres en 3 y la semilla aleatoria para reproducibilidad de los resultados.

set.seed(123) 
zara_km <- kmeans(zara_std, centers = 3)
zara_km
## K-means clustering with 3 clusters of sizes 113, 102, 37
## 
## Cluster means:
##       price Sales.Volume
## 1 -0.176978   -0.8809730
## 2 -0.389661    0.8573553
## 3  1.614701    0.3270191
## 
## Clustering vector:
##   [1] 2 1 3 3 3 2 1 3 3 1 3 3 3 3 2 2 2 3 3 1 1 1 3 2 3 1 1 2 2 3 3 3 3 2 2 1 1
##  [38] 1 3 1 2 1 3 1 2 1 2 1 1 2 1 1 3 1 1 2 3 1 2 2 3 1 1 1 1 1 2 3 2 2 1 1 3 2
##  [75] 1 1 1 2 2 2 2 2 1 2 1 1 2 3 3 1 2 1 1 1 1 1 2 2 2 3 3 1 1 3 3 2 1 2 1 2 1
## [112] 2 2 1 2 1 2 2 1 2 1 1 2 2 2 2 1 2 1 2 2 2 1 2 1 1 1 2 1 2 2 2 2 2 1 1 2 2
## [149] 2 2 2 2 2 1 1 1 2 1 1 1 2 2 1 1 1 2 1 1 2 3 1 1 1 2 2 1 1 2 2 2 1 2 1 2 2
## [186] 2 2 1 1 2 1 2 1 1 1 1 1 2 1 1 1 1 1 1 2 1 2 1 1 1 1 2 2 2 1 1 1 2 2 1 1 2
## [223] 1 1 2 1 2 2 1 2 2 3 3 2 1 3 2 2 1 1 1 2 1 3 1 2 2 3 3 2 1 2
## 
## Within cluster sum of squares by cluster:
## [1] 79.99610 54.77731 85.09787
##  (between_SS / total_SS =  56.2 %)
## 
## Available components:
## 
## [1] "cluster"      "centers"      "totss"        "withinss"     "tot.withinss"
## [6] "betweenss"    "size"         "iter"         "ifault"

Interpretación de los Clústeres

Ahora haremos un analisis de la informacion que tenemos sobre los 3 Cluster en cuanto a las variables de Precio y Sales.Volume

  • Clúster 1 (113 productos): Porductos de baja demanda y un precio medio o o moderado

    • Características: price: -0.176978 esta un poco mas abajo de la mediana de precios, Sales.Volume: -0.8809730 Entre los 3 clusters es el que tiene el peor rendimiento.

    • Análisis: Este Cluster agrupa un grupo de productos que tiene un precio levemente inferior a la media de precios pero nos muestra que sus ventas no son las optimas y termina siendo la de peor rendimiento entre nuestros 3 clusters, estoe puede estar con productos de temporadas anteriores ques eha quedado a traves del tiempo y tiene ya una rotaion baja.

  • Clúster 2 (102 productos): Productos Estrellas o de alto rendimiento y Precio Accesible o economico

    • Características: price: -0.389661 Esta muy por debajo de la mediana de precios, Sales.Volume: 0.8573553 Ventas muy superiores en cuanto a la mediana de ventas.

    • Análisis: Este grupo nos muestra que son los productos de mas alto rendimiento en cuanto a al volumen de ventas y un precio muy economico, por otro lado pueden ser productos de lanzamientos y al ser Zara una tienda de moda rapida, estos son los de mayor venta por temporada.

  • Clúster 3 (37 productos): “Productos Premium / Alto Precio y Ventas Moderadas”

    • Características: price: 1.614701 (significativamente por encima del promedio), Sales.Volume: 0.3270191 (ligeramente por encima del promedio).

    • Análisis: Estte grupo lo podemos ver como el grupo que tiene mayor precio o considerar como productos premium aunque sea el grupo mas pequeño entre los 3 en cuanto a unidades, pero tiene una buena proporcion en ventas.

Varianza Explicada

El porcentaje de la varianza indica que el 56.2% de la varianza total en los datos para los 3 clústeres. Esto sugiere que los clústeres están razonablemente bien separados y que la segmentación es efectiva para capturar la estructura subyacente de los datos.

5. Visualización de los Resultados de los Clústeres

En este punto presentamos los graficos del analisis realizado en el punto 4 sobre los clusters, el primer Barplots que se muestra, se muestra por separada los 3 clusters y sus variables Price y Sales.Volume.

El segundo Barplots se muestra por separado las variables Price y Sales.Volume. En la cual se ve el mayor precio lo tiene el Cluster 3 y mayor voumen de ventas el Cluster 2

Barplots de Medias de Clúster (flexclust)

set.seed(123)
cl_kcca <- as.kcca(zara_km, zara_std) 
barplot(cl_kcca)  

barplot(cl_kcca, bycluster=FALSE)

.

Visualización del Clústering (factoextra)

fviz_cluster(zara_km, data = zara_std,
             geom = "point",
             ellipse.type = "convex", 
             ggtheme = theme_bw(),
             main = "Visualización de Clústeres K-Means")

Este grafico de dispercion nos muestra como quedan acomodados los 3 clusters, donde se muestra que el mas disperso y con menos untegrante es el el cluster 3 de color azul, por el lado del cluster 2 quien tiene el color verde, muestra qye es el mas integrante stiene con un mayor volumen de ventas y con menor precio, y por el lado del cluster 1 que tiene el color rojo, podemos observar que tiene la mayoria de sus ventas por debajo de cero aunque tenga mejor precio que losconsiderados premium del cluster 3

6. Análisis de la Importancia de las Variables

importance <- FeatureImpCluster(cl_kcca, as.data.table(zara_std))
plot(importance)

El gráfico muestra que Sales.Volume es la variable más importante; es la que más contribuye a diferenciar y formar los tres clústeres identificados en el análisis. debido a que es el la variable que se encuentra mas al lado derecho.

7. Asignación de Clústeres a los Datos Originales

Se hace la asignacion de cluesteres a los datos originales.

zara$cluster <- zara_km$cluster
head(zaraparacluster) # Muestra el subset, pero la asignación es a 'zara'
##    price Sales.Volume
## 1  19.99         2823
## 2 169.00          654
## 3 129.00         2220
## 4 129.00         1568
## 5 139.00         2942
## 6  79.90         2968

8. Análisis de las Características de Cada Clúster con Otras Variables

Parah acer el analisis de las ccaracteristicas de los clústeres, se utilizan las variables originales del dataframe zara (terms, Product.Position, Promotion, Seasonal, Section).

Resumen Estadístico por Clúster (gtsummary)

tbl_summary(data = zara, 
            include = c("terms", "Product.Position", "Promotion", "Seasonal", "section"),
            by = cluster,
            percent = "column") %>% 
  add_overall()
Characteristic Overall
N = 252
1
1
N = 113
1
2
N = 102
1
3
N = 37
1
terms



    jackets 140 (56%) 57 (50%) 51 (50%) 32 (86%)
    jeans 8 (3.2%) 6 (5.3%) 2 (2.0%) 0 (0%)
    shoes 31 (12%) 14 (12%) 17 (17%) 0 (0%)
    sweaters 41 (16%) 21 (19%) 18 (18%) 2 (5.4%)
    t-shirts 32 (13%) 15 (13%) 14 (14%) 3 (8.1%)
Product.Position



    Aisle 97 (38%) 43 (38%) 35 (34%) 19 (51%)
    End-cap 86 (34%) 44 (39%) 34 (33%) 8 (22%)
    Front of Store 69 (27%) 26 (23%) 33 (32%) 10 (27%)
Promotion 120 (48%) 49 (43%) 45 (44%) 26 (70%)
Seasonal 128 (51%) 61 (54%) 45 (44%) 22 (59%)
section



    MAN 218 (87%) 96 (85%) 86 (84%) 36 (97%)
    WOMAN 34 (13%) 17 (15%) 16 (16%) 1 (2.7%)
1 n (%)

Segun la tabla podemos analisis los 3 clusteres:

  • Cluster 1 que es el que peor volumen de ventas maneja se puede deber a que la el porcentaje mas alto de sus productos estan en la parte de atras de la tienda y por otro lado los cluesters 2 y 3 su mayoria de productos s e encuentran en el pasillo.

  • Como podemos observar a pesar de que el cluster 3 tenga los precios mas alto es el cluster con mas porcentaje de participacion de sus productos en promocion, lo que genera que sus productos sean mas llamativos al ser de una linea premium.

Gráfico de Barras de ‘terms’ por Clúster (ggplot2)

ggplot(zara, aes(x = factor(cluster), fill = terms)) +
  geom_bar(position = "dodge") +
  labs(title = "Distribución de Tipos de Producto (Terms) por Clúster",
       x = "Clúster",
       y = "Conteo de Productos",
       fill = "Tipo de Producto") +
  theme_minimal()

Al tener la base de datos, es razonable que la mayoria de productos por cluster correspondan a las Jackets y al no tener casi unidades de Jeans no tengamos ninguna referencia de precio alto, por lo tal no tenemos ninguno presente en el cluster 3.

9. Interpretación Detallada de los Clústeres y Toma de Decisiones Empresariales

La segmentacion de datos realziada para estos 3 clusteres nos permite ofrecer y tomar las siguientes decisiones empresariales:

  • Para dar la propuesta tenemos que traer presente el analisis realizado en el punto 4 donde interpretamos y le dimos un nombre a cada uno de los 3 Clusteres obtenidos,

Propuestas de Decisiones Empresariales:

Estrategias de Marketing y Precios:

  • Clúster 1 (Baja Demanda - Precios medios) :

    • Marketing: Las campañas deben enfocarse en la liquidación del stock existente. Utilizar tácticas de urgencia (últimas unidades, ventas flash). Evaluar la posibilidad de bundles (paquetes o ventas cruzadas) con productos más atractivos. Investigar el por qué de su bajo rendimiento (diseño, calidad percibida, falta de relevancia).

    • Precios: Realizar descuentos agresivos en los precios (ej., descuentos del 50% o más) para poder liberar el inventario siempre y cuando sean de colecciones anterioreres y necesitemos liberar el cpaital.

  • Clúster 2 (Productos Estrella - precios economicos):

    • Marketing: Mantener las campañas y estrategias de marketing BTL o digital que nos ofrecen rendimientos altos, en este caso asumimos que son producots de temporada y debemos utilizar alguno de estos productos como ganchos para atraer mayores ventas tanto en tienda fisica como venta digitall en otros productos de poca rotacion.

    • Precios: Mantener el nivel de precios que se tiene en esta categoria de productos, sin exceder los descuentos otorgaods y no afectar la persepcion del consumidor en caso de ser productos de ultima coleccion, por otor lado se puede ofreer descuentos en el segundo item comprado de colecciones anteriores para mover el inventario.

  • Clúster 3 (Productos Premium - precios altos):

    • Marketing: Las campañas deben ser exclusivas y enfocadas en la calidad, el diseño, o la edición limitada al ser productos considerados premium. Dirigirse a un nicho de mercado dispuesto a pagar más. Utilizar canales aspiracionales y de estilo de vida, como colaboraciones con diseñadores o influencers de moda de alta gama.

    • Precios: Mantener precios premium. Las promociones deben ser de valor añadido (ej., envío express gratuito, servicios de personalización, acceso a eventos VIP) en lugar de descuentos directos que puedan devaluar la percepción de la marca y nos permita seguir vendiendo un estilo .

Promociones y Estacionalidad:

  • Clúster 1 (Baja Demanda): Productos de alata prioridad para generar promociones agresivas en la cual se oferten descuentos altos o estrategias de 2x1. 3x2 Si son estacionales y su temporada pasó, se debe priorizar terminar el stock lo mas pronto posible.

  • Clúster 2 (Productos Estrella): Promociones moderadas que no afecten el margen y promociones de lanzamiento si son de nueva temporada (ej. compra uno y el segundo a mitad de precio). Si son estacionales, asegurar que las promociones coincidan en el momento de lanzamiento que deberia generar su pico de ventas.

  • Clúster 3 (Productos Premium): Promociones muy selectivas, basadas en valor añadido, no en descuentos directos. Si son estacionales, el lanzamiento y retiro de colecciones deben ser cuidadosamente planificada para maximizar las ventas durante su perioro de comercializacion, generrando un perspeccion de oportunidad de compra de parte del nicho que tiene la capacidad de compra

Optimización de Inventarios:

  • Clúster 1 (Baja Demanda): Reducir drasticamente y de manera apresurada el inventario presente de productos de temporadas anteriores, tener en cuenta que Zara es una tienda de moda rapida, y losinventarios anteriores se debe liquidar rapido con descuentos altos. incluso si se tiene perdidas.

  • Clúster 2 (Productos Estrella): Al ser productos de alta rotacion en este caso de temporada o puede que sea de temporada, la planificacion del inventario es vital, se debe garantizar durante su temporada el suministro de estos productos en las tiendas tanto para venta fidica como para venta virtual.

  • Clúster 3 (Productos Premium): Tener bajos inventarios al ser productos premium la rotacion no sera la mas alta, pero se debe garantizar su sumistros en las tiendas.

10. Limitaciones del Análisis y Posibles Mejoras

Limitaciones:

  • Variables cconsideradas: El análisis se centró exclusivamente en price y Sales.Volume. Aunque estas son variables fundamentales para la rentabilidad y el rendimiento, no nos muestra la realidad de la venta d elos productos, un producto puede ser potencial estrella pero su ubicacion en la tienda le pueed estar perjudicando.

  • Determinación del Número de Clústeres (K): La elección de K=3 se basó principalmente en el método de la silueta. al seleccionar los cluster nos podemos basar en que es la seleccion adecuada aunque , en el caso de tener un error en esta seleccion nos puede distorsionar los analisis y estrategias de negocios erroneas que se pueden presentar.

  • Geolocalizacion Tenemos los clusteres, pero no podemos saber que nos esta afectando a estos, es decir sin tener la ubicacion de las tiendas, no podemos identificar como los consumidores reaccionan frente los tipos de estrategias comerciales enfocadas en su lugar de origien, se debe logra obtener la ubicacion de la tienda la vairable cultural es vital para poder aterrizar bien las estrategias de marketing o para la coleccion de productos que se van a tener.

  • Variable de temporada o tiempo A pesar de tener de tener una variable seasonal, no tenemos una que nos explique tipo de temporada es, esto puede afectarnos a la generacion de la estrategia, debido a que cada region en el mismo periodo de tiempo puede tener una temporada diferente y esto afectar el comportamiento de nuestras ventas, o un mismo inviernos se puede considerar diferente el impacto en un pais a otro.

Posibles Mejoras:

  • Determinación Robusta de K: En lugar de depender de un solo indicador, se podría emplear un enfoque de consenso utilizando el paquete NbClust de R, que evalúa múltiples índices de validación de clústeres simultáneamente para recomendar el número de grupos más estable.

  • Ampliar la ubicacion del estudio Evaluar la aplicación del modelo en distintas geolocalizacion, lo cual puede llevarnos a optneer diferetentes clusters, y diversos metodos de afrontar lo mercados por temas culturales.

  • Ampliar el dataset Ampliaria la seleccion de los datos, en los cuales podamos indentificar que tipo de tieneda es o si es un o varias, ciudad, fecha de las ventas, esto no spermitira evaluar como reaciona la ventas por semana,meses o dias y hacer comparaciones entre diferentes tiendas

  • Exploración de Algoritmos Alternativos:

    • DBSCAN: Sería interesante aplicar este algoritmo basado en densidad para identificar clústeres de formas no esféricas y, crucialmente, para aislar los productos que no pertenecen a ningún grupo claro (outlers), lo cual podría ser de gran valor para la gestión de inventario.

    • Clustering Jerárquico: Este método permitiría visualizar la estructura de relaciones entre los clústeres a través de un dendrograma, ayudando a entender si ciertos segmentos son, en realidad, sub-segmentos de otros más grandes.

  • Validación Externa: Si se dispone de datos de clientes o de encuestas, validar los clústeres con características externas para confirmar su utilidad empresarial.

11. Consclusion Final.

Tras completar el trabajo analítico, que incluyó la generación de gráficos, la identificación de limitaciones y la propuesta de mejoras, puedo concluir que para realizar un ejercicio de análisis de clústeres o de datos sobre cualquier tema, es fundamental aspirar a conseguir una base de datos lo más clara y completa posible.

Contar con un conjunto de datos robusto nos permite generar una segmentación adecuada, identificar tanto las áreas de oportunidad como las fortalezas, y diferenciar entre sucesos únicos y patrones recurrentes. Esto es clave para poder ofrecer mejoras pertinentes y basadas en evidencia.

El objetivo de estos trabajos es diagnosticar la situación de la empresa o tienda, buscando siempre un beneficio tanto económico como de optimización en sus procesos.

Para finalizar, quisiera agradecer a este módulo por las enseñanzas que me ha brindado y por permitirme experimentar y sacar provecho a herramientas como RStudio. y las IA , que fueron de gran ayuda al momento de codificar y encontrar soluciones a los errores que surgían. Finalmente, extiendo mi gratitud a la profesora por permitirnos descubrir este campo y por demostrarnos la gran funcionalidad que tiene R para desarrollar estudios e informes analíticos.