Clusters de partición

Los clusters de partición son procedimientos de clustering usados para clasificar las visualizaciones en diversos equipos basados en su analogía. Los algoritmos necesitan que un analista especifique el número de clusters que tienen que generarse. Los partitioning clusters mas usados son:

Por todos dichos metodos se poseen: - la iniciativa base y los conceptos matemáticos - el algoritmo de clustering y su utilización en el programa R - secciones de laboratorio de R con varios ejemplos para la investigación y la visualización de clústeres

Se usarán los próximos paquetes de R para calcular y visualizar los partitioning clusters:

K-Means Clustering

Es el algoritmo de aprendizaje automático no supervisado más usado para dividir un grupo de datos dado en un grupo de k clusters, donde k representa el número de equipos preestablecido por el analista. Cataloga los objetos en diversas clusters, de manera que los objetos de un mismo cluster sean lo más parecidos viable, en lo que los objetos de clusters diferentes sean lo más disímiles viable. En este metodo cada cluster está representado por su centro correspondiente a la media de los puntos de vista designados al cluster.

La iniciativa importante del clustering de k-means se apoya en conceptualizar los clusters de manera que se minimice la alteración total dentro del cluster (conocida como alteración total dentro del cluster). Hay diversos algoritmos de k-means. El algoritmo estándar es el de Hartigan-Wong (1979), que define la alteración total dentro del clúster como la suma de las distancias cuadradas euclidianas entre los recursos y el centroide que corresponde:

\[W(C_k)=\sum{x_i \in C_k}(x_i-\mu_k)^2 \]

  • \(x_i\) designa un punto de los datos pertenecientes al cluster \(C_k\)
  • \(\mu_k\) es el valor medio de los puntos asignados al cúlster \(C_k\)

Definimos la variación total dentro de un cúlster así:

\[tot.withinss=\sum_{k=1}^{k}W(C_{k})=\sum_{k=1}^{k}\sum_{x_{i}\epsilon\mathbb{C}_{k}}(x_{i}-\mu_{k})^{2} \]

La suma total de cuadrados dentro del cluster mide la compacidad del cluster y queremos que sea lo más pequeña posible

Algoritmo K- Means

El algoritmo empieza seleccionando aleatoriamente k objetos del grupo de datos para que sirvan como centros iniciales de los clusters. Los objetos seleccionados además son identificados como centros de los clusters. Después, todos los objetos restantes son designados a su centroide más cercano que se define usando la distancia euclidiana entre el objeto y el medio del clúster. Tenga presente que, para usar la distancia de correlación, los datos se introducen como puntuaciones z. Todos los objetos se reasignan otra vez usando los medios de cluster actualizados.

Cálculo del clustering de k-means en R

Utilizaremos el conjunto de datos de demostración “USArrests”. Los datos deben contener sólo variables continuas, ya que el algoritmo k-means utiliza medias variables. Como no queremos que el algoritmo de k-means dependa de una unidad variable arbitraria, empezaremos por escalar los datos utilizando la función de Rcale() como se indica a continuación:

data("USArrests") 
df <-scale(USArrests) 
head(df,n=3)
##             Murder   Assault   UrbanPop         Rape
## Alabama 1.24256408 0.7828393 -0.5209066 -0.003416473
## Alaska  0.50786248 1.1068225 -1.2117642  2.484202941
## Arizona 0.07163341 1.4788032  0.9989801  1.042878388

Paquetes y funciones de R necesarios

La función estándar de R para la agrupación de k-means es kmeans() [statspackage], cuyo formato simplificado es el siguiente:

kmeans(x, centers,iter.max =10,nstart =1)

  • x: matriz numérica
  • centros: Los valores posibles son el número de conglomerados (k) o un conjunto de centros iniciales de conglomerados (distintos).
  • iter.max: El número máximo de iteraciones permitido. El valor por defecto es 10.
  • nstart: El número de particiones iniciales aleatorias cuando los centros son un número Para crear un gráfico de los clusters generados con la función kmeans(), utilizaremos el paquete factoextra.
library(factoextra)
## Warning: package 'factoextra' was built under R version 4.2.2
## Loading required package: ggplot2
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa

Estimación del número óptimo de clusters

El clustering de k-means necesita que los usuarios especifiquen el número de clusters a producir. La iniciativa es calcular el clustering de k-means usando diferentes valores de clusters k. En seguida, se dibuja la suma de cuadrados interior en funcionalidad del número de clusters. La localización de una curva ( knee) en el gráfico se estima principalmente como un indicador del número correcto de clusters. La capacidad de R fviz_nbclust() [in factoextra package] da una solución adecuado para valorar el número óptimo de clusters.

library(factoextra)
fviz_nbclust(df, kmeans,method ="wss")+
  geom_vline(xintercept =4,linetype =2)

el gráfico representa la varianza dentro de los clusters. Disminuye a medida que aumenta k, pero puede verse una curva en k = 4. Esta curva indica que los clusters adicionales más allá del cuarto tienen poco valor. La curva indica que los clusters adicionales más allá del cuarto tienen poco valor.

Cálculo de la agrupación de k-means

Como el algoritmo de clustering de k-means comienza con k centroides seleccionados aleatoriamente, siempre se recomienda utilizar la función set.seed()para establecer una “semilla” para el generador de números aleatorios de R. El objetivo es hacer reproducibles los resultados.

El código R que se muestra a continuación realiza la agrupación de k-means con k = 4:

set.seed(123)
km.res <-kmeans(df,4,nstart =25)

Como el resultado final del clustering de k-means es sensible a las asignaciones iniciales aleatorias, especificamos nstart = 25. Sin embargo se propone encarecidamente calcular el clustering de k-means con un costo enorme de nstart, como 25 o 50, para obtener un resultado más estable.

# visualizar los resultados 
print(km.res)
## K-means clustering with 4 clusters of sizes 8, 13, 16, 13
## 
## Cluster means:
##       Murder    Assault   UrbanPop        Rape
## 1  1.4118898  0.8743346 -0.8145211  0.01927104
## 2 -0.9615407 -1.1066010 -0.9301069 -0.96676331
## 3 -0.4894375 -0.3826001  0.5758298 -0.26165379
## 4  0.6950701  1.0394414  0.7226370  1.27693964
## 
## Clustering vector:
##        Alabama         Alaska        Arizona       Arkansas     California 
##              1              4              4              1              4 
##       Colorado    Connecticut       Delaware        Florida        Georgia 
##              4              3              3              4              1 
##         Hawaii          Idaho       Illinois        Indiana           Iowa 
##              3              2              4              3              2 
##         Kansas       Kentucky      Louisiana          Maine       Maryland 
##              3              2              1              2              4 
##  Massachusetts       Michigan      Minnesota    Mississippi       Missouri 
##              3              4              2              1              4 
##        Montana       Nebraska         Nevada  New Hampshire     New Jersey 
##              2              2              4              2              3 
##     New Mexico       New York North Carolina   North Dakota           Ohio 
##              4              4              1              2              3 
##       Oklahoma         Oregon   Pennsylvania   Rhode Island South Carolina 
##              3              3              3              3              1 
##   South Dakota      Tennessee          Texas           Utah        Vermont 
##              2              1              4              3              2 
##       Virginia     Washington  West Virginia      Wisconsin        Wyoming 
##              3              3              2              2              3 
## 
## Within cluster sum of squares by cluster:
## [1]  8.316061 11.952463 16.212213 19.922437
##  (between_SS / total_SS =  71.2 %)
## 
## Available components:
## 
## [1] "cluster"      "centers"      "totss"        "withinss"     "tot.withinss"
## [6] "betweenss"    "size"         "iter"         "ifault"

Es posible calcular la media de cada una de las variables por clusters utilizando los datos originales:

aggregate(USArrests,by=list(cluster=km.res$cluster), mean)
##   cluster   Murder   Assault UrbanPop     Rape
## 1       1 13.93750 243.62500 53.75000 21.41250
## 2       2  3.60000  78.53846 52.07692 12.17692
## 3       3  5.65625 138.87500 73.87500 18.78125
## 4       4 10.81538 257.38462 76.00000 33.19231

Si se quiere añadir las clasificaciones de puntos a los datos originales, se utiliza esto:

dd <- cbind(USArrests, cluster = km.res$cluster)
head(dd)
##            Murder Assault UrbanPop Rape cluster
## Alabama      13.2     236       58 21.2       1
## Alaska       10.0     263       48 44.5       4
## Arizona       8.1     294       80 31.0       4
## Arkansas      8.8     190       50 19.5       1
## California    9.0     276       91 40.6       4
## Colorado      7.9     204       78 38.7       4

Acceso a los resultados de la función kmeans()

La funcionalidad kmeans()devuelve una lista de elementos, incluyendo:

  • clúster: Un vector de completos (de 1:k) que sugiere el cluster al que se asigna cada punto

  • centros: Una matriz de los centros de los clusters (medias de los clusters)

  • totss: La suma total de cuadrados (TSS), o sea, xi≠̄x)2. La TSS mide la varianza total de los datos.

  • withinss: Vector de la suma de cuadrados dentro del clúster, un elemento por clúster.

  • tot.withinss: Suma total de cuadrados dentro del clúster, o sea, suma (withinss)

  • betweenss: La suma de cuadrados entre clusters, o sea, totss≠tot.withinss

  • tamaño: El número de visualizaciones en cada clúster

Se puede entrar a dichos elementos asi:

km.res$cluster
##        Alabama         Alaska        Arizona       Arkansas     California 
##              1              4              4              1              4 
##       Colorado    Connecticut       Delaware        Florida        Georgia 
##              4              3              3              4              1 
##         Hawaii          Idaho       Illinois        Indiana           Iowa 
##              3              2              4              3              2 
##         Kansas       Kentucky      Louisiana          Maine       Maryland 
##              3              2              1              2              4 
##  Massachusetts       Michigan      Minnesota    Mississippi       Missouri 
##              3              4              2              1              4 
##        Montana       Nebraska         Nevada  New Hampshire     New Jersey 
##              2              2              4              2              3 
##     New Mexico       New York North Carolina   North Dakota           Ohio 
##              4              4              1              2              3 
##       Oklahoma         Oregon   Pennsylvania   Rhode Island South Carolina 
##              3              3              3              3              1 
##   South Dakota      Tennessee          Texas           Utah        Vermont 
##              2              1              4              3              2 
##       Virginia     Washington  West Virginia      Wisconsin        Wyoming 
##              3              3              2              2              3
head(km.res$cluster,4)
##  Alabama   Alaska  Arizona Arkansas 
##        1        4        4        1
# tamaño del cluster 
km.res$size
## [1]  8 13 16 13
# medios de cluster
km.res$centers
##       Murder    Assault   UrbanPop        Rape
## 1  1.4118898  0.8743346 -0.8145211  0.01927104
## 2 -0.9615407 -1.1066010 -0.9301069 -0.96676331
## 3 -0.4894375 -0.3826001  0.5758298 -0.26165379
## 4  0.6950701  1.0394414  0.7226370  1.27693964

Visualización de los clusters de k-means

Es una buena iniciativa dibujar los resultados de los clusters. Dichos tienen la posibilidad de utilizarse para evaluar la votación del número de clusters, así como para equiparar 2 estudio de clusters diferentes.

Si poseemos un grupo de datos multidimensionales, una solución es hacer un Estudio de Elementos Primordiales (ACP) y dibujar los puntos de vista de datos según las coordenadas de ambos primeros elementos primordiales.

En el gráfico resultante, las visualizaciones se representan por medio de puntos de vista, usando elementos primordiales si el número de cambiantes es mayor a 2.

fviz_cluster(km.res,data =df,
             palette =c("#2E9FDF","#00AFBB","#E7B800","#FC4E07"),
             ellipse.type ="euclid",
             star.plot =TRUE,
             repel =TRUE,
             ggtheme =theme_minimal()
             )

Ventajas y desventajas del clustering K-means

El clustering de K-means es un algoritmo bastante sencilla y veloz. Puede intentar con efectividad conjuntos de datos bastante gigantes. No obstante, tiene ciertos puntos de vista débiles, entre ellos:

  1. Implica un entendimiento anterior de los datos y necesita que el analista escoja de antemano el número apropiado de clústeres (k).

  2. os resultados finales conseguidos son propensos a la selección aleatoria inicial de los clustercenters.

  3. Es sensible a los valores atípicos.

  4. Si se reordena los datos, es bastante viable que obtenga una solución distinto cada vez que cambie el orden de sus datos.

Alternativa a los clustering de k-means

Una alternativa robusta a k-means es PAM, que se basa en medoides.

Resumen

El clustering de K-means puede utilizarse para clasificar las observaciones en k grupos, basándose en su similitud. Cada grupo está representado por el valor medio de los puntos del grupo, conocido como el centroide del clúster.

K- Medoids

El algoritmo k-medoids es un enfoque de clustering referente con el clustering k-means para dividir un grupo de datos en k equipos o clusters. En el clustering k-medoids, cada cluster está representado por uno de los puntos de vista de datos del cluster. Dichos puntos de vista se llaman medoides de cluster.

K-medoid es una elección robusta al clustering de k-means. Esto quiere decir que el algoritmo es menos sensible al sonido y a los valores atípicos, comparativamente con k-means, pues usa medoides como centros de conglomerados en vez de medias (utilizadas en k-means).

Concepto PAM

El uso de medias implica que la agrupación de k-means es muy sensible a los valores atípicos. Esto puede afectar gravemente a la asignación de las observaciones a los clusters. El algoritmo PAM ofrece un algoritmo más robusto.

Algoritmo PAM

El algoritmo PAM se fundamenta en la averiguación de k objetos representativos o medoides en medio de las visualizaciones del grupo de datos.

El algoritmo PAM se lleva a cabo en 2 etapas:

  1. Seleccione k objetos para que se conviertan en los medoides, o en caso de que dichos objetos hayan sido proporcionados, utilícelos como medoides;

  2. Calcule la matriz de diferencia si no se ha proporcionado;

  3. Asigna cada objeto a su medoide más cercano;

  4. Para cada cluster se busca si alguno de los objetos del cluster reduce el coeficiente medio de diferencia; si lo hace, se selecciona la entidad que más reduce este coeficiente como el medoid para este cluster;

  5. Si por lo menos un medoide cambió pasar a (3), si no, concluir el algoritmo.

Cálculo de PAM en R

Data

Utilizaremos los conjuntos de datos de demostración “USArrests”, que empezamos a escalar utilizando la función de Rcale()como se indica a continuación:

data("USArrests")
df <-scale(USArrests)
head(df,n=3)
##             Murder   Assault   UrbanPop         Rape
## Alabama 1.24256408 0.7828393 -0.5209066 -0.003416473
## Alaska  0.50786248 1.1068225 -1.2117642  2.484202941
## Arizona 0.07163341 1.4788032  0.9989801  1.042878388

Paquetes y funciones de R necesarios

La función pam() [clusterpackage] y pamk()[fpcpackage] pueden utilizarse para calcular PAM.

La función pamk() no requiere que el usuario decida el número de clusters K.

pam(x, k, metric = “euclidean”, stand = FALSE)

  • x: valores posibles

  • k: El número de clusters

  • metric: la métrica de la distancia a utilizar. Las opciones disponibles son “euclidiana” y “manhattan”.

  • stand: valor lógico; si es verdadero, las variables (columnas) de x se estandarizan antes de calcular las disimilitudes. Se ignora cuando x es una matriz de disimilitud.

library(cluster)
library(factoextra)

Estimación del número óptimo de clusters

Para valorar el número óptimo de clusters, usaremos el procedimiento de la silueta media. La iniciativa es calcular el algoritmo PAM usando diferentes valores de clusters k. En seguida, se dibuja la silueta media de los clusters en funcionalidad del número de clusters. La silueta media mide la calidad de una agrupación.

La capacidad de R fviz_nbclust() [factoextrapackage] da una solución correcto para valorar el número óptimo de clusters.

fviz_nbclust(df, pam, method = "silhouette")+
  theme_classic()

Cálculo de la clusterización de PAM

El código R siguiente calcula el algoritmo PAM con k = 2:

pam.res <-pam(df,2)
print(pam.res)
## Medoids:
##            ID     Murder    Assault   UrbanPop       Rape
## New Mexico 31  0.8292944  1.3708088  0.3081225  1.1603196
## Nebraska   27 -0.8008247 -0.8250772 -0.2445636 -0.5052109
## Clustering vector:
##        Alabama         Alaska        Arizona       Arkansas     California 
##              1              1              1              2              1 
##       Colorado    Connecticut       Delaware        Florida        Georgia 
##              1              2              2              1              1 
##         Hawaii          Idaho       Illinois        Indiana           Iowa 
##              2              2              1              2              2 
##         Kansas       Kentucky      Louisiana          Maine       Maryland 
##              2              2              1              2              1 
##  Massachusetts       Michigan      Minnesota    Mississippi       Missouri 
##              2              1              2              1              1 
##        Montana       Nebraska         Nevada  New Hampshire     New Jersey 
##              2              2              1              2              2 
##     New Mexico       New York North Carolina   North Dakota           Ohio 
##              1              1              1              2              2 
##       Oklahoma         Oregon   Pennsylvania   Rhode Island South Carolina 
##              2              2              2              2              1 
##   South Dakota      Tennessee          Texas           Utah        Vermont 
##              2              1              1              2              2 
##       Virginia     Washington  West Virginia      Wisconsin        Wyoming 
##              2              2              2              2              2 
## Objective function:
##    build     swap 
## 1.441358 1.368969 
## 
## Available components:
##  [1] "medoids"    "id.med"     "clustering" "objective"  "isolation" 
##  [6] "clusinfo"   "silinfo"    "diss"       "call"       "data"

La salida muestra:

  • los medoides del cluster: una matriz, cuyas filas son los medoides y las columnas son variables.

  • el vector de clustering: Un vector de enteros (de 1:k) que indica el cluster al que se asigna cada punto.

Si se quiere añadir las clasificaciones de puntos a los datos originales, se utiliza esto:

dd <-cbind(USArrests,cluster =pam.res$cluster)
head(dd,n=3)
##         Murder Assault UrbanPop Rape cluster
## Alabama   13.2     236       58 21.2       1
## Alaska    10.0     263       48 44.5       1
## Arizona    8.1     294       80 31.0       1

Acceso a los resultados de la función pam()

La función pam() devuelve un objeto de la clase pam cuyos componentes incluyen: - medoides: Objetos que representan clusters. - clustering: un vector que contiene el número de cluster de cada objeto

pam.res$medoids
##                Murder    Assault   UrbanPop       Rape
## New Mexico  0.8292944  1.3708088  0.3081225  1.1603196
## Nebraska   -0.8008247 -0.8250772 -0.2445636 -0.5052109
head(pam.res$clustering)
##    Alabama     Alaska    Arizona   Arkansas California   Colorado 
##          1          1          1          2          1          1

Visulazación del os clusters PAM

Para visualizar los resultados de la partición, utilizaremos la función fviz_cluster() [factoextrapackage]. Dibuja un gráfico de dispersión de los puntos de datos coloreados por los números de cluster. Si los datos contienen más de 2 variables, se utiliza el algoritmo de análisis de componentes principales (PCA) para reducir la dimensionalidad de los datos. En este caso, se utilizan las dos primeras dimensiones principales para trazar los datos.

fviz_cluster(pam.res,
             palette =c("#00AFBB","#FC4E07"),
             ellipse.type ="t",
             repel =TRUE,
             ggtheme =theme_classic()
             )

Resumen

El algoritmo PAM de k-medoides es una opción robusta de k-medias para dividir un conjunto de datos en grupos de observaciones. De acuerdo con el procedimiento k-medoids, cada grupo está representado por un objeto seleccionado de él. El objeto seleccionado se llama medoide y corresponde a la faceta central del grupo.

CLARA - Clustering de grandes aplicaciones

Es una expansión de los procedimientos k-medoides para intentar datos que tienen dentro un enorme conjunto de objetos (más de diversos una cantidad enorme de observaciones) con el propósito de minimizar la era de computación y el problema de almacenamiento de RAM. Esto se consigue usando el enfoque de muestreo.

Concepto CLARA

En vez de hallar medoides para todo el grupo de datos, CLARA estima una pequeña muestra de los datos con un tamaño fijo (sampsize) y aplica el algoritmo PAM para producir un grupo óptimo de medoides para la muestra. La calidad de los medoides resultantes se mide por la desigualdad media entre cada objeto del grupo de datos y el medoide de su clúster, determinada como funcionalidad de coste.

Algoritmo CLARA

El algoritmo es el siguiente:

  1. Dividir aleatoriamente los conjuntos de datos en múltiples subconjuntos con tamaño fijo.

  2. Calcular el algoritmo PAM en cada subconjunto y elegir los correspondientes k objetos representativos (medoides). Asignar cada observación del conjunto de datos al medoide más cercano.

  3. Calcule la media (o la suma) de las disimilitudes de las observaciones con respecto a su medoide más cercano. Esto se utiliza como medida de la bondad de la agrupación.

  4. Conserve el subconjunto de datos cuya media (o suma) sea mínima. Se lleva a cabo un nuevo análisis de la partición final.

Calcular CLARA en R

Formato y preparación de los datos

En este caso, generaremos un conjunto de datos aleatorios. Para que el resultado sea reproducible, empezamos por utilizar la función set.seed().

set.seed(1234)
df <-rbind(cbind(rnorm(200,0,8),rnorm(200,0,8)),
           cbind(rnorm(300,50,8),rnorm(300,50,8)))
colnames(df) <-c("x","y")
rownames(df) <-paste0("S",1:nrow(df))
head(df,nrow =6)
##             x        y
## S1  -9.656526 3.881815
## S2   2.219434 5.574150
## S3   8.675529 1.484111
## S4 -18.765582 5.605868
## S5   3.432998 2.493448
## S6   4.048447 6.083699

Paquetes y funciones de R necesarios

La función clara() [clusterpackage] puede utilizarse para calcular CLARA. El formato simplificado es el siguiente:

clara(x, k,metric =“euclidean”,stand =FALSE, samples =5,pamLike =FALSE)

  • x: una matriz de datos numéricos o marco de datos, cada fila corresponde a una observación, y cada columna corresponde a una variable. Se permiten los valores perdidos

  • k: el número de clusters.

  • metric: la métrica de distancia que se va a utilizar.

  • stand: valor lógico; si es verdadero, las variables (columnas) de x se estandarizan antes de calcular las disimilitudes. Se recomienda estandarizar las variables antes de agruparlas.

  • Muestras: número de muestras que se extraen del conjunto de datos. El valor por defecto es 5, pero se recomienda un valor mucho mayor.

  • pamLike: lógica que indica si se debe utilizar el mismo algoritmo de la funciónpam(). Debe ser siempre verdadero.

install.packages(c("cluster","factoextra"))
## Warning: packages 'cluster', 'factoextra' are in use and will not be installed
library(cluster)
library(factoextra)

Estimación del número óptimo de clusters

Para estimar el número óptimo de clusters en sus datos, es posible utilizar el método de la silueta media, tal y como se describe en el capítulo de clustering de PAM (Capítulo 5). La función Rfviz_nbclust() [factoextrapackage] proporciona una solución para facilitar este paso.

fviz_nbclust(df, clara,method ="silhouette")+
  theme_classic()

Computing CLARA

El código R siguiente calcula el algoritmo PAM con k = 2:

clara.res <- clara(df,2,samples =50,pamLike =TRUE)
print(clara.res)
## Call:     clara(x = df, k = 2, samples = 50, pamLike = TRUE) 
## Medoids:
##              x         y
## S121 -1.531137  1.145057
## S455 48.357304 50.233499
## Objective function:   9.87862
## Clustering vector:    Named int [1:500] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...
##  - attr(*, "names")= chr [1:500] "S1" "S2" "S3" "S4" "S5" "S6" "S7" ...
## Cluster sizes:            200 300 
## Best sample:
##  [1] S37  S49  S54  S63  S68  S71  S76  S80  S82  S101 S103 S108 S109 S118 S121
## [16] S128 S132 S138 S144 S162 S203 S210 S216 S231 S234 S249 S260 S261 S286 S299
## [31] S304 S305 S312 S315 S322 S350 S403 S450 S454 S455 S456 S465 S488 S497
## 
## Available components:
##  [1] "sample"     "medoids"    "i.med"      "clustering" "objective" 
##  [6] "clusinfo"   "diss"       "call"       "silinfo"    "data"

Si se quiere añadir las clasificaciones de puntos a los datos originales, se utiliza esto:

dd <- cbind(df,cluster =clara.res$cluster)
head(dd,n=4)
##             x        y cluster
## S1  -9.656526 3.881815       1
## S2   2.219434 5.574150       1
## S3   8.675529 1.484111       1
## S4 -18.765582 5.605868       1

Se puede acceder a los resultados devueltos por clara() como sigue:

clara.res$medoids
##              x         y
## S121 -1.531137  1.145057
## S455 48.357304 50.233499
head(clara.res$clustering,10)
##  S1  S2  S3  S4  S5  S6  S7  S8  S9 S10 
##   1   1   1   1   1   1   1   1   1   1

Los medoides son S121, S455

Visualización de los clusters de CLARA

Para visualizar los resultados de la partición, utilizaremos la función fviz_cluster() [factoextrapackage]. Dibuja un gráfico de dispersión de los puntos de datos coloreados por los números de clúster.

fviz_cluster(clara.res,
             palette = c("#00AFBB", "#FC4E07"),
             ellipse.type ="t",
             geom ="point", pointsize = 1,
             ggtheme =theme_classic()
             )

Resumen

El algoritmo CLARA (Clustering Large Applications) es una expansión del procedimiento de clustering PAM (Partitioning Around Medoids) para enormes conjuntos de datos. Su objetivo es minimizar la era de cálculo en la situación de monumentales conjuntos de datos. Como casi todos los algoritmos de partición, necesita que el cliente especifique el número conveniente de clusters que se producirán. Esto puede estimarse usando la funcionalidad fviz_nbclust [paquete infactoextraR].