1. Se instalan paquetes y visualizacion de K-significados en grupos
data("USArrests")# Loading the data set
df <-scale(USArrests)# Scaling the data

# View the firt 3 rows of the data
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

´INSTALAMOS PAQUETES´

kmeans(df, 3,iter.max =10,nstart =1)
## K-means clustering with 3 clusters of sizes 13, 20, 17
## 
## Cluster means:
##       Murder    Assault   UrbanPop       Rape
## 1 -0.9615407 -1.1066010 -0.9301069 -0.9667633
## 2  1.0049340  1.0138274  0.1975853  0.8469650
## 3 -0.4469795 -0.3465138  0.4788049 -0.2571398
## 
## Clustering vector:
##        Alabama         Alaska        Arizona       Arkansas     California 
##              2              2              2              3              2 
##       Colorado    Connecticut       Delaware        Florida        Georgia 
##              2              3              3              2              2 
##         Hawaii          Idaho       Illinois        Indiana           Iowa 
##              3              1              2              3              1 
##         Kansas       Kentucky      Louisiana          Maine       Maryland 
##              3              1              2              1              2 
##  Massachusetts       Michigan      Minnesota    Mississippi       Missouri 
##              3              2              1              2              2 
##        Montana       Nebraska         Nevada  New Hampshire     New Jersey 
##              1              1              2              1              3 
##     New Mexico       New York North Carolina   North Dakota           Ohio 
##              2              2              2              1              3 
##       Oklahoma         Oregon   Pennsylvania   Rhode Island South Carolina 
##              3              3              3              3              2 
##   South Dakota      Tennessee          Texas           Utah        Vermont 
##              1              2              2              3              1 
##       Virginia     Washington  West Virginia      Wisconsin        Wyoming 
##              3              3              1              1              3 
## 
## Within cluster sum of squares by cluster:
## [1] 11.95246 46.74796 19.62285
##  (between_SS / total_SS =  60.0 %)
## 
## Available components:
## 
## [1] "cluster"      "centers"      "totss"        "withinss"     "tot.withinss"
## [6] "betweenss"    "size"         "iter"         "ifault"

´SE ORGANIZAN LOS GRUPOS´

library(factoextra)
## Loading required package: ggplot2
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
fviz_nbclust(df, kmeans,method ="wss") +
  geom_vline(xintercept =4,linetype =2)

# Computar k significados con k = 4
set.seed(123)
km.res <-kmeans(df,4,nstart =25)

# Se imprimen 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"
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
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

PARA ACCEDER A LOS RESULTADOS QUE NOS ARROJAN LOS K SIGNIFICADOS

# Agrupar los numeros por observaciones
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
# Agrupar tamaños 
km.res$size
## [1]  8 13 16 13
# Agrupar significados
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

LUEGO DE AÑADIR LOS PAQUETES PARA LOS K SIGNIFICADOS, DEBEMOS AGREGAR LOS CODIGOS PARA QUE SEAMOS CAPACES DE VISUALIZARLOS.

fviz_cluster(km.res,data =df,
             palette =c("#2E9FDF","#00AFBB","#E7B800","#FC4E07"),
             ellipse.type ="euclid",# Concentration ellipse
             star.plot =TRUE,# Add segments from centroids to items
             repel =TRUE,# Avoid label overplotting (slow)
             ggtheme =theme_minimal()
             )

  1. Ahora, se añadira los paquetes de los k medoides
data("USArrests")# Carga el set de datos
df <-scale(USArrests)# Medir los datos
head(df,n=3)# Ver primeras 3 lineas de datos 
##             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

INSTALAR PAQUETES DE K MEDOIDES

library(cluster)
library(factoextra)

´SE ORGANIZAN LOS GRUPOS´

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

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"
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
# Agrupar medoides: New Mexico, Nebraska
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
# Agrupar numeros
head(pam.res$clustering)
##    Alabama     Alaska    Arizona   Arkansas California   Colorado 
##          1          1          1          2          1          1

´Visualizamos los grupos´

fviz_cluster(pam.res,
             palette =c("#00AFBB","#FC4E07"),# color palette
             ellipse.type ="t",# Concentration ellipse
             repel =TRUE,# Avoid label overplotting (slow)
             ggtheme =theme_classic()
             )

  1. CLARA – Agrupando grupos largos de aplicaciones
set.seed(1234)
# Generate 500 objects, divided into 2 clusters.
df <-rbind(cbind(rnorm(200,0,8),rnorm(200,0,8)),
           cbind(rnorm(300,50,8),rnorm(300,50,8)))

# Specify column and row names
colnames(df) <-c("x","y")

rownames(df) <-paste0("S",1:nrow(df))
# Previewing the data
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

Instalamos paquetes

clara(df, 3,metric ="euclidean",stand =FALSE,
      samples =5,pamLike =FALSE)
## Call:     clara(x = df, k = 3, metric = "euclidean", stand = FALSE, samples = 5, pamLike = FALSE) 
## Medoids:
##               x         y
## S168 -0.5495492  2.458514
## S362 41.4107093 54.052003
## S249 52.6021698 50.877808
## Objective function:   8.913857
## 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 113 187 
## Best sample:
##  [1] S6   S45  S51  S67  S75  S85  S90  S94  S97  S110 S111 S160 S168 S170 S180
## [16] S181 S201 S219 S249 S260 S264 S275 S296 S304 S307 S309 S317 S321 S337 S361
## [31] S362 S369 S374 S379 S397 S398 S402 S411 S420 S422 S424 S436 S451 S465 S488
## [46] S489
## 
## Available components:
##  [1] "sample"     "medoids"    "i.med"      "clustering" "objective" 
##  [6] "clusinfo"   "diss"       "call"       "silinfo"    "data"
install.packages(c("cluster","factoextra"))
## Warning: packages 'cluster', 'factoextra' are in use and will not be installed
library(cluster)
library(factoextra)

´Estimando numero apropiado para grupos´

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

# Computar CLARA
clara.res <-clara(df,2,samples =50,pamLike =TRUE)
# Imprimir componentes de clara.res
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"
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
# Medoids
clara.res$medoids
##              x         y
## S121 -1.531137  1.145057
## S455 48.357304 50.233499
# Clustering
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

´Visualizando CLARA´

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

´RESUMEN CAPITULOS´

°Chapter 4 - 5

El presente informe se refiere al tema del agrupamiento de particiones que es de gran importancia para clasificar las observaciones en un conjunto de datos en grupos según la similitud. Estos algoritmos requieren que el analista caracterice el número de clústeres a generar.

Además, existen algunos métodos que ayudan al agrupamiento de particiones en cuanto a sus características. Estos son:

-Agrupación de k-medias, donde cada grupo está representado por el centro de los puntos de datos que pertenecen a ese grupo.

-Agrupamiento de k-medoides o PAM, cada uno de estos grupos está representado por un objeto dentro del grupo.

-Algoritmo CLARA, esta es una extensión de PAM para grandes conjuntos de datos.

Ahora bien, estos métodos serán expuestos con mayor detalle por lo que cubren una gran variedad de aplicaciones.

En primer lugar, está la agrupación en clústeres de k-medias el cual es el algoritmo de aprendizaje automático no supervisado más utilizado para dividir un conjunto de datos dado en un conjunto de k grupos, este a su vez divide los objetos en grupos para que los objetos dentro de un conglomerado sean los más similares posible y también cada conglomerado está representado por su centro o baricentro, que corresponde al promedio de las puntuaciones asignadas a ese conglomerado. Para apreciar más su importancia se establecen algunas ideas básicas que pueden mejorar su comprensión en la agrupación de observaciones, básicamente la idea básica principal detrás del agrupamiento de k-medias es definir grupos de tal manera que las diferencias comunes dentro de los grupos (llamadas variaciones comunes dentro de los grupos) se minimicen. El primer paso para usar el agrupamiento de k-medias es especificar el número de conglomerados (k) que se generarán en la solución final. El algoritmo primero selecciona aleatoriamente k objetos del conjunto de datos como centros de agrupación inicial. Los objetos seleccionados también se conocen como medias de conglomerados o centroides. Luego, a cada objeto restante se le asigna su centroide más cercano, donde el centroide más cercano se determina usando la distancia euclidiana entre el objeto y la media del grupo. Este paso se denomina “paso de asignación de clúster”.

Después de la etapa de distribución, el algoritmo calcula nuevos promedios para cada grupo. El término de grupo “actualización de centroide” se utiliza para diseñar esta operación. Ahora que se han vuelto a calcular los centros, vuelva a comprobar cada observación para ver si podría estar más cerca de otro grupo. Todos los objetos se redistribuyen utilizando los medios de clúster actualizados. Y, por último, Los pasos de asignación de conglomerados y actualización del centroide se repiten iterativamente hasta que la asignación de conglomerados deja de cambiar.

Como cualquier técnica, el agrupamiento de k-medias se tiene que calcular a partir de una serie de pasos que serán expuestos a continuación:

1.Datos

En esta parte, los conjuntos de datos de “USArrests” se tendrán en cuenta y deberían contener únicamente variables continúas puesto que este algoritmo utiliza promedios variables y para que no solo se concentre en una variable, la función R scale() asumirá la responsabilidad de que los datos vayan escalando.

2.Paquetes y funciones de R requeridos

Kmeans() [stats package] es la función R estándar para este agrupamiento la cual es simplificada de la siguiente manera:

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

3.Estimación del número óptimo de conglomerados

Esta técnica requiere que el usuario especifique el número de agrupaciones que se están trabajando para poder generalas, la idea es calcular la agrupación de k-medias usando diferentes valores de las agrupaciones k y la opción más viable es utilizar la función de R fviz_nbclust() [in factoextra package] con el fin de proponer una solución confiable con respecto a la estimación.

4.Clustering de k-medias en R

Este paso tiene como propósito hacer visible los resultados obtenidos a partir de los pasos anteriores y reproducirlos de tal manera que sean exactamente iguales a los resultados que se muestran a continuación:

Compute k-means with k = 4

set.seed(123)

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

5.Accediendo a los resultados de la función kmeans()

Esta función devuelve una lista de componente, que incluye: clúster, centros, totts que es la suma total de cuadrados, withinss (vector de suma de cuadrados dentro de un grupo), tot.withinss (suma total de cuadrados dentro del grupo), betweenss que es la suma de cuadrados entre grupos y por último, el tamaño.

6.Visualización de clústeres de k-medias

Se recomienda trazar los resultados del conglomerado. Se pueden utilizar para evaluar la elección del número de conglomerados y para comparar dos análisis de conglomerados diferentes. Además, para mayor comprensión los datos serán visibles en un gráfico de dispersión de acuerdo al grupo al que pertenecen. Sin embargo, si los datos contienen más de 2 variables, habrá un problema porque no se sabe qué variables tomar para el grafico. La alternativa sería aplicar un algoritmo de reducción de dimensionalidad en cuanto al número de dimensiones trabajadas, como lo es el Análisis de componentes principales que genera dos nuevas variables a partir de cuatro variables iniciales.

° Chapter 6

Los paquetes de R requeridos tienen diferentes funciones que se usan para conocer pam, las cuales tienen diferentes variables que se van a definir a continuación: primero está k que hace referencia al número de grupos, se encuentra las métricas que son las medidas que se usarán al momento de mostrar las tablas. Además, el soporte permite validar si las x están dispuestas correctamente para calcular las diferencias entre los distintos valores. También, hay otros aspectos importantes al momento de crear este tipo de tablas y es el agrupamiento, el cual se encarga de asignarle un orden a cada punto. En este sentido, resulta fundamental acceder a los resultados de la función pam, los cuales cuentan con componentes importantes como el agrupamiento antes mencionado y medoides que básicamente representan clústeres (que se aplican a los conglomerados de los aparatos electrónicos para agruparlos o categorizarlos). Para representar estos clústeres se usan funciones como, por ejemplo: fviz_cluster() [factoextra paquete], la dimensionalidad se logra reducir si se incluye el algoritmo de componentes principales.

Uno de los métodos k-medoides es conocido como agrupación de grandes aplicaciones que se define como el algoritmo de Clara, el cual se encarga de manejar y controlar datos que tienes muchas observaciones para optimizar la memoria RAM. Este método en específico es muy preciso, puesto que selecciona muestras pequeñas para una mayor exactitud en los datos mediante el uso del algoritmo PAM en cada subconjunto y al momento de asignar observaciones a un medoide. El algoritmo Clara también puede ser calculado en R. Sin embargo, para calcular Clara se debe conocer que en la matriz de datos a las variables les corresponde las columnas y a las observaciones las filas. Además, para las muestras que se van a evaluar se recomienda que sean mayores a 5 (valor predeterminado) y también estandarizar las variables antes de asociarlas.

En esta sección se logró conocer el funcionamiento de los k-medoides y la confiabilidad que estos brindan al momento de realizar una partición de datos en ciertos grupos que han sido seleccionados. Cabe resaltar, los k-medoides se enfocan en objetos que se denominan puntos centrales, sobre los cuales se van a ejecutar las distintas funciones. Además, en este capítulo se exponen los algoritmos pam y clara de la forma más sencilla y útil para que todos los internautas logren comprender los datos y ejecutar estas funcione y algoritmos, así como también, logren especificar de manera eficiente el número de los clústeres(x) que se reproducirán a través de la función como R fviz_cluster() [paquete factoextra] en el caso de que se quiera usar el algoritmo Clara.