Anda di halaman 1dari 6

Segmentación con R

El camino principal para la identificación de segmentos de mercado es la creación de clusters. En R


existe una Task View dedicada a “Cluster Analysis & Finite Mixture Models”, que recoge el
amplísimo número de herramientas para operar en este campo.

0. Libro “Data Mining”


Ver también: 150130 Makhabel - Learning Data Mining with R

0.1. Partitioning Methods (numeric data)


0.1.1. k-Means: A Centroid-Based Technique
 K-means stats::kmeans

0.1.2. k-Medoids: A Representative Object-Based Technique


 PAM cluster::pam

 CLARA cluster::clara

 CLARANS qtcat::clarans

0.2. Partitioning Methods (NO numeric data)

0.2.1. k-modes (categorical data)


 k-modes klaR::kmodes

0.3. Hierarchical Methods


0.3.1. Aglomerative / Divisive Hierarchical Clustering
 stats::hclust

 AGNES cluster::agnes

 DIANA cluster::diana

0.3.2. Multi-phase or Multiphase Clustering


 BIRCH (using Clustering Featuring Trees)
 Chameleon seriation::chameleon

0.3.3. Probabilistic Hierarchical Clustering (generative model)


0.3.4. Bayesian Methods (not in this book)

0.4. Density-based Methods


 DBSCAN dbscan::dbscan

 OPTICS dbscan::optics

 DENCLUE NO HAY EN R

0.5. Grid-based Methods


 STING NO HAY EN R
 CLIQUE subspace::CLIQUE

0.6 Evaluación del Clustering


0.6.1. Assesing Clustering Tendency
Hopkins Statistics

0.6.2. Número de Clusters


elbow method

0.6.3. Calidad del Clustering


Extrinsic Methods
BCubed precision & recall DPBBM::BCubed_metric

Intrinsic Methods
silhouette coefficient cluster::silhouette
{clValid}

0.7. Probabilistic Model-Based Clustering


Fuzzy Clusters {fclust} e1071::cmeans

0.8. Clustering High-Dimensional Data


0.8.1. Subspace Clustering Methods
PROCLUS subspace::ProClus

Biclustering {biclust}
1. Clusters. Introducción
Los métodos de agrupamiento (Clustering) se utilizan para identificar grupos de objetos similares
en conjuntos de datos multivariantes.
La forma de agrupación habitual está basada en las distancias relativas entre el conjunto de objetos,
de forma que se agrupen en cada cluster los objetos con menores distancias entre sí y más
distanciados del resto de los clusters.
Una cuestión básica a resolver es el número de clusters finales, que en principio puede ser
cualquiera, por lo que hay que poner en práctica procedimientos para estimar el número ideal de
clusters y, en consecuencia, evaluar la calidad del resultado de cada solución posible.
Hay diferentes métodos, que se exponen más adelante:
 Métodos de partición no jerárquicos (Partitioning methods) (basado en centroides?)
 Cluster jerárquico (Hierarchical clustering)
 Cluster difuso (Fuzzy clustering)
 Cluster basado en densidad (Density-based clustering)
 Cluster basado en modelos (Model-based clustering)
En R se cuenta con un amplio conjunto de paquetes para estos métodos y la correspondiente
visualización de los resultados. Igualmente existen métodos avanzados para detectar pautas de
objetos que adoptan cualquier forma, en grandes conjuntos de datos que incluyen ruido y outliers.
En fin, también en R se cuenta con métodos que permiten concluir si en un dataset existe
realmente una estructura de clusters o simplemente la aplicación de cualquier método de
clustering acaba devolviendo un número determinado de agrupamientos.

2. Paquetes necesarios y preparación de los datos


Carga de paquetes:
library (cluster) # para el cálculo de clusters
library (factoextra) # para visualización, basado en ggplot2
library (magrittr) # para manejo del piping: %>%
library (clustertend) # para "assessing clustering tendency"
library (seriation) # idem de forma visual

Carga de datos y preparación de los mismos:


data (USArrests) # dataset incluido ya en R
sin_nas <- na.omit (USArrests) # eliminamos los NAs
my_data <- scale (sin_nas) # estandarizamos para evitar
disparidades de magnitud
# my_data <- USArrests %>% na.omit () %>% scale () # todo a la vez
3. ¿Existen realmente clusters en nuestro dataset?
Una cuestión a tener en cuenta en el terreno del machine learning no supervisado es que los
métodos de clustering devuelven siempre clusters aunque el dataset realmente no los contenga. Por
ello antes de realizar el análisis cluster es necesario asegurarse de que existen realmente clusters y
no estructuras aleatorias. Este proceso es conocido como viabilidad del análisis cluster o “assessing
of clustering tendency” (estimar la tendencia del clustering).
# library (clustertend) # para "assessing clustering tendency"
# library (seriation) # idem de forma visual

3. Medida de distancias y métodos de agrupación


3.1. Calculamos las distancias entre todos los pares de casos:
distancias1 <- dist (USArrests) # función del paquete {base}
distancias2 <- get_dist (USArrests, stand = TRUE, method = "pearson") #
soporta medidas de distancias basadas en correlaciones, incluyendo
métodos “pearson”, “kendall” y “spearman”

Visualizamos las distancias:


fviz_dist (distancias2, gradient = list (low = "#00AFBB", mid = "white",
high = "#FC4E07"))

3.2. Métodos para agrupar/separar los casos


Métodos aglomerativos con diferentes métodos de unión (linkage methods). Los más importantes
son:
 Mínima distancia o vecino más próximo.
 Máxima distancia o vecino más lejano.
 Distancia media (average distance).

4. Métodos de partición no jerárquicos


Se usan para agrupar objetos, pero no variables, en un conjunto de k clusters ya predeterminado.
No se tiene que especificar una matriz de distancias ni se tienen que almacenar las iteraciones. Todo
esto permite trabajar con un número de datos mayor que en el caso de los métodos jerárquicos.
Se parte de un conjunto inicial de clusters elegidos al azar, que son los representantes de todos ellos;
luego se van cambiando de modo iterativo. Los métodos más habituales son: K-means, PAM y
CLARA.
4.1. Determinación del número óptimo de clusters
Utilizamos la función “fviz_nbclust” del paquete {factoextra}:
fviz_nbclust (my_data, kmeans, method = "gap_stat")

La gráfica resultante sugiere tres clusters como número óptimo.

4.2. K-means
Es un método que permite asignar a cada observación el cluster que se encuentra más próximo en
términos del centroide (media). En general, la distancia empleada es la euclídea.
Pasos:
1. Se toman al azar k clusters iniciales.
2. Para el conjunto de observaciones, se vuelve a calcular las distancias a los centroides de
los clusters y se reasignan a los que estén más próximos. Se vuelven a recalcular los
centroides de los k clusters después de las reasignaciones de los elementos.
3. Se repiten los dos pasos anteriores hasta que no se produzca ninguna reasignación, es
decir, hasta que los elementos se estabilicen en algún grupo.
Usualmente, se especifican k centroides iniciales y se procede al paso (2) y, en la práctica, se
observan la mayor parte de reasignaciones en las primeras iteraciones.
En nuestro caso, obtenemos los clusters, fijando de antemano un número de tres:
set.seed (123)
km.res <- kmeans (my_data, 3, nstart = 25)
# Visualizamos con la función “fviz_cluster” del paquete {factoextra}:
fviz_cluster (km.res, data = my_data,
ellipse.type = "convex",
palette = "jco",
ggtheme = theme_minimal())

Tablas de análisis de la varianza


El objetivo que se persigue al formar los clusters es que los centroides estén lo más separados entre
sí como sea posible y que las observaciones dentro de cada cluster estén muy próximas al centroide.
Lo anterior se puede medir con el estadístico de la F de Snedecor, y equivale al cociente de dos
distribuciones chi-cuadrado divididas entre sus grados de libertad.
El estadístico F se calcula, así, como un cociente de medias de cuadrados. En el caso del análisis de
cluster:
F = medias de cuadrados entre clusters / medias de cuadrados dentro de clusters
Si F > 1, las distancias entre los centroides de los grupos son mayores que las distancias de los
elementos dentro de los grupos. Esto es lo que se pretende para que los clusters estén
suficientemente diferenciados entre sí.
Problemas que surgen al fijar k clusters iniciales
 Si dos centroides iniciales caen por casualidad en un único cluster natural, entonces los
clusters que resultan están poco diferenciados entre sí.
 Si aparecen outliers, se obtiene por lo menos un cluster con sus objetos muy dispersos.
 Si se imponen previamente k clusters puede dar lugar a grupos artificiales o bien a juntar
grupos distintos.
Una posible solución es considerar varias elecciones del número k de clusters comparando luego
sus coeficientes de la F de Snedecor.

4.3. PAM (Partitioning Around Medoids)


Un medoide puede ser definido como el objeto de un grupo cuya disimilaridad media a todos los
objetos en el grupo es mínima. Es el punto ubicado más hacia el centro en todo el grupo. Es menos
sensible que el método k-means al ruido y los outliers. Es necesario que el usuario defina el número
de clusters (k). El método más habitual es el algoritmo PAM (Partitioning Around Medoids).

4.4. CLARA

Anda mungkin juga menyukai