Contenido de este artículo
- 0.1 ¿Qué es la agrupación de K-medias?
- 0.2 Agrupación de K-medias 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 en clústeres de K-medias con Optimal K
- 0.7 Ventajas y desventajas de la agrupación en clústeres de K-medias
- 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 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 .
¿Qué es la agrupación de K-medias?
La agrupación en clústeres de K-medias es una técnica en la que colocamos cada observación en un conjunto de datos en uno de los K clústeres.
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 simplemente el vector de las p medias 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 .
Agrupación de K-medias en R
El siguiente tutorial proporciona un ejemplo paso a paso de cómo realizar la agrupación en clústeres de k-medias en R.
Paso 1: cargue los paquetes necesarios
Primero, cargaremos dos paquetes que contienen varias funciones útiles para la agrupación en clústeres de k-medias 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 en clústeres de k-means en R, podemos usar la función kmeans () incorporada, que usa la siguiente sintaxis:
kmeans (datos, centros, nstart)
dónde:
- data: Nombre del conjunto de datos.
- centros: El número de conglomerados, denotado k .
- nstart: el número de configuraciones iniciales. Debido a que es posible que diferentes clústeres de inicio inicial puedan dar lugar a resultados diferentes, se recomienda utilizar varias configuraciones iniciales diferentes. El algoritmo de k-medias encontrará las configuraciones iniciales que conducen a la variación más pequeña dentro del clúster.
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, kmeans, método = " wss ")
Normalmente, cuando creamos este tipo de gráfico buscamos un «codo» donde la suma de cuadrados comienza a «doblarse» o nivelarse. Este suele ser el número óptimo de clústeres.
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 = k significa, nstart = 25, K.max = 10, B = 50) # 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 en clústeres de K-medias con Optimal K
Por último, podemos realizar la agrupación de k-medias 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-medias con k = 4 agrupaciones km <- kmedias (gl, centros = 4, nstart = 25) #ver resultados km Agrupación de K-medias con 4 grupos de tamaños 16, 13, 13, 8 Clúster significa: Asesinato Asalto UrbanPop Violación 1 -0,4894375 -0,3826001 0,5758298 -0,26165379 2 -0,9615407 -1,1066010 -0,9301069 -0,96676331 3 0,6950701 1,0394414 0,7226370 1,27693964 4 1.4118898 0.8743346 -0.8145211 0.01927104 Vector de agrupación: Alabama Alaska Arizona Arkansas California Colorado 4 3 3 4 3 3 Connecticut Delaware Florida Georgia Hawái Idaho 1 1 3 4 1 2 Illinois Indiana Iowa Kansas Kentucky Luisiana 3 1 2 1 2 4 Maine Maryland Massachusetts Michigan Minnesota Mississippi 2 3 1 3 2 4 Missouri Montana Nebraska Nevada New Hampshire New Jersey 3 2 2 3 2 1 Nuevo México Nueva York Carolina del Norte Dakota del Norte Ohio Oklahoma 3 3 4 2 1 1 Oregón Pensilvania Rhode Island Carolina del Sur Dakota del Sur Tennessee 1 1 1 4 2 4 Texas Utah Vermont Virginia Washington Virginia Occidental 3 1 2 1 1 2 Wisconsin Wyoming 2 1 Dentro del grupo, suma de cuadrados por grupo: [1] 16,212213 11,952463 19,922437 8,316061 (entre_SS / total_SS = 71,2%) Componentes disponibles: [1] "cluster" "centra" "totss" "withinss" "tot.withinss" "entre" [7] "tamaño" "iter" "ifault"
De los resultados podemos ver que:
- Se asignaron 16 estados al primer grupo
- 13 estados fueron asignados al segundo grupo
- 13 estados fueron asignados al tercer grupo
- 8 estados fueron asignados al cuarto grupo
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-medias fviz_cluster (km, data = df)
También podemos usar la función aggregate () para encontrar la media de las variables en cada grupo:
# encontrar las medias de cada grupo agregado (USArrests, by = list (cluster = km $ cluster), mean) racimo Asesinato Asalto UrbanPop Violación 1 3.60000 78.53846 52.07692 12.17692 2 10.81538 257.38462 76.00000 33.19231 3 5,65625 138,87500 73,87500 18,78125 4 13,93750 243,62500 53,75000 21,41250
Interpretamos que esta salida es la siguiente:
- El número medio de asesinatos por cada 100.000 ciudadanos entre los estados del conglomerado 1 es 3,6 .
- El número medio de agresiones por cada 100.000 ciudadanos entre los estados del grupo 1 es 78,5 .
- El porcentaje medio de residentes que viven en un área urbana entre los estados del conglomerado 1 es del 52,1% .
- El número medio de violaciones por cada 100.000 ciudadanos entre los estados del grupo 1 es 12,2 .
Y así.
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 = km $ cluster) #ver datos finales head (final_data) Asesinato Asalto UrbanPop Rape cluster Alabama 13,2 236 58 21,2 4 Alaska 10,0 263 48 44,5 2 Arizona 8.1 294 80 31.0 2 Arkansas 8,8 190 50 19,5 4 California 9,0 276 91 40,6 2 Colorado 7,9 204 78 38,7 2
Ventajas y desventajas de la agrupación en clústeres de K-medias
La agrupación en clústeres de K-means ofrece los siguientes beneficios:
- Es un algoritmo rápido.
- Puede manejar grandes conjuntos de datos.
Sin embargo, tiene los siguientes posibles inconvenientes:
- Requiere que especifiquemos el número de clústeres antes de realizar el algoritmo.
- Es sensible a los valores atípicos.
Dos alternativas al agrupamiento de k-medias son el agrupamiento de k-medoides y el agrupamiento jerárquico .
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: