DEFINICION Y EJEMPLO

¿Que es CALARA?

clarase describe completamente en el capítulo 3 de Kaufman y Rousseeuw (1990). En comparación con otros métodos de particionamiento como pam, puede manejar conjuntos de datos mucho más grandes. Internamente, esto se logra considerando subconjuntos de datos de tamaño fijo ( sampsize) de modo que los requisitos de tiempo y almacenamiento se vuelvan lineales en n en lugar de cuadráticos.
Cada subconjunto de datos se divide en kgrupos utilizando el mismo algoritmo que en pam. Una vez kque se han seleccionado objetos representativos del subconjunto de datos, cada observación de todo el conjunto de datos se asigna al medoide más cercano.La media (equivalente a la suma) de las diferencias de las observaciones con su medoide más cercano se usa como una medida de la calidad de la agrupación. Se retiene el subconjunto de datos para el cual la media (o suma) es mínima. Un análisis adicional se lleva a cabo en la partición final.
Cada subconjunto de datos se ve obligado a contener los medoides obtenidos del mejor subconjunto de datos hasta entonces. Las observaciones dibujadas al azar se agregan a este conjunto hasta que sampsizese haya alcanzado.

APLICACION DE CLARA

Para ello tomamos una base de datos disponible la cual se llama clientes.csv y aplicaremos alli el metodo de clara.

#TRABAJAMOS CON LA BASE DE DATOS CLIENTES
clientes<-read.csv("https://raw.githubusercontent.com/VictorGuevaraP/Mineria-de-datos-2019-2/master/clientes.csv", sep=";")

summary(clientes)
##    ID_cliente         edad         educacion      años_empleo    
##  Min.   :  1.0   Min.   :20.00   Min.   :1.000   Min.   : 0.000  
##  1st Qu.:213.2   1st Qu.:29.00   1st Qu.:1.000   1st Qu.: 3.000  
##  Median :425.5   Median :34.00   Median :1.000   Median : 7.000  
##  Mean   :425.5   Mean   :35.03   Mean   :1.711   Mean   : 8.566  
##  3rd Qu.:637.8   3rd Qu.:41.00   3rd Qu.:2.000   3rd Qu.:13.000  
##  Max.   :850.0   Max.   :56.00   Max.   :5.000   Max.   :33.000  
##                                                                  
##     Ingreso       Tarjeta_credito    otra_tarjeta      Direccion  
##  Min.   : 13.00   Min.   : 0.0120   Min.   : 0.046   NBA001 : 71  
##  1st Qu.: 24.00   1st Qu.: 0.3825   1st Qu.: 1.046   NBA002 : 71  
##  Median : 35.00   Median : 0.8850   Median : 2.003   NBA000 : 60  
##  Mean   : 46.68   Mean   : 1.5768   Mean   : 3.079   NBA004 : 58  
##  3rd Qu.: 55.75   3rd Qu.: 1.8985   3rd Qu.: 3.903   NBA003 : 55  
##  Max.   :446.00   Max.   :20.5610   Max.   :35.197   NBA006 : 50  
##                                                      (Other):485  
##  Ratio.ingreso.deuda
##  Min.   : 0.10      
##  1st Qu.: 5.10      
##  Median : 8.70      
##  Mean   :10.17      
##  3rd Qu.:13.80      
##  Max.   :41.30      
## 

EJEMPLO

La muestra es determinado a criterio del investigador, en este caso on esta base de datos disponemos de 850 filas disponibles de la cuales determinamos nuestra muestra y lo dividimos en 2 grupos respectivamente.

  #MUESTRA
set.seed(1234)
muestra=sample(510,340)
#grupo1
grupo1=clientes[-muestra,]
#grupo2
grupo2=clientes[muestra,]
dim(grupo1)
## [1] 510   9
dim(grupo2)
## [1] 340   9

Después de haber definido nuestros grupos de datos, determinamos y analizamos nuestra columna objetivo que deseamos determinar

grupo1<-grupo1$Ratio.ingreso.deuda
grupo2<-grupo2$Ratio.ingreso.deuda
sd(grupo2)
## [1] 6.477698
summary(grupo1)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    0.40    5.40    9.00   10.48   13.88   41.30
summary(grupo2)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   0.100   4.800   8.200   9.714  13.800  32.500

Luego de haber hallado los valores desarrollamos lo siguiente.

set.seed(1234)
grupo_1 <- cbind(rnorm(n = 340, mean = 10.443, sd = 6.716126),
                 rnorm(n = 340, mean = 10.443, sd = 6.716126))
grupo_2 <- cbind(rnorm(n = 510, mean = 9.764, sd = 6.713698),
                 rnorm(n = 510, mean = 9.764, sd = 6.713698))
clientes <- rbind(grupo_1, grupo_2)
colnames(clientes) <- c("x", "y")
head(clientes)
##              x        y
## [1,]  2.336194 10.08018
## [2,] 12.306250 12.66027
## [3,] 17.726244 16.85908
## [4,] -5.311001 18.12598
## [5,] 13.325055 11.11812
## [6,] 13.841735 18.26443
La función clara() del paquete cluster permite aplicar el algoritmo CLARA. Entre sus argumentos destaca: una matriz numérica x donde cada fila es una observación, el número de clusters k, la medida de distancia empleada metric (euclídea o manhattan), si los datos se tienen que estandarizar stand, el número de partes samples en las que se divide el set de datos (recomendable 50) y si se utiliza el algoritmo PAM pamLike.
library(cluster)
library(factoextra)
## Loading required package: ggplot2
## Welcome! Related Books: `Practical Guide To Cluster Analysis in R` at https://goo.gl/13EFCZ
clara_clusters <- clara(x = clientes, k = 2, metric = "manhattan", stand = TRUE,
                        samples = 50, pamLike = TRUE)
clara_clusters
## Call:     clara(x = clientes, k = 2, metric = "manhattan", stand = TRUE,      samples = 50, pamLike = TRUE) 
## Medoids:
##              x         y
## [1,]  6.364651  8.842981
## [2,] 15.149215 10.329626
## Objective function:   1.60106
## Clustering vector:    int [1:850] 1 2 2 1 2 2 1 1 1 1 1 1 1 1 2 1 1 1 ...
## Cluster sizes:            469 381 
## Best sample:
##  [1]  38  50  54  80  98 189 204 217 244 258 267 278 292 314 328 329 338 346 364
## [20] 428 443 461 479 486 492 516 557 568 573 577 596 602 634 646 668 671 730 732
## [39] 777 787 792 797 805 846
## 
## Available components:
##  [1] "sample"     "medoids"    "i.med"      "clustering" "objective" 
##  [6] "clusinfo"   "diss"       "call"       "silinfo"    "data"

fviz_cluster(object = clara_clusters, ellipse.type = "t", geom = "point",
             pointsize = 2.5) +
  theme_bw() +
  labs(title = "Resultados clustering CLARA") +
  theme(legend.position = "none")