Introducción

A lo largo de este proyecto se desarrollará un análisis estadístico sobre la base denominada Consumers_spending_data, la cual contiene datos que representan los gastos en distintas categorías de alimentos. Dicho análisis constará principalmente de una regresión lineal simple y múltiple, regresión logística, análisis de componentes principales (ACP), análisis de conglomerados a través de k-medias y clusterización jerárquica y la construcción de árboles de proyección binarios. Obviamente teniendo un análisis previo de cómo está constituida la base.

Es importante resaltar que el análisis se hizo a partir de los conocimientos adquiridos a lo largo del curso así como de algunas herramientas adquiridas con anterioridad a lo largo de la carrera y usando el software R.

Análisis preliminar de los datos

Con este análisis se busca comprender la estructura de nuestra base de datos, para poder interpretar correctamente los métodos que utilizaremos a continuación. Iniciaremos aclarando a que se refiere cada una de las variables así como el tipo de estas.

  1. FRESH: gasto anual en producto frescos (continua);
  2. MILK: gasto anual en productos lácteos (continua);
  3. GROCERY: gasto anual en productos de abarrotes/almacén (continua);
  4. FROZEN: gasto anual en productos congelados (continua)
  5. DETERGENTS_PAPER: gasto anual en producto detergentes y de papel (continua)
  6. DELICATESSEN: gasto anual en productos del área de carnes (continua);
  7. CHANNEL: Canal de consumo - Horeca (Hotel/Restaurant/Café) o al por menor (Categórica 1 y 2)
  8. REGION: Región del consumidor – Lisnon, Oporto u otro (Categórica 1, 2 y 3)

Una vez que ya sabemos a que hace referencia cada una de las variables continuaremos con un analisis estadistico de como esta conformada la base en cada una de las variables que la conforman. El cual se incluye a continuación.

##  Channel Region      Fresh             Milk          Grocery     
##  1:298   1: 77   Min.   :     3   Min.   :   55   Min.   :    3  
##  2:142   2: 47   1st Qu.:  3128   1st Qu.: 1533   1st Qu.: 2153  
##          3:316   Median :  8504   Median : 3627   Median : 4756  
##                  Mean   : 12000   Mean   : 5796   Mean   : 7951  
##                  3rd Qu.: 16934   3rd Qu.: 7190   3rd Qu.:10656  
##                  Max.   :112151   Max.   :73498   Max.   :92780  
##      Frozen        Detergents_Paper    Delicassen     
##  Min.   :   25.0   Min.   :    3.0   Min.   :    3.0  
##  1st Qu.:  742.2   1st Qu.:  256.8   1st Qu.:  408.2  
##  Median : 1526.0   Median :  816.5   Median :  965.5  
##  Mean   : 3071.9   Mean   : 2881.5   Mean   : 1524.9  
##  3rd Qu.: 3554.2   3rd Qu.: 3922.0   3rd Qu.: 1820.2  
##  Max.   :60869.0   Max.   :40827.0   Max.   :47943.0

En conclusión podemos decir que se registraron prácticamente el doble de compras hechas por un Hotel, Restaurant o Café que por una persona para su consumo personal, lo cual era de esperarse pues una persona no requiere tantos insumos como lo hace un Hotel, un Restaurante o un Café. Además podemos deducir que la variable Región no es una variable de suma importancia pues la mayoría de las observaciones se encuentras en otro estado sin especificar este, es decir no logra aporta mucho a un análisis sobre qué características debe tener un estado para que influya en la compra de nuestros productos.

Datos atípicos

Ahora bien, hagamos una análisis más profundo para detectar posibles datos atípicos y tratarlos, esto es importante hacerlo pues no hacerlo podría ocasionar que los métodos siguientes no cumplan su objetivo y sean pobres en cuanto a su poder de predicción o de concatenación.

Primero veremos cómo se comportan los boxplot de cada variable, esto nos dará una idea de cuáles son las variables con observaciones atípicas.

Podemos notar que en todos los casos el valor máximo que toma la variable está bastante lejos del resto de las observaciones, por lo que serán las primeras observaciones que quitaremos y después de esto veremos cómo se comportan las variables. Al hacer esto notamos que en general los boxplot mejoraron considerablemente al quitar únicamente 5 observaciones (pues una observación era el máximo de dos variables), por lo que se hará un procedimiento análogo hasta el punto que se borren máximo el 5% de nuestros datos, es decir borrar a lo más 22 observaciones.

Al concluir lo anterior nuestra base tiene un total de 421 observaciones que representa el 95.6818 de nuestra base original. Pero con esto tendremos un ajuste de todos los modelos siguientes mejor a tomar todos los datos atípicos.

Correlaciones

Continuando con este análisis preliminar, y una vez que eliminamos las observaciones atípicas de cada variable, debemos quitar aquellas variables que estén muy correlacionadas entre sí, antes no se hace pues puede ser que sólo esten altamente correlacionadas por los datos atípicos. Entonces visualizamos las correlacines a continuación. Es importante aclarar que las correlaciones estan calculadas con la base escalada, lo que nos asegura que dichas correlaciones no se vean afectadas por los diferentes tipos de escalas de las variables.

## corrplot 0.84 loaded

Podemos observar que las variables con correlaciones más altas son Detergents_Paper, Grocery y Milk, pero realmente dos de ellas estan correlacionadas entre sí, por lo que únicamente quitaremos Grocery que es la que tiene las mayores correlaciones y Milk por la misma razón.

Information Value

Ahora bien, veremos cuáles de las variables son las más importantes para describir la variable Channel que es la que se busca explicar en los métodos predictivos siguientes. Para ello utilizaremos la librería Information la cual nos brindara los Information Values (IV) de cada variable. Debemos considerar que en esta librería se considera que si una variable tiene un IV menor a 0.15 su valor predictivo es bajo, si el IV está entre 0.15 y 0.4 es moderado y si es mayor a .4 el poder predictivo es alto.

##           Variable         IV
## 5          Grocery 2.81503596
## 4             Milk 2.20191702
## 7 Detergents_Paper 1.71811912
## 6           Frozen 0.39415723
## 8       Delicassen 0.23716917
## 3            Fresh 0.22066440
## 2           Region 0.04306761
## 1          Channel 0.00000000

Entonces, respecto a lo anterior podemos notar que las variables Milk y Grocery tienen un IV bastante alto, tan así que podrian considerarse sospechosas, y si recordamos el análisis de correlaciones anterior podemos decir que dicho nivel de IV se debe a que estas variables estan altamente correlacionadas con otras variables, por lo que es preferible no considerarlas.

Por otra parte, vemos que la variable Detergents_Paper será de gran importancia para interpretar el modelo, y así mismo que podemos considerar que Frozen también tendrá un poder predictivo alto, por su parte Delicassen y Fresh tienen un poder predictivo moderado, pero Region tiene prácticamente un poder predictivo nulo, por lo que se recomienda utilizar únicamente las primeras cuatro variables mencionadas.

Metodologias y resultados

A continuación se dará una breve explicación de cada modelo utilizado así como un resumen de los resultados que obtuvimos con cada uno de estos.

Análisis de Componentes Proncipales (ACP)

Análisis de componentes Principales (Principal Component Analysis) es un método estadístico que tiene por objeto transformar un conjunto de variables, a las que se denomina variables originales, en un nuevo conjunto de variables denominadas Componentes Principales. Esto lo hace estudiando las relaciones que se presentan entre las p variables originales transformándolas en otro conjunto de nuevas variables no correlacionadas entre sí, es decir, que no tenga repetición o redundancia en la información.

Las nuevas variables son combinaciones lineales de las anteriores y se van construyendo según el orden de importancia en cuanto a la variabilidad total que recogen de la muestra.

De modo ideal, se buscan m<p variables que sean combinaciones lineales de las p originales y que no estén correlacionadas, recogiendo la mayor parte de la información o variabilidad de los datos, por lo que si las variables originales no están correlacionadas, entonces no tiene sentido realizar un análisis de componentes principales.

Ahora que ya tenemos una breve indroducción del modelo y sabemos para que sirve, veammos que sucede cuando lo usamos en nuestra base.

Como primer paso vamos a correr la funcón prcomp() que es la que nos ayudará a calcular los componentes principales, además es importante mencionar que debemos calcular dichos componentes considerando la base escalada, pues el proceso de ACP identifica aquellas direcciones en las que la varianza es mayor. Como la varianza de una variable se mide en su misma escala elevada al cuadrado, si antes de calcular las componentes no se estandarizan todas las variables para que tengan media 0 y desviación estándar 1, aquellas variables cuya escala sea mayor dominarán al resto. Así mismo es importate resaltar que por las misma razones para este análisis solo pueden entrar las variables numericas.

Primero analizaremos como se encuentran las medias de nuestras variables.

  ACP<-prcomp(base1.1, scale=TRUE) 
  ACP$center
##            Fresh             Milk          Grocery           Frozen 
##        10876.299         5051.986         7075.789         2607.722 
## Detergents_Paper       Delicassen 
##         2506.917         1265.739

Se puede ver claramente que los productos Fresh son los que en promedio se compran mucho más, pues son casi el doble que productos Milk, y casí cinco veces más que los productos Frozen, Detergents_Papper y Delicassen.

Ahora veremos que sucede con la desviación estándar entre las variables.

  ACP$scale
##            Fresh             Milk          Grocery           Frozen 
##        10211.807         4901.346         6990.202         3004.070 
## Detergents_Paper       Delicassen 
##         3517.887         1244.915

Como podemos notar, las varianzas entre variables no son excesivamente diferentes, a excepción de Fresh que es donde la varianza si es más grande. Es importante aclarar que tanto las medias anteriores y las varianzas están es la escala original de cada variable y no estandarizada.

Ahora sí, podemos continuar con nuestro ACP. Para ello veremos cómo está conformada cada uno de nuestros componentes.

  ACP$rotation
##                         PC1          PC2          PC3         PC4         PC5
## Fresh            -0.1656438  0.569193200 -0.593138780  0.54334790 -0.00065452
## Milk              0.5256986  0.167425438  0.046850863  0.02424956 -0.81886750
## Grocery           0.5671189  0.002093931  0.007478093  0.23361835  0.23437040
## Frozen           -0.1286966  0.576536801  0.775944918  0.20378513  0.08612666
## Detergents_Paper  0.5506652 -0.091615937  0.038021239  0.25983152  0.46094450
## Delicassen        0.2340605  0.554251997 -0.205910983 -0.73523240  0.23374876
##                           PC6
## Fresh             0.039246192
## Milk              0.149273745
## Grocery          -0.754194177
## Frozen            0.002409229
## Detergents_Paper  0.637923599
## Delicassen        0.020393795

Aquí lo que tenemos es que cantidad de cada variable tiene cada componente, por ejemplo, el primer componente está conformado de la siguiente manera.

\(PC1 = -0.1656438*Fresh + 0.5256986*Milk + 0.5671189*Grocery -0.1286966*Frozen + 0.5506652*Detergents_Paper + 0.2340605*Delicassen\)

Por lo que podemos decir que las variables que tienen más peso en este primer componente son Milk, Grocery y Detergents_Paper.

Análogamente podemos ver como se constituye cada componente.

Ahora bien, como podemos ver, tenemos el mismo número de componentes que de variables, el siguiente paso es ver cuántos de estos componentes son realmente necesarios para describir la mayor cantidad de la información original. Para esto, veremos el resumen del ACP, en lo que debemos fijarnos principalmente es en la Proporción de varianza de cada PC y en la proporción acumulada de varianza hasta ese PC.

  summary(ACP)
## Importance of components:
##                           PC1    PC2    PC3    PC4     PC5     PC6
## Standard deviation     1.6608 1.1717 0.8805 0.8366 0.53903 0.32114
## Proportion of Variance 0.4597 0.2288 0.1292 0.1167 0.04843 0.01719
## Cumulative Proportion  0.4597 0.6885 0.8177 0.9344 0.98281 1.00000

Entonces, podemos decir que para nuestro modelo lo ideal sería quedarnos con 4 componentes, pues hasta ese punto se ha acumulado el 93.44% de la varianza total y después de este PC la varianza que proporciona cada PC es mínima, es decir, hasta este punto se tendría el mejor modelo con menos variables y mejor varianza acumulada.

Ahora bien, para decidir si usaremos estos componentes para los análisis siguientes o las variables debemos ver que, si quitamos las variables más correlacionadas nos quedamos con cuatro variables, y cuatro son el número de componentes recomendables, entonces en este caso, conviene utilizar las variables no correlacionadas para tener una mejor interpretación de modelos.

Regresión Lineal Multiple

La Regresión Lineal es una de las maneras de análisis predictivo mas básicas y comúnmente usadas. La idea principal de la regresión se puede dividir en 2, la primer es si un conjunto de variables predictoras redicen de buena manera una variable dependiente y la segunda es: ¿Qué variables son particularmente buenas predictoras de la variable dependiente y cuál es su impacto sobre la misma?

Estos valores estimados se utilizan para explicar la relación entre un variable dependiente y un conjunto de independientes, esta tienen la forma \(y_i = \beta _0 + \sum_{i=1} ^n \beta_i X_i + \epsilon_i\) en donde \(y_i\) es la variable dependiente, \(\beta_i\) son los parámetros que miden la influencia de las variables independientes \(X_i\)

Para la realización de este modelo, primero modificaremos la variable Channel para que en vez de ser valores 1 y 2 sean 0 y 1 respectivamente (esto no afectara a la interpretación de un modelo y de igual manera nos servirá más adelante). de igual manera, se tomara Región como una variable categórica en lugar de numérica.

Una vez realizado este cambio, procedemos a realizar un modelo lineal considerando todas las variables explicativas.

## 
## Call:
## lm(formula = Channel ~ ., data = train_RLM)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.6282 -0.2310 -0.1292  0.2882  0.8564 
## 
## Coefficients:
##                    Estimate Std. Error t value Pr(>|t|)   
## (Intercept)       1.490e-01  5.106e-02   2.919  0.00376 **
## Region2           1.398e-01  7.384e-02   1.894  0.05914 . 
## Region3           8.621e-02  5.099e-02   1.691  0.09186 . 
## Fresh            -4.862e-06  1.643e-06  -2.959  0.00331 **
## Milk              1.041e-05  4.045e-06   2.574  0.01051 * 
## Grocery           5.955e-06  6.359e-06   0.937  0.34972   
## Frozen           -1.397e-05  4.643e-06  -3.010  0.00282 **
## Detergents_Paper  3.552e-05  1.237e-05   2.871  0.00437 **
## Delicassen        6.624e-07  7.915e-06   0.084  0.93336   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.3532 on 321 degrees of freedom
## Multiple R-squared:  0.4655, Adjusted R-squared:  0.4522 
## F-statistic: 34.95 on 8 and 321 DF,  p-value: < 2.2e-16

Podemos observar que una gran parte de las variables explican hasta cierto punto la variable Channel, pero ¿Qué tan bueno es en realidad este modelo? Observando los datos anteriores podemos notar que tiene una \(R^2\) (tanto normal como ajustada) relativamente pequeña. Lo siguiente será analizar los plot obtenidos con este modelo

De la gráfica Residuals vs Fitted se esperaría obtener una línea horizontal, lo cual nos indicara que se puede cumplir el supuesto de linealidad De la gráfica Normal Q-Q podemos concluir que no se cumple que los errores se distribuyan normal. De la gráfica Scale - Location podemos concluir que no se cumple la homocedasticidad o igualdad de varianza de los residuos Por ultimo, la gráfica Residuals vs. Leverage nos ayuda a identificar datos relevantes o atípicos en nuestro modelo

Por mencionado acerca de las gráficas podemos concluir en que no tiene caso que se realicen pruebas para verificar supuestos, pues visualmente no se cumplen

Modelos Lineales Generalizados

Dado que la variable que se quiere explicar originalmente tomaba valores 1 y 2, y se haya modificado para que tome valores 1 y 0 siendo de esta forma una variable binaria, se le puede aplicar una regresión logística binaria.

La regresión logística pertenece a un grupo conocido como Modelos Lineales Generalizados (GLM), estos amplían el modelo lineal general, de manera que la variable dependiente está relacionada linealmente con los factores y las covariables mediante una determinada función de enlace.

En la regresión logística, la variable dependiente es dicotómica o binaria por naturaleza, además de ser necesarias un mínimo de dos variables predictoras las cuales pueden ser continuas o categóricas.

En la realización de este modelo empezaremos utilizando todas las variables predictoras, y, ayudándonos de la función stepAIC intentaremos reducir el número de estas logrando un modelo que prediga mejor la variable Channel.

## 
## Call:
## glm(formula = Channel ~ ., family = "binomial", data = train_GLM)
## 
## Deviance Residuals: 
##      Min        1Q    Median        3Q       Max  
## -3.15888  -0.24579  -0.13361   0.03295   3.13320  
## 
## Coefficients:
##                    Estimate Std. Error z value Pr(>|z|)    
## (Intercept)      -5.085e+00  8.743e-01  -5.816 6.02e-09 ***
## Region2           1.898e+00  1.015e+00   1.871   0.0614 .  
## Region3           1.262e+00  7.400e-01   1.705   0.0882 .  
## Fresh            -7.784e-06  2.213e-05  -0.352   0.7250    
## Milk              1.405e-04  7.590e-05   1.851   0.0642 .  
## Grocery           1.592e-04  9.361e-05   1.701   0.0889 .  
## Frozen           -2.300e-04  1.344e-04  -1.711   0.0870 .  
## Detergents_Paper  9.466e-04  2.007e-04   4.715 2.41e-06 ***
## Delicassen       -3.255e-04  1.702e-04  -1.913   0.0558 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 426.69  on 329  degrees of freedom
## Residual deviance: 121.06  on 321  degrees of freedom
## AIC: 139.06
## 
## Number of Fisher Scoring iterations: 8

Analizando el summary del modelo, podemos ver que, basándonos en los \(p-value\) que son pocas las variables predictoras que influyen en este modelo. De igual manera, analizando los valores tanto de la devianza nula como de la residual, se puede concluir que el modelo describe mejor a la variable si se meten todas las covariables a si se toma solo el intercepto.

Ahora procederemos a realizar un stepAIC, esto con la finalidad de encontrar un modelo que explique la variable esperada y con la menor cantidad de covariables posibles.

## 
## Call:
## glm(formula = Channel ~ Region + Milk + Grocery + Frozen + Detergents_Paper + 
##     Delicassen, family = "binomial", data = train_GLM)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -3.1681  -0.2442  -0.1298   0.0337   3.1691  
## 
## Coefficients:
##                    Estimate Std. Error z value Pr(>|z|)    
## (Intercept)      -5.072e+00  8.714e-01  -5.821 5.85e-09 ***
## Region2           1.828e+00  9.926e-01   1.842   0.0655 .  
## Region3           1.211e+00  7.232e-01   1.675   0.0939 .  
## Milk              1.350e-04  7.396e-05   1.826   0.0679 .  
## Grocery           1.584e-04  9.367e-05   1.691   0.0908 .  
## Frozen           -2.533e-04  1.198e-04  -2.115   0.0344 *  
## Detergents_Paper  9.586e-04  1.980e-04   4.841 1.29e-06 ***
## Delicassen       -3.321e-04  1.681e-04  -1.975   0.0482 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 426.69  on 329  degrees of freedom
## Residual deviance: 121.18  on 322  degrees of freedom
## AIC: 137.18
## 
## Number of Fisher Scoring iterations: 8

Podemos notar que después de aplicar esta función, efectivamente se ve una reducción en el número de variables predictoras, siendo estas “Region, Milk, Grocery, Frozen, Detergents_Paper y Delicassen”. Analizando de igual manera las devianzas, se puede concluir que aunque la devianza residual haya aumentado, el modelo sigue teniendo un buen ajuste.

Como siguiente paso, se realizan predicciones, esto con la finalidad de evaluar el desempeño del modelo.

prob_GLM <- predict(mod_log, newdata =  prueba_GLM, type = "response")
predicted.classes <- ifelse(prob_GLM > 0.5, "1", "0")
head(prob_GLM)
##          1          3          5          7          8          9 
## 0.66934977 0.21445454 0.04740044 0.59465144 0.55226764 0.24986602

Para medir la precisión del modelo se debe analizar la proporción de observaciones que fueron clasificadas correctamente.

  100*mean(predicted.classes == prueba_GLM$Channel)
## [1] 88.18182

Se puede observar que la precisión del modelo es aproximadamente un \(90\%\) lo cual nos indica que es un buen modelo pues tiene un margen de mala predicción de aproximadamente el \(10\%\) .

Árboles de decisión

Los árboles de decisión son un tipo de algoritmo que puede utilizarse tanto en regresión como en problemas de clasificación. Este algoritmo funciona tanto para variables categóricas como continuas. Cuentan con los siguientes elementos: .- Nodo base : representa el total de la muestra que posteriormente se divide en dos o más conjuntos homogéneos creando Sub-Nodos. .- Nodo de Decisión: son aquellos Sub-Nodos que se separa en más Sub-Nodos. .- Nodo Terminal u Hoja: Son aquellos nodos que ya no se separan. .- Una Sub Sección entera de un árbol se conoce como Rama.

De igual manera existen diferentes tipos de árboles de decisión: .- Árboles de Regresión: Este tipo de árboles se realizan cuando la variable a explicar es continua. .- Árboles de Clasificación: Este tipo de árboles se realizan cuando la variable a explicar es categórica.

Para la variable Channel, al ser categorica, se utilizara un Árbol de Clasificación Primero realizaremos un arbol que contenga todas las variables

De este árbol se puede ver que una de las variables que más influyen para identificar el canal de consumo es “Detergents_Paper” eso es fácilmente explicado dado el hecho de que el consumo de estos productos no es el mismo para hoteles/cafés/restaurantes que para los que lo adquieren al por menor. Este hecho se ve reflejado de igual manera en las otras variables que se toman en cuenta, siendo Fresh y Milk, pues se consumen a diferente escala dependiendo del canal de consumo.

Se debe de revisar que tan bueno es nuestro árbol explicando los datos

pred_arb <- predict(tree, newdata = prueba_GLM, type = "class") 
100*mean(pred_arb==prueba_GLM$Channel)
## [1] 90.90909

Podemos observar que explica los datos en un \(90%\) lo cual es muy bueno.

k-medias

El algoritmo de K-medias es uno de los algoritmos de clusterización más simples. El procedimiento aproxima por etapas sucesivas un cierto número (fijo pero arbitrario) de clusters haciendo uso de los centroides de los puntos que deben representar.

El algoritmo se compone de los siguientes pasos:

  1. Sitúa K puntos en el espacio en el que “viven” los objetos que se quieren clasificar. Estos puntos representan los centroides iniciales de los grupos.
  2. Asigna cada objeto al grupo que tiene el centroide más cercano.
  3. Tras haber asignado todos los objetos, recalcula las posiciones de los K centroides.
  4. Repite los pasos 2 y 3 hasta que los centroides se mantengan estables. Esto produce una clasificación de los objetos en grupos que permite dar una métrica entre ellos.

Sin embargo, la cantidad óptima de centroides k a utilizar no necesariamente se conoce de antemano, por lo que es necesario aplicar una técnica conocida como el Método del Codo a fin de determinar dicho valor. Este método utiliza los valores de la inercia obtenidos tras aplicar el K-means a diferente número de Clusters (desde 1 a N Clusters), siendo la inercia la suma de las distancias al cuadrado de cada objeto del Cluster a su centroide. Por lo que al representarlo de manera lineal lo que se busca es el punto en el que se observa ese cambio brusco en la inercia.

Ahora que ya sabemos un poco del modelo de k-medias, apliquémoslo a nuestros datos, es importante resaltar que aquí vamos a desarrollar únicamente un resumen del modelo de tal manera que nos permita hacer una comparación entre k-medias y clusterización jerárquica para que después podamos elegir cuál de las dos metodologías es la que nos ayuda a clusterizar nuestra información.

Una vez aclarado lo anterior veamos los resultados de esta metodología. Como primer paso, como ya se mencionó se debe hacer la elección del número de k-medias, para esto, a continuación se presenta la gráfica de codo con ayuda de la librería factoextra y la función fviz_nbclust().

## Loading required package: ggplot2
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa

Como podemos ver en esta gráfica de codo el número idóneo de k-medias puede ir desde 4 hasta 6 aproximadamente pues son en los que se observa que al agregar otro cluster ya no aportan tando al modelo, sin embargo, seguimos sin poder elegir cual de este número de clusters es el mejor para nuestro modelo, para esto se analizaran los diferentes casos iniciando con 6. Veamos la cantidad de clusters en cada caso.

set.seed(2345)
clus1 <- kmeans(basek, 6)
set.seed(2345)
clus2<- kmeans(basek, 5)
set.seed(2345)
clus3<- kmeans(basek, 4)
clus1$size
## [1]  37  70  21  64 185  44

Vemos que en el caso de 6 clusters se presenta un conglomerado con únicamente 17 de las 421 observaciones, por lo que al menos que este núemero permanezca constante se recomienda bajar el númeo de clusters. Si permanece constante no se recomienda por que quiere decir que son observaciones más alejadas del resto y que es conveniente que permanezcan en un cluster separado, pero de no ser así no tiene sentido conservarlo.

clus2$size
## [1]  60  36  43  68 214

Sin embargo, podemos observar que el número antes mencionado ya no figura entre las opciones por lo que se puede deducir que efectivamente no se trataba de observaciones atípicas si no que la clusterización las estaba seprando sólo porque necesitaba un centro más, sin embargo lo anterior aún es una deducción y no una afimación.

Veamos que sucede con cuatro clusters.

clus3$size
## [1]  85 213  47  76

Hasta ahora podemos dedudcir que hay una gran masa de datos muy similares que siempre permanece en el mismo cluster, pues en todas las clusterizaciones anteriores se presenta un cluster con más de la mitad de las observaciones, sin embargo aquí unicamente notamos una subdivisión de uno de los clusters, por lo que es recomendable estudiar los casos casos más a detalle, para esto se incluyen gráficos de como se comporta cada variable considerando los tres números de clusters.

En las gráficas anteriores podemos notar que para cada variables la primera gráfica (que representa 4 clusters-4c) tiene un comportamiento bastante bueno, pues se ve claramente que separa a la perfección las primeras barras de la densidad, sin embargo en la cola derecha se ve tiene cierto problema en el ajuste, pues las observaciones pertenecen a lo que se observa como el primer clúster en presentarse (de color rojo), viendo esto, uno esperaría que la clusterización mejorara si aumentamos el número de clusters, sin embargo notamos que esto no sucede así, pues al contrario de lo que se espera en la segurnda gráfica de cada variable (5 clusters-5c) las observaciones ya no se ven tan bien separa ni en los primeros casos, cuando se consideran 6 clusters la separación se ve aún más mal, es decir, lo que se está haciendo al aumentar el número de clusters es únicamente subdividir unas observaciones que ya estaban conglomerados en el correcto, pero siguen dejando fuera los más extremos, lo que implica un problema con las observaciones atípicas.

Sin embargo, ya no podemos hacer más con esas observaciones atípicas pues como ya se explicó en la primera parte de este documento, ya se quitó el 5% de las observaciones totales intentando quitar dichas observaciones lejanas, quitar más podría traer problemas de confiabilidad en la base, pues realmente ya no representarían nuestros datos originales. Es por esto que se tomó la decisión de utilizar únicamente 4 clusters.

Una vez que ya se tomó la decisión del número idóneo de k-medias, continuaremos para ver como se ve nuestro análisis para ver como se ve nuestra clusterización.

set.seed(2345)
clus <- kmeans(basek, 4)
fviz_cluster(clus, data = basek,  axes=c(2,3))

Como vemos la imagen no es muy ilustrativa pues nos presenta únicamente en dos dimensiones las cuatro que en este caso se están considerando, para ver mejor como se distribuyen las observaciones entre cada clúster hagamos lo siguiente. Primero mostraremos el número de observaciones por clúster, seguido de los centroides de cada clúster.

clus$size
## [1]  85 213  47  76
clus$centers
##        Fresh      Frozen Detergents_Paper Delicassen
## 1  1.4155063 -0.05753128       -0.3814587  0.5010046
## 2 -0.4187640 -0.34454481       -0.3526408 -0.3953258
## 3  0.2655269  2.30243015       -0.5576975  0.2200146
## 4 -0.5736984 -0.39389494        1.7598455  0.4115568

Como vemos el número de observaciones por clúster no es insignificante, pues el que tiene menos observaciones es el clúster 3 quedándose con poco más del 11% de la base actual, sin embargo sí podemos notar que la mayor parte de la base se encuentra concentrada en el clúster 1, pues este clúster contiene a casi el 51% de la base.

El siguiente paso será ver que tanto ayudan las diferentes variables para la separación de nuestros clusters, esto es importante pues así sabremos que variables son las que tienen mayor peso en la clusterización y al ingresar una nueva observación se podrá deducir a que clúster pertenece.

En esta primera gráfica podemos notar que la variable Fresh sí tiene efecto al momento de hacer los clusters, pues las observaciones que están en cada clúster toman diferentes valores en la variable Fresh y la media de dichas observaciones dentro de cada clúster es considerablemente diferente.

Por otro lado, vemos que la variable Frozen también tiene un impacto en la clusterización, aunque probablemente menor al de la variable anterior, pues tal vez considerando esta gráfica podríamos decir que es conveniente tomar únicamente 3 clusters.

Ahora bien, como podemos notar en la gráfica anterior la variable Detergents_Paper realmente no nos ayudó en la clusterización actual, prácticamente 3 de los 4 conglomerados tienen la misma media.

Finalmente podemos observar que la variable Delicassen también tiene un impacto, aunque menor, en la clusterización, pues sus medias no son tan diferentes entre sí. Por lo que podemos concluir que la variable que tiene más peso en este método es la variable Fresh. Veamos que sucede con el siguiente método para poder decidir cuál de ellos es mejor para clusterizar nuestros datos.

Clusterización Jerárquica

Los llamados métodos jerárquicos tienen por objetivo agrupar clusters para formar uno nuevo, de tal forma que, si sucesivamente se va efectuando este proceso de aglomeración, se minimice alguna distancia o bien se maximice alguna medida de similitud.

El algoritmo de clúster jerárquico agrupa los datos basándose en la distancia entre cada uno y buscando que los datos que están dentro de un clúster sean los más similares entre sí. Entonces, al inicio cada punto o dato está en un clúster separado. A cada paso, los dos clusters más cercanos se fusionan. Estas fusiones de clusters se siguen produciendo de forma sucesiva produciendo una jerarquía de resultados de clustering. Al final del proceso solo queda un único clúster que aglutina todos los elementos, esta forma de separación se ilustra es un dendrograma.

Es impórtate resaltar que tanto k-medias como clusterización jerárquica son algoritmos de aprendizaje no supervisado, los cuales buscan patrones en los datos sin hacer una predicción específica como objetivo (no hay variable dependiente).

Siguiendo el mismo razonamiento que es el caso anterior mostraremos nuestros resultados. En este caso primero calculamos la distancia (por metodo camberra pues después de hacer multiples análisis demostro ser la distancia que nos ayudaba más en esta clusterización) y posteriormente con ayuda de la función hclust() creamos los clusters jerárquicos, usaremos el método ward.D2 (que se eligió tambés de análisis con la base, aunque con 9 clusters se recoeminda el método ward.D).

basec<-base[-c(1,2,4,5)]
basec<-scale(basec)
distan<-dist(basec, method = "canberra")
clusters <- hclust(distan, method = "ward.D2")
plot(clusters)
rect.hclust(clusters, k=4, border = "red")

Como podemos cer en el dendrograma elegir 4 clusters parece (como en el caso anterior) puede ser una buena idea, para ver como se desarrollan los clusters.

##   1   2   3   4 
##  91 129  98 103

Podemos notar que el número de clusters en este caso es bastante diferente a lo que sucede en k-medias, pues aquí la distribución de las observaciones entre los clusters es más equitativa que en k-medias.

Ahora bien, al igual que en k-medias veremos el que tanto ayudan nuestras variables a la clusterización, para que así tomemos la decisión de que método es el mejor

Vemos que esta variable si ayuda a nuestra clusterización.

De manera muy similar a como ocurre en k-medias Frozen ayuda a la separación de nuestros datos pero no de manera rigurosa.

En este caso la variable Detergnt_Paper muestra un poco más aportación en esta separación que en k-medias.

Finalemente en la variable Delicassen podemos notar que si se ve cierta aportación a la clusterización.

Como podemos ver en las gráficas anteriores, el comportamiento de las variables respecto a los clusters se comporta de manera similar en ambos métodos, es por ello que para poder analizarlo de una forma más sencilla se incluyen los siguiente graficos donde notaremos si con alguno de los dos métodos la clsuterización divide nuestros datos.

por k-medias fue mucho mejor que la clusterización por clusters jerárquicos considerando 4 clusters, pero incluso parece que la clusterización jerárquica realmente no está ayudando, así que se decidió hacer más pruebas con esta clusterización y llegamos a la conclusión que se necesitan aproximadamente 9 clusters para que la densidad se vea representada por los clusters, de manera a similar a k-medias con 4 clusters, lo cual nos parece lógico pues este método se basa en la diferencia entre observaciones, pero realmente lo que se busca es hacer que nuestros datos se agrupen de manera óptima, y considerar tantas particiones lo creemos innecesario si se tiene otro método que con únicamente 4 clusters lo hace aceptablemente bien. Es por esto que se decide tomar el método de k-medias para clusterizar nuestros datos, siendo 4 el número de clusters.

A continuación se presenta la partición de las densidades de las variables al considerar 9 clusters por clusterización jerárquica

En las gráficas anteriores podemos ver que la clusterización jerárquica mejora considerablemente, e incluso de puede notar que en las observaciones más alejadas se tiene una mejor clusterización, pero al representar un porcentaje mínimo de los datos, seguimos firmes en nuestra decisión de utilizar k-medias.

Conclusiones

En general con los análisis que se hicieron anteriormente podemos concluir de forma concisa lo siguiente.

  1. El Análisis de Componentes Principales no es de gran utilidad en nuestro caso pues para representar nuestros datos nos pide el mismo nivel de componentes que si utilizamos nuestras variables no correlacionadas.

  2. Para predecir nuestra variable independiente los dos métodos que se recomiendan son Regresión logística y árboles de decisión, ambos métodos se ve que se ajustan bastante bien a nuestra base.

  3. Para métodos de clusterización se recomienda utilizar el método de k-medias, pues es el que ayuda de una mejor manera a clisterizar nuestros datos.