El conjunto de datos “Wholesale Customers Data”, disponible en el repositorio de Machine Learning de UC Irvine, recoge información sobre el gasto anual de los clientes de un distribuidor mayorista en diversas categorías de productos. Las variables incluyen “Fresh”, “Milk”, “Grocery”, “Frozen”, “Detergents_paper” y “Delicatessen”, que representan el gasto en productos frescos, lácteos, abarrotes, congelados,detergentes y papel, y delicatessen, respectivamente. Además, se incluyen dos variables nominales: “Channel”, que indica el canal de venta (Horeca o Retail), y “Region”, que especifica la región del cliente (Lisbon, Oporto u “Other”). Dado que las variables de gasto son continuas y presentan una alta correlación entre sí, se aplicará un Análisis de Componentes Principales (PCA) a la base de datos. Esta técnica nos permitirá reducir la dimensionalidad de los datos, o la identificación de patrones y estructuras subyacentes, y mejorando la interpretación de las relaciones entre las diferentes categorías de productos. El PCA será fundamental para simplificar la complejidad de la base de datos y proporcionar una visión más clara sobre el comportamiento de los clientes, lo que puede ser útil para estrategias de segmentación y toma de decisiones en el negocio mayorista.
A continuacion una presentacion de los datos:
Data <- read.csv ("Wholesale customers data.csv")
head(Data)
## Channel Region Fresh Milk Grocery Frozen Detergents_Paper Delicassen
## 1 2 3 12669 9656 7561 214 2674 1338
## 2 2 3 7057 9810 9568 1762 3293 1776
## 3 2 3 6353 8808 7684 2405 3516 7844
## 4 1 3 13265 1196 4221 6404 507 1788
## 5 2 3 22615 5410 7198 3915 1777 5185
## 6 2 3 9413 8259 5126 666 1795 1451
Paso 1: Estandarizar de los datos
colMeans(Data)
## Channel Region Fresh Milk
## 1.322727 2.543182 12000.297727 5796.265909
## Grocery Frozen Detergents_Paper Delicassen
## 7951.277273 3071.931818 2881.493182 1524.870455
En el vector de medias podemos observar que la variable 1 y 2 tienen una escala mucho menor que las demás.
Paso 2: Calcular la matriz de covarianza
cov(Data)
## Channel Region Fresh Milk
## Channel 2.190723e-01 0.02247877 -1001.431 1.591511e+03
## Region 2.247877e-02 0.59949783 541.396 1.845044e+02
## Fresh -1.001431e+03 541.39599814 159954927.421 9.381789e+06
## Milk 1.591511e+03 184.50443674 9381788.549 5.446997e+07
## Grocery 2.707890e+03 56.62581280 -1424712.796 5.108319e+07
## Frozen -4.590964e+02 -79.10183268 21236654.585 4.442612e+06
## Detergents_Paper 1.419358e+03 -5.47350901 -6147825.712 2.328834e+07
## Delicassen 7.393256e+01 98.72200766 8727309.970 8.457925e+06
## Grocery Frozen Detergents_Paper Delicassen
## Channel 2.707890e+03 -4.590964e+02 1.419358e+03 7.393256e+01
## Region 5.662581e+01 -7.910183e+01 -5.473509e+00 9.872201e+01
## Fresh -1.424713e+06 2.123665e+07 -6.147826e+06 8.727310e+06
## Milk 5.108319e+07 4.442612e+06 2.328834e+07 8.457925e+06
## Grocery 9.031010e+07 -1.854282e+06 4.189519e+07 5.507291e+06
## Frozen -1.854282e+06 2.356785e+07 -3.044325e+06 5.352342e+06
## Detergents_Paper 4.189519e+07 -3.044325e+06 2.273244e+07 9.316807e+05
## Delicassen 5.507291e+06 5.352342e+06 9.316807e+05 7.952997e+06
Paso 3: Calcular las componentes principales
library(stats)
pca <- prcomp(Data, scale = TRUE)
round (pca$rotation,3)
## PC1 PC2 PC3 PC4 PC5 PC6 PC7 PC8
## Channel -0.428 -0.205 -0.083 -0.030 -0.036 -0.864 0.140 -0.019
## Region -0.025 0.043 -0.983 -0.078 0.133 0.090 -0.023 0.002
## Fresh 0.025 0.513 -0.089 0.798 -0.258 -0.147 -0.027 0.034
## Milk -0.474 0.206 0.026 -0.054 -0.072 0.316 0.789 0.039
## Grocery -0.536 -0.009 0.045 0.122 0.112 0.214 -0.353 -0.716
## Frozen 0.030 0.593 0.122 -0.161 0.754 -0.194 -0.005 0.013
## Detergents_Paper -0.524 -0.121 0.047 0.151 0.177 0.196 -0.371 0.692
## Delicassen -0.165 0.533 -0.001 -0.538 -0.545 -0.055 -0.307 0.076
En PC1, las variables con los mayores pesos son “Grocery” (0.536), “Detergents__Paper” (-0.524), y en menor medida “Channel” (-0.428).
Esto sugiere que la primera componente está principalmente influenciada por las variables relacionadas con productos de supermercado, especialmente “Grocery” y “Detergents_Paper.”
En PC2, “Fresh” tiene un peso alto (0.513) junto con “Delicassen” (0.533) y “Region” (0.595). Esto indica que esta componente está relacionada con productos perecederos y específicos de ciertas regiones, posiblemente reflejando una tendencia o preferencia en ciertos tipos de productos frescos y delicatessen en ciertas áreas geográficas.
En PC3, “Frozen” (0.707) tiene un peso predominante, lo que sugiere que esta componente está relacionada principalmente con productos congelados.
En PC4, se observa que “Milk” (0.659) es la variable dominante, indicando que esta componente puede representar patrones de consumo de productos lácteos.
En particular, las componentes como PC7 y PC8 tienen valores bajos, lo que indica que estas componentes no contribuyen significativamente al análisis y pueden no ser necesarias para representar la mayor parte de la variabilidad en los datos.
Paso 4: Seleccion de las componentes principales
prop_varianza <- pca$sdev^2 / sum(pca$sdev^2)
prop_varianza
## [1] 0.387501229 0.223745880 0.126471735 0.092299037 0.069579050 0.057413544
## [7] 0.035140757 0.007848769
En total, las primeras cuatro componentes (PC1 a PC4) explican aproximadamente el 82.3% de la varianza total en los datos. Esto sugiere que el análisis puede simplificarse utilizando solo estas cuatro componentes, ya que capturan la mayoría de la variabilidad, lo cual es útil para reducir la dimensionalidad sin perder mucha información relevante. Las componentes adicionales (PC5 a PC8) contribuyen cada vez menos a la explicación de la varianza y pueden ser menos útiles para el análisis general.
Paso 5: Transformar los datos al nuevo espacio dimensional
pca$rotation <- -pca$rotation
pca$x <- -pca$x
biplot(pca, scale = 0, cex = 0.5, col = c("blue2","red2"))
Matriz de rotacion:
library(stats)
iris.pca <- prcomp(Data[], scale=T)
iris.pca$rotation
## PC1 PC2 PC3 PC4 PC5
## Channel -0.42829156 -0.20469886 -0.0829798863 -0.02964416 -0.03620585
## Region -0.02472603 0.04312964 -0.9825008891 -0.07784462 0.13250892
## Fresh 0.02531946 0.51344468 -0.0889509074 0.79847592 -0.25811686
## Milk -0.47440995 0.20554061 0.0257510842 -0.05402202 -0.07208576
## Grocery -0.53632914 -0.00871762 0.0453143572 0.12158624 0.11172990
## Frozen 0.02997456 0.59274525 0.1221565222 -0.16131688 0.75421244
## Detergents_Paper -0.52390630 -0.12108309 0.0474814388 0.15101211 0.17650264
## Delicassen -0.16499653 0.53318082 -0.0009301994 -0.53755767 -0.54482721
## PC6 PC7 PC8
## Channel -0.86350670 0.139899044 -0.019335373
## Region 0.08976479 -0.023279938 0.001545045
## Fresh -0.14747474 -0.027173693 0.033851114
## Milk 0.31593256 0.789020414 0.039291347
## Grocery 0.21369889 -0.353064294 -0.715984124
## Frozen -0.19435993 -0.005336793 0.012983225
## Detergents_Paper 0.19575356 -0.371374310 0.691672189
## Delicassen -0.05453289 -0.306582655 0.075642587
Este biplot proporciona una visualización clara de cómo las diferentes variables contribuyen a las dos primeras componentes principales y permite identificar patrones de consumo. La primera componente (PC1) se asocia principalmente con productos de supermercado, mientras que la segunda componente (PC2) se relaciona con productos frescos y congelados. Esto permite entender cómo se agrupan las observaciones y qué variables tienen mayor influencia en cada componente.
summary(iris.pca)
## Importance of components:
## PC1 PC2 PC3 PC4 PC5 PC6 PC7
## Standard deviation 1.7607 1.3379 1.0059 0.8593 0.74608 0.67772 0.53021
## Proportion of Variance 0.3875 0.2238 0.1265 0.0923 0.06958 0.05741 0.03514
## Cumulative Proportion 0.3875 0.6112 0.7377 0.8300 0.89960 0.95701 0.99215
## PC8
## Standard deviation 0.25058
## Proportion of Variance 0.00785
## Cumulative Proportion 1.00000
Porcentaje de varianza y varianza acumulada
library(factoextra)
## Loading required package: ggplot2
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
library(FactoMineR)
pca_w <- PCA(Data, graph = F, scale.unit = T)
round(get_eigenvalue(pca_w),1)
## eigenvalue variance.percent cumulative.variance.percent
## Dim.1 3.1 38.8 38.8
## Dim.2 1.8 22.4 61.1
## Dim.3 1.0 12.6 73.8
## Dim.4 0.7 9.2 83.0
## Dim.5 0.6 7.0 90.0
## Dim.6 0.5 5.7 95.7
## Dim.7 0.3 3.5 99.2
## Dim.8 0.1 0.8 100.0
Visualizacion del porcentaje de varianza acumulada
fviz_eig(pca_w, addlabels=T,main=" ",ylab=" Porcentaje de varianza explicada",
xlab="Dimensiones")
Pc1= 38.8% Pc2= 22.4% Pc3= 12.6% Pc4= 9.2% Pc5= 7% Pc6= 5.7% Pc7= 3.5% Pc8= 0.8%
library(corrplot)
## Warning: package 'corrplot' was built under R version 4.3.3
## corrplot 0.95 loaded
corrplot(get_pca_var(pca_w)$cos2, insig = c("p-value"),sig.level=-1)
Entendemos que como dijimos anteriormente con los primeros cuatro componentes (83%) es suficiente para entender el conjunto de datos.
Se observan agrupaciones de clientes según sus patrones de gasto en categorías de productos. Algunos clientes destacan en el consumo de Fresh y Frozen, indicando un enfoque en productos frescos, mientras que otros muestran un gasto alto en Grocery y Detergents_Paper, reflejando una preferencia por abarrotes y limpieza. La variable Region también influye, ya que ciertas áreas, como Lisbon o Oporto , pueden tener demandas específicas. Estos patrones permiten una segmentación precisa, ayudando al distribuidor mayorista a personalizar sus estrategias comerciales para cada grupo de clientes.
El PCA en este contexto de wholesaling ayuda a identificar patrones de consumo entre distintas categorías de productos, mostrando qué tipos de productos suelen comprarse juntos. Al reducir la dimensionalidad del conjunto de datos, simplifica el análisis al concentrarse en las componentes principales que explican la mayor parte de la variabilidad. Esto permite segmentar el mercado en grupos de consumidores con comportamientos de compra similares. También destaca las categorías de productos más influyentes, ayudando en la toma de decisiones de negocio, como marketing e inventario. Finalmente, los biplots del PCA facilitan la visualización y comunicación de estos patrones complejos de manera clara y efectiva.
CONCLUSION: En conclusión, el análisis de Componentes Principales (PCA) aplicado al conjunto de datos “Wholesale Customers Data” permitió simplificar la estructura de los datos al reducir su dimensionalidad, facilitando la interpretación de los patrones de consumo en distintas categorías de productos. Los primeros cuatro componentes capturaron más del 80% de la variabilidad, revelando agrupaciones de clientes según su gasto en productos frescos, abarrotes, limpieza, y otros. Estas agrupaciones reflejan distintos perfiles de clientes, influenciados en parte por la región geográfica, lo que permite segmentar el mercado de manera más precisa. Así, el PCA no solo facilita una mejor comprensión del comportamiento de los clientes, sino que también apoya la toma de decisiones estratégicas en áreas clave como marketing, gestión de inventarios y personalización de ofertas para cada grupo de clientes.