Contenido de este artículo
- 0.1 ¿Qué es la agrupación de K-Medoides?
- 0.2 Agrupación de K-Medoides en R
- 0.3 Paso 1: cargue los paquetes necesarios
- 0.4 Paso 2: Cargue y prepare los datos
- 0.5 Paso 3: Encuentre la cantidad óptima de clústeres
- 0.6 Paso 4: Realice la agrupación de K-Medoids con Optimal K
- 1 Redactor del artículo
- 2 ¿Te hemos ayudado?
- 0
- 0
- 0
- 0
La agrupación en clústeres es una técnica de aprendizaje automático que intenta encontrar grupos o agrupaciones de observaciones dentro de un conjunto de datos.
El objetivo es encontrar grupos de modo que las observaciones dentro de cada grupo sean bastante similares entre sí, mientras que las observaciones en diferentes grupos sean bastante diferentes entre sí.
La agrupación es una forma de aprendizaje no supervisado porque simplemente intentamos encontrar una estructura dentro de un conjunto de datos en lugar de predecir el valor de alguna variable de respuesta .
La agrupación en clústeres se utiliza a menudo en marketing cuando las empresas tienen acceso a información como:
- Ingresos del hogar
- Tamaño del hogar
- Ocupación del jefe de hogar
- Distancia del área urbana más cercana
Cuando esta información está disponible, la agrupación se puede utilizar para identificar hogares que son similares y pueden tener más probabilidades de comprar ciertos productos o responder mejor a cierto tipo de publicidad.
Una de las formas más comunes de agrupación en clústeres se conoce como agrupación de k-medias .
Desafortunadamente, este método puede verse influenciado por valores atípicos, por lo que una alternativa que se utiliza a menudo es la agrupación de k-medoides .
¿Qué es la agrupación de K-Medoides?
El agrupamiento de K-medoides es una técnica en la que colocamos cada observación en un conjunto de datos en uno de los grupos de K.
El objetivo final es tener K grupos en los que las observaciones dentro de cada grupo sean bastante similares entre sí, mientras que las observaciones en diferentes grupos son bastante diferentes entre sí.
En la práctica, utilizamos los siguientes pasos para realizar la agrupación en clústeres de K-medias:
1. Elegir un valor de K .
- Primero, debemos decidir cuántos grupos nos gustaría identificar en los datos. A menudo, simplemente tenemos que probar varios valores diferentes para K y analizar los resultados para ver qué número de grupos parece tener más sentido para un problema dado.
2. Asigne aleatoriamente cada observación a un grupo inicial, de 1 a K.
3. Realice el siguiente procedimiento hasta que las asignaciones de clústeres dejen de cambiar.
- Para cada uno de los K clústeres, calcule el centroide del clúster . Este es el vector de las p medianas de características para las observaciones en el k- ésimo grupo.
- Asigne cada observación al grupo cuyo centroide sea el más cercano. Aquí, el más cercano se define utilizando la distancia euclidiana .
Nota tecnica:
Debido a que los k-medoides calculan los centroides de los conglomerados utilizando medianas en lugar de medias, tiende a ser más robusto a los valores atípicos en comparación con las k-medias.
En la práctica, si no hay valores atípicos extremos en el conjunto de datos, las k-medias y los k-medoides producirán resultados similares.
Agrupación de K-Medoides en R
El siguiente tutorial proporciona un ejemplo paso a paso de cómo realizar agrupaciones de k-medoides en R.
Paso 1: cargue los paquetes necesarios
Primero, cargaremos dos paquetes que contienen varias funciones útiles para la agrupación de k-medoids en R.
biblioteca (factoextra) biblioteca (clúster)
Paso 2: Cargue y prepare los datos
Para este ejemplo, usaremos el conjunto de datos USArrests integrado en R, que contiene el número de arrestos por cada 100,000 residentes en cada estado de EE. UU. En 1973 por asesinato , asalto y violación junto con el porcentaje de la población en cada estado que vive en áreas urbanas. , UrbanPop .
El siguiente código muestra cómo hacer lo siguiente:
- Cargar el conjunto de datos de USArrests
- Elimina las filas con valores faltantes
- Escale cada variable en el conjunto de datos para tener una media de 0 y una desviación estándar de 1
#Cargar datos df <- USArrests # eliminar filas con valores perdidos df <- na. Omitir (df) #escala cada variable para que tenga una media de 0 y una df de 1 df <- scale (df) #ver las primeras seis filas del conjunto de datos cabeza (df) Asesinato Asalto UrbanPop Violación 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 Arkansas 0,23234938 0,2308680 -1,0735927 -0,184916602 California 0.27826823 1.2628144 1.7589234 2.067820292 Colorado 0,02571456 0,3988593 0,8608085 1,864967207
Paso 3: Encuentre la cantidad óptima de clústeres
Para realizar la agrupación de k-medoides en R, podemos usar la función pam () , que significa «particionamiento alrededor de medianas» y usa la siguiente sintaxis:
pam (data, k, metric = «euclidiana», stand = FALSE)
dónde:
- data: Nombre del conjunto de datos.
- k: el número de conglomerados.
- métrica: la métrica que se utilizará para calcular la distancia. El valor predeterminado es euclidiano, pero también puede especificar manhattan .
- stand: si estandarizar o no cada variable en el conjunto de datos. El valor predeterminado es FALSO.
Como no sabemos de antemano cuántos clústeres son óptimos, crearemos dos gráficos diferentes que pueden ayudarnos a decidir:
1. Número de conglomerados frente al total dentro de la suma de cuadrados
Primero, usaremos la función fviz_nbclust () para crear una gráfica del número de clústeres frente al total dentro de la suma de cuadrados:
fviz_nbclust (df, pam, método = " wss ")
El total dentro de la suma de cuadrados generalmente siempre aumentará a medida que aumentamos el número de grupos, por lo que cuando creamos este tipo de gráfico buscamos un «codo» donde la suma de cuadrados comienza a «doblarse» o nivelarse.
El punto en el que se dobla la trama suele ser el número óptimo de conglomerados. Más allá de este número, es probable que se produzca un sobreajuste .
Para este gráfico, parece que hay un poco de codo o «curvatura» en k = 4 conglomerados.
2. Número de conglomerados frente a la estadística de brechas
Otra forma de determinar el número óptimo de conglomerados es utilizar una métrica conocida como estadística de brecha , que compara la variación intragrupo total para diferentes valores de k con sus valores esperados para una distribución sin conglomerados.
Podemos calcular la estadística de brechas para cada número de clústeres usando la función clusGap () del paquete de clústeres junto con un gráfico de clústeres frente a la estadística de brechas usando la función fviz_gap_stat () :
#calcular la estadística de brecha en función del número de clústeres gap_stat <- clusGap (df, DIVERSIÓN = pam, K.max = 10, # clústeres máximos a considerar B = 50) # iteraciones totales de arranque # trazar el número de conglomerados frente a la estadística de brechas fviz_gap_stat (gap_stat)
En la gráfica podemos ver que la estadística de brecha es más alta en k = 4 conglomerados, lo que coincide con el método del codo que usamos anteriormente.
Paso 4: Realice la agrupación de K-Medoids con Optimal K
Por último, podemos realizar agrupaciones de k-medoides en el conjunto de datos utilizando el valor óptimo para k de 4:
#Haga que este ejemplo sea reproducible set.seed (1) # realizar agrupaciones de k-medoides con k = 4 agrupaciones kmed <- pam (gl, k = 4) #ver resultados kmed ID Asesinato Asalto UrbanPop Violación Alabama 1 1,2425641 0,7828393 -0,5209066 -0,003416473 Michigan 22 0,9900104 1,0108275 0,5844655 1,480613993 Oklahoma 36 -0,2727580 -0,2371077 0,1699510 -0,131534211 Nueva Hampshire 29 -1.3059321 -1.3650491 -0.6590781 -1.252564419 Vector de agrupación: Alabama Alaska Arizona Arkansas California 1 2 2 1 2 Colorado Connecticut Delaware Florida Georgia 2 3 3 2 1 Hawái Idaho Illinois Indiana Iowa 3 4 2 3 4 Kansas Kentucky Luisiana Maine Maryland 3 3 1 4 2 Massachusetts Michigan Minnesota Misisipi Misuri 3 2 4 1 3 Montana Nebraska Nevada New Hampshire Nueva Jersey 3 3 2 4 3 Nuevo México Nueva York Carolina del Norte Dakota del Norte Ohio 2 2 1 4 3 Oklahoma Oregon Pensilvania Rhode Island Carolina del Sur 3 3 3 3 1 Dakota del Sur Tennessee Texas Utah Vermont 4 1 2 3 4 Virginia Washington Virginia Occidental Wisconsin Wyoming 3 3 4 4 3 Función objetiva: construir intercambio 1.035116 1.027102 Componentes disponibles: [1] "medoides" "id.med" "agrupamiento" "objetivo" "aislamiento" [6] "clusinfo" "silinfo" "diss" "call" "data"
Tenga en cuenta que los cuatro centroides del conglomerado son observaciones reales en el conjunto de datos. Cerca de la parte superior de la salida podemos ver que los cuatro centroides son los siguientes estados:
- Alabama
- Michigan
- Oklahoma
- New Hampshire
Podemos visualizar los grupos en un diagrama de dispersión que muestra los dos primeros componentes principales en los ejes usando la función fivz_cluster () :
#plotar los resultados del modelo final de k- medoides fviz_cluster (kmed, data = df)
También podemos agregar las asignaciones de clúster de cada estado al conjunto de datos original:
#add asignación de clúster a los datos originales final_data <- cbind (USArrests, cluster = kmed $ cluster) #ver datos finales head (final_data) Asesinato Asalto UrbanPop Rape cluster Alabama 13,2 236 58 21,2 1 Alaska 10,0 263 48 44,5 2 Arizona 8.1 294 80 31.0 2 Arkansas 8,8 190 50 19,5 1 California 9,0 276 91 40,6 2 Colorado 7,9 204 78 38,7 2
Puede encontrar el código R completo utilizado en este ejemplo aquí .
- https://r-project.org
- https://www.python.org/
- https://www.stata.com/
¿Te hemos ayudado?
Ayudanos ahora tú, dejanos un comentario de agradecimiento, nos ayuda a motivarnos y si te es viable puedes hacer una donación:La ayuda no cuesta nada
Por otro lado te rogamos que compartas nuestro sitio con tus amigos, compañeros de clase y colegas, la educación de calidad y gratuita debe ser difundida, recuerdalo: