Análisis de Clúster (Conglomerados)
UNIVERSIDAD DE EL SALVADOR
FACULTAD DE CIENCIAS ECONÓMICAS
ESCUELA DE ECONOMÍA
MÉTODOS PARA EL ANÁLISIS ECONÓMICO
TEMA DE INVESTIGACIÓN:
“Análisis de Clúster (Conglomerados)”
DOCENTE:
MSF. Carlos Ademir Pérez Alas.
Grupo teórico
GT-03
| Integrantes: | Carnet: | Participación |
|---|---|---|
| Lopez Coto Ezequiel Benjamin | LC22057 | 100% |
| Méndez Benítez Carlos Mauricio | MB22006 | 100% |
| Martínez Guardado Erick Jesé | MG22058 | 100% |
CIUDAD UNIVERSITARIA, 24 DE NOVIEMBRE DE 2024
1. Explique en qué consiste el análisis de conglomerados
También conocido como análisis de clúster, es una técnica utilizada para agrupar una serie de datos u objetos que son similares entre sí, es decir, son homogéneos. Estos datos u objetos agrupados de forma homogénea son los grupos llamados conglomerados o clusters, estos tipos de conglomerados o clusters permiten una interpretación de manera más sencilla de los datos u objetos.
2. Elabore un cuadro comparativo, que incluya los siguientes elementos:
Resumen del Análisis de Clúster
|
Análisis de Clúster |
Técnicas disponibles |
Ventajas |
Desventajas |
|
Jerárquico:
No requiere que se pre especifique el número de clústeres, es decir genera un dendrograma que muestra las relaciones jerárquicas entre las observaciones. |
|
Bueno para identificar clústeres pequeños. Permite visualizar la estructura de los datos a diferentes niveles de granularidad.
|
Puede ser computacionalmente costoso para conjuntos de datos grandes. La elección del método de enlace puede influir en los resultados.
|
|
No jerárquico:
Requieren que el usuario defina el número de clústeres de antemano, es decir divide los datos en un número predefinido de clústeres. |
|
Generalmente más eficiente computacionalmente que los métodos jerárquicos, especialmente para conjuntos de datos grandes.
|
Sensible a la elección del número de clústeres. Puede tener dificultades para encontrar clústeres con formas no esféricas.
|
Fuente: Elaboración propia con base en (Kassambara, A. (2017). Practical Guide to Cluster Analysis in R: Unsupervised Machine Learning (Multivariate Analysis) (1st ed.). STHDA,) y Joaquin, A. M., & Ezequiel, U. J. (2017). Análisis multivariante aplicado con R. 2a ed. Ediciones Paraninfo, S.A. y Landa Baella, María del Pilar, “DESARROLLO DE ANÁLISIS CLÚSTER EN R”
3. Describa las técnicas disponibles para realizar el análisis de clúster, tanto jerárquicas como no jerárquicas, presentadas en el cuadro anterior, incluya una explicación de la librería y sintaxis para implementarla en R
Técnicas jerárquicas
Aglomerativo (AGNES)
El algoritmo AGNES (Anidación Aglomerativa, Agglomerative Nesting,), dentro de las técnicas jerárquicas es el más común, este se utiliza para agrupar objetos en grupos según similitud. en este tipo de técnica se inicia tratando cada objeto como un grupo de un solo grupo, luego se fusionan pares de grupos de manera sucesiva hasta que todos los grupos se han fusionado en un gran grupo que contiene todos los objetos.
Esta técnica funciona de manera ascendente, es decir, cada objeto se considera inicialmente como un grupo de un solo elemento. En cada paso, los grupos dos grupos más similares se combinan en un nuevo grupo más grande(nodos), esto se repite hasta que todos los grupos sean miembro de un solo grupo grande. Este tipo de agrupación aglomerativa es buena para identificar agrupaciones pequeñas.
La función agnes() en R, que forma parte del paquete [cluster]
#agnes(x, diss = inherits(x, "dist"), metric = "euclidean", stand = FALSE, method = "average", par.method, keep.diss = n < 100, keep.data = !diss, trace.lev = 0)Sintaxis de agnes():
x: Este es el conjunto de datos que se va a analizar.
diss: Indica si x ya es un objeto de distancia (TRUE) o si es necesario calcular las distancias (FALSE).
metric: Especifica la métrica de distancia que se utilizará si x no es una matriz de distancias.
stand: Indica si las variables en los datos deben ser estandarizadas antes de calcular las distancias.
method: Especifica el método de agrupamiento jerárquico que se utilizará.
par.method: Argumento opcional para ajustar parámetros específicos del método elegido, este usualmente no se utiliza
keep.diss: Determina si se debe guardar la matriz de disimilitudes calculada en el objeto de salida.
keep.data: Indica si los datos originales deben almacenarse en el objeto de salida.
trace.lev: Controla el nivel de detalle de los mensajes que la función imprime mientras ejecuta el algoritmo.
Divisivo (DIANA)
El algoritmo de DIANA construye una jerarquía de agrupaciones, comenzando con un gran grupo que contiene todas las n observaciones. Los grupos se dividen hasta que cada uno contiene solo una observación.
Este proporciona (a) el coeficiente divisorio que mide la cantidad de estructura de agrupamiento encontrada; y (b) el banner, una novedosa visualización gráfica.
En cada etapa, se selecciona el grupo con el diámetro más grande. (El diámetro de un grupo es la mayor disimilitud entre dos de sus observaciones). Para dividir el grupo seleccionado, el algoritmo primero busca su observación más dispar (es decir, la que tiene la mayor disimilitud promedio con las otras observaciones del grupo seleccionado). Esta observación inicia el “grupo fragmentado”. En los pasos posteriores, el algoritmo reasigna las observaciones que están más cerca del “grupo fragmentado” que del “grupo anterior”. El resultado es una división del grupo seleccionado en dos nuevos grupos.
La función diana() en R, que forma parte del paquete [cluster]
#diana(x, diss = inherits(x, "dist"), metric = "euclidean", stand = FALSE, stop.at.k = FALSE, keep.diss = n < 100, keep.data = !diss, trace.lev = 0)Sintaxis de diana():
- x: Este es el conjunto de datos que se va a analizar. Puede ser un marco de datos o una matriz de disimilitud.
- diss: Un valor lógico que indica si x es una matriz de disimilitud. Si TRUE, se asume que x ya contiene las distancias entre las observaciones.
- metric: Especifica la métrica a utilizar para calcular las distancias. Por defecto es “euclidean”, pero puede cambiarse a otras métricas como “manhattan”.
- stand: Un valor lógico que indica si los datos deben ser estandarizados antes del análisis. La estandarización puede ser importante para evitar que variables con diferentes escalas influyan desproporcionadamente en el agrupamiento.
- stop.at.k: Indica si el algoritmo debe detenerse después de crear k grupos. Esto puede ser útil si solo se desea un número específico de agrupaciones.
- keep.diss: Un valor lógico que determina si la matriz de disimilitud debe conservarse en el resultado. Esto puede ser útil para conjuntos de datos más pequeños.
- keep.data: Indica si los datos originales deben conservarse en el resultado. Esto es relevante cuando se trabaja con matrices de disimilitud.
- trace.lev: Un parámetro que controla el nivel de detalle del seguimiento durante la ejecución del algoritmo. Puede ser útil para depuración o análisis detallado del proceso.
Técnicas no jerárquicas
K-Means
El algoritmo de agrupamiento de k-medias (k-means, MacQueen, 1967) genera agrupaciones con un número (k) dado por el investigador, donde las agrupaciones se representan con su centroide, que no es más que el promedio de los objetos dentro de cada grupo.
El objetivo es minimizar la distancia entre objetos dentro de cada grupo y maximizar la distancia entre los objetos de diferentes grupos.
Sintetizando Kassambara (2017), el algoritmo procede así:
- Establecer el número de agrupaciones (k)
- Elegir aleatoriamente k objetos del conjunto de datos como primeros centroides
- Asignar los objetos a las agrupaciones con el centroide más cercano
- Actualizar los centroides como el promedio dentro de cada agrupación
- Repetir desde el paso 3 hasta que la asignación de objetos deje de cambiar o se alcance el máximo de iteraciones
La función R estándar para agrupación de k-medias es kmeans de la librería [stats].
Sintaxis:
x: conjunto de datos numérico (matriz, vector o data frame numéricos)
centers: número de agrupaciones para asignación aleatoria o un conjunto de centroides distintos
iter.max: número máximo de iteraciones (10 por default)
nstart: número de conjuntos aleatorios iniciales cuando centers es un número (1 por default)
K-Medoids (PAM)
El algoritmo k-medoides o PAM (Particionamiento Alrededor de Medoides, Partitioning Around Medoids, Kaufman & Rousseeuw, 1990) también genera agrupaciones con un número (k) dado por el investigador, pero ahora las agrupaciones se representan con un medoide. Los medoides siempre serán puntos dentro del conjunto de datos.
Este método busca ser más robusto que el de k-medias respecto a la sensibilidad de los outliers.
Según Javatpoint (s.f.), el algoritmo procede de la siguiente manera:
- Seleccione k puntos aleatorios de los datos y asígnelos a k grupos. Estos son los medoides iniciales.
- Para todos los puntos de datos restantes, calcule la distancia desde cada medoide y asígnela al grupo con el medoide más cercano.
- Calcule el costo total (suma de todas las distancias desde todos los puntos de datos hasta los medoides)
- Seleccione un punto aleatorio como el nuevo medoide e intercámbielo con el medoide anterior. Repita los pasos 2 y 3.
- Si el costo total del nuevo medoide es menor que el del medoide anterior, haga que el nuevo medoide sea permanente y repita el paso 4.
- Si el costo total del nuevo medoide es mayor que el costo del medoide anterior, deshaga el intercambio y repita el paso 4.
- Las repeticiones deben continuar hasta que no se encuentre ningún cambio con los nuevos medoides para clasificar los puntos de datos.
Las funciones pam() de [cluster] y pamk() de [fpc] pueden utilizarse para calcular PAM.
Sintaxis de pam():
x: conjunto de observaciones (matriz o data frame numéricos) o matriz de distancias
k: número de agrupaciones
diss: valor lógico para tratar a x como matriz de distancias si es TRUE
metric: medida para calcular las distancias, puede ser “euclidean” o “manhattan”
stand: valor lógico para estandarizar columnas antes de calcular las distancias
Sintaxis de pamk():
- data: conjunto de observaciones (matriz o data frame numéricos) o matriz de distancias
- krange: vector de enteros. Número de agrupaciones a ser comparadas con el criterio de la anchura promedio de silueta
- criterion: criterio para calcular el número óptimo de agrupaciones, puede ser “asw”, “multiasw” o “ch”
- usepam: se aplica PAM si es TRUE, se aplica CLARA si es FALSE
- diss: valor lógico para tratar a data como matriz de distancias si es TRUE
Esta última opción tiene la ventaja de que puede escoger k automáticamente usando el criterio seleccionado
CLARA
El algoritmo CLARA (Agrupamiento de Aplicaciones Grandes, Clustering Large Applications, Kaufman and Rousseeuw, 1990) es una modificación de PAM con el objetivo de reducir el costo computacional a cambio de ser menos preciso. Es especialmente útil al tratar con conjuntos grandes de datos.
Según Kassambara (2017), en vez de encontrar los medoides del conjunto de datos completo, se considera una muestra pequeña de los datos con tamaño fijo para aplicársele PAM y así generar un conjunto óptimo de medoides. Este proceso se repite un número determinado de veces para minimizar el sesgo muestral y al final se quedará el conjunto de medoides con el coste mínimo.
El algoritmo procede así:
- Seleccione un subconjunto aleatorio del conjunto de datos original que contenga una cantidad representativa de puntos. Este subconjunto es mucho más pequeño que el conjunto de datos completo, lo que reduce el costo computacional.
- Ejecute el algoritmo PAM en este subconjunto seleccionado: 2.1. Seleccione k puntos como medoides iniciales. 2.2. Asigne cada punto del subconjunto al medoide más cercano. 2.3. Calcule el costo total (suma de las distancias entre los puntos del subconjunto y sus medoides).
- Asigne todos los puntos del conjunto de datos original (no solo los del subconjunto) al medoide más cercano encontrado en el paso 2 y calcule el costo total considerando todos los datos.
- Repita los pasos 1, 2 y 3 varias veces con diferentes subconjuntos aleatorios. Esto permite explorar distintas configuraciones de medoides y reduce la posibilidad de quedar atrapado en un óptimo local.
- Compare los costos totales obtenidos para cada subconjunto y seleccione como resultado final los medoides que correspondan al menor costo total.
- Asigne cada punto del conjunto de datos completo al medoide más cercano del modelo final.
- Las repeticiones terminan cuando se ha alcanzado el número máximo de subconjuntos analizados o cuando los resultados convergen.
La librería [cluster] contiene a la función clara(), la cual resulta útil para estimar CLARA.
x: matriz o data frame con los datos a agrupar. Deben ser numéricos o convertibles a números
k: número de agrupaciones deseadas
metric: medida de distancia utilizada para calcular la similitud entre puntos, puede ser “euclidean” o “manhattan”
samples: número de muestras aleatorias a tomar del conjunto de datos
sampsize: tamaño de cada subconjunto aleatorio
pamLike: Si es TRUE, el algoritmo se comporta como PAM en cada subconjunto; debe ser siempre TRUE