Segmentación de clientes: análisis de cluster usando el algoritmo partitioning around medoids (PAM)

Categorías: R

Como hemos comentado en anteriores post, segmentación de clientes es agrupamiento que permite a las empresas comprender sus clientes y orientar la toma de decisiones hacia grupos bien definidos, atendiendo las necesidades especificas en cada uno de ellos. Sin embargo, generalmente en la literatura encontramos aquellos algoritmos de agrupación que utilizan sólo variables numéricas, contrario a esto, en diversas situaciones de la vida real vamos a requerir construir agrupamientos sobre conjuntos de datos que son de tipo mixto (variables numéricas y categóricas). En este post presentamos una metodología que permite realizar agrupamientos cuando se tiene un conjunto de datos de este tipo utilizando la distancia de Gower y el algoritmo PAM (Partitioning Around Medoids).

Distancia de Gower

La distancia de Gower es un coeficiente de similaridad que se basa en diferentes tipos de información de \(n\) variables para medir las semejanzas entre dos individuos. Como la similaridad no es algo que pueda medirse directamente, es necesario transformarla en distancias para así, construir una matriz de similitud. El indice de Gower es un coeficiente que combina diferentes tipos de descriptores y los procesa de acuerdo com su tipo matemático propio. Generalmente, para calcular esa distancia, se utilizan indices binarios así: dos individuos son comparados en una de las variables y se le asigna una puntuación, 0 cuando ellos son considerados como diferentes y 1 cuando tienen algún grado de similitud, para mayor detalle vea [1].

Algoritmo PAM

Partitioning Around Medoids (PAM) fue propuesto por \([2]\) como un método de agrupamiento que mapea desde cualquier métrica de distancia a un número especifico de clúster. El algoritmo se basa en la búsqueda de \(k\) objetos representativos entre los objetos del conjunto de datos, donde, en lugar de utilizar un centroide convencional, PAM utiliza medoides para representar los grupos. Después de encontrar un conjunto de \(k\) objetos representativos, los \(k\) cluster se construyen asignando cada objeto del conjunto de datos al objeto representativo más cercano. A partir de ahí, se determina un nuevo medoide que puede representar mejor al grupo. Todos los elementos de datos restantes se asignan una vez más a los grupos que tienen el medoide más cercano. En cada iteración, los medoides alteran su ubicación. El método minimiza la suma de las diferencias entre cada elemento de datos y su medoide correspondiente. Este ciclo se repite hasta que ningún medoide cambia su ubicación \([2][3][4]\). Para ilustrar esta metodología vamos a utilizar un conjunto de datos publicado en el repositorio de UCI Machine Learning. Este conjunto de datos trata sobre los niveles de obesidad en individuos de México, Perú y Colombia, con base en sus hábitos alimenticios y condición física. En la tabla a continuación mostramos su estructura:

Gender Age Height Weight family_history_with_overweight FAVC FCVC NCP CAEC SMOKE CH2O SCC FAF TUE CALC MTRANS NObeyesdad
Female 21 1.62 64.0 yes no 2 3 Sometimes no 2 no 0 1 no Public_Transportation Normal_Weight
Female 21 1.52 56.0 yes no 3 3 Sometimes yes 3 yes 3 0 Sometimes Public_Transportation Normal_Weight
Male 23 1.80 77.0 yes no 2 3 Sometimes no 2 no 2 1 Frequently Public_Transportation Normal_Weight
Male 27 1.80 87.0 no no 3 3 Sometimes no 2 no 2 0 Frequently Walking Overweight_Level_I
Male 22 1.78 89.8 no no 2 1 Sometimes no 2 no 0 0 Sometimes Public_Transportation Overweight_Level_II
Male 29 1.62 53.0 no yes 2 3 Sometimes no 2 no 0 0 Sometimes Automobile Normal_Weight


La pregunta que inicialmente nos hacemos es cuántos cluster debemos construir? Pues bien, actualmente existen diferentes métodos para evaluar los resultados en un análisis de clúster, por ejemplo densidad, cohesión, separación y radio de los cluster formados. En este post vamos a usar el coeficiente de silueta para evaluar la calidad del agrupamiento obtenido y decidir cuántos agrupamiento realizar.

El gráfico del coeficiente de silueta nos sugiere decidir entre 2 y 8 cluster, sin embargo, con fines ilustrativos vamos a construir 4 agrupamientos. En el gráfico a seguir podemos ver una representación de los 4 clúster.

Finalmente podemos hacer un resumen de cada clúster

Clúster 1

Gender Age Height Weight family_history_with_overweight FAVC FCVC NCP CAEC SMOKE CH2O SCC FAF TUE CALC MTRANS NObeyesdad cluster
Female:177 Min. :14.00 Min. :1.482 Min. : 42.30 yes:490 yes:469 Min. :1.000 Min. :1.000 Sometimes :467 yes: 9 Min. :1.000 yes: 18 Min. :0.0000 Min. :0.00000 Sometimes : 45 Public_Transportation:373 Normal_Weight : 75 Min. :1
Male :367 1st Qu.:19.00 1st Qu.:1.650 1st Qu.: 68.71 no : 54 no : 75 1st Qu.:2.000 1st Qu.:1.927 Sometimes : 0 no :535 1st Qu.:1.876 no :526 1st Qu.:0.3894 1st Qu.:0.04627 Sometimes : 0 Walking : 15 Overweight_Level_I : 48 1st Qu.:1
NA Median :21.93 Median :1.700 Median : 82.22 NA NA Median :2.000 Median :3.000 Frequently: 58 NA Median :2.000 NA Median :1.0000 Median :1.00000 Frequently: 33 Automobile :148 Overweight_Level_II:106 Median :1
NA Mean :23.77 Mean :1.707 Mean : 82.22 NA NA Mean :2.241 Mean :2.583 Always : 13 NA Mean :2.073 NA Mean :1.2036 Mean :0.86699 Always : 1 Motorbike : 5 Obesity_Type_I :224 Mean :1
NA 3rd Qu.:24.50 3rd Qu.:1.778 3rd Qu.: 95.30 NA NA 3rd Qu.:2.610 3rd Qu.:3.000 no : 6 NA 3rd Qu.:2.507 NA 3rd Qu.:2.0000 3rd Qu.:1.36605 no :465 Bike : 3 Insufficient_Weight: 60 3rd Qu.:1
NA Max. :55.25 Max. :1.980 Max. :125.00 NA NA Max. :3.000 Max. :4.000 NA NA Max. :3.000 NA Max. :3.0000 Max. :2.00000 NA NA Obesity_Type_II : 31 Max. :1


Clúster 2

Gender Age Height Weight family_history_with_overweight FAVC FCVC NCP CAEC SMOKE CH2O SCC FAF TUE CALC MTRANS NObeyesdad cluster
Female:606 Min. :16.00 Min. :1.480 Min. : 45.00 yes:600 yes:555 Min. :1.00 Min. :1.000 Sometimes :552 yes: 11 Min. :1.000 yes: 19 Min. :0.0000 Min. :0.00000 Sometimes :530 Public_Transportation:478 Normal_Weight : 52 Min. :2
Male : 0 1st Qu.:21.00 1st Qu.:1.613 1st Qu.: 75.84 no : 6 no : 51 1st Qu.:2.59 1st Qu.:3.000 Sometimes : 0 no :595 1st Qu.:1.582 no :587 1st Qu.:0.0000 1st Qu.:0.09234 Sometimes : 0 Walking : 7 Overweight_Level_I : 90 1st Qu.:2
NA Median :25.19 Median :1.650 Median :104.59 NA NA Median :3.00 Median :3.000 Frequently: 34 NA Median :2.000 NA Median :0.3296 Median :0.55856 Frequently: 20 Automobile :119 Overweight_Level_II: 57 Median :2
NA Mean :25.43 Mean :1.660 Mean : 97.88 NA NA Mean :2.73 Mean :2.756 Always : 12 NA Mean :2.058 NA Mean :0.7038 Mean :0.56154 Always : 0 Motorbike : 2 Obesity_Type_I : 75 Mean :2
NA 3rd Qu.:26.00 3rd Qu.:1.717 3rd Qu.:113.43 NA NA 3rd Qu.:3.00 3rd Qu.:3.000 no : 8 NA 3rd Qu.:2.619 NA 3rd Qu.:1.4140 3rd Qu.:0.88974 no : 56 Bike : 0 Insufficient_Weight: 8 3rd Qu.:2
NA Max. :51.00 Max. :1.843 Max. :165.06 NA NA Max. :3.00 Max. :4.000 NA NA Max. :3.000 NA Max. :3.0000 Max. :2.00000 NA NA Obesity_Type_II : 1 Max. :2


Clúster 3

Gender Age Height Weight family_history_with_overweight FAVC FCVC NCP CAEC SMOKE CH2O SCC FAF TUE CALC MTRANS NObeyesdad cluster
Female: 0 Min. :16.00 Min. :1.600 Min. : 45.00 yes:601 yes:610 Min. :1.000 Min. :1.000 Sometimes :575 yes: 21 Min. :1.000 yes: 17 Min. :0.0000 Min. :0.0000 Sometimes :602 Public_Transportation:462 Normal_Weight : 66 Min. :3
Male :653 1st Qu.:21.01 1st Qu.:1.719 1st Qu.: 79.00 no : 52 no : 43 1st Qu.:2.000 1st Qu.:2.702 Sometimes : 0 no :632 1st Qu.:1.833 no :636 1st Qu.:0.5404 1st Qu.:0.0000 Sometimes : 0 Walking : 19 Overweight_Level_I :115 1st Qu.:3
NA Median :24.05 Median :1.767 Median : 95.42 NA NA Median :2.154 Median :3.000 Frequently: 30 NA Median :2.000 NA Median :1.0000 Median :0.3178 Frequently: 12 Automobile :167 Overweight_Level_II:122 Median :3
NA Mean :25.46 Mean :1.768 Mean : 95.69 NA NA Mean :2.281 Mean :2.733 Always : 16 NA Mean :2.060 NA Mean :1.0426 Mean :0.5187 Always : 0 Motorbike : 2 Obesity_Type_I : 52 Mean :3
NA 3rd Qu.:29.88 3rd Qu.:1.817 3rd Qu.:116.59 NA NA 3rd Qu.:2.741 3rd Qu.:3.000 no : 32 NA 3rd Qu.:2.407 NA 3rd Qu.:1.5290 3rd Qu.:0.9738 no : 39 Bike : 3 Insufficient_Weight: 33 3rd Qu.:3
NA Max. :56.00 Max. :1.930 Max. :173.00 NA NA Max. :3.000 Max. :4.000 NA NA Max. :3.000 NA Max. :3.0000 Max. :2.0000 NA NA Obesity_Type_II :264 Max. :3


Clúster 4

Gender Age Height Weight family_history_with_overweight FAVC FCVC NCP CAEC SMOKE CH2O SCC FAF TUE CALC MTRANS NObeyesdad cluster
Female:260 Min. :16.00 Min. :1.450 Min. :39.00 yes: 35 yes:232 Min. :1.000 Min. :1.000 Sometimes :171 yes: 3 Min. :1.000 yes: 42 Min. :0.0000 Min. :0.0000 Sometimes :224 Public_Transportation:267 Normal_Weight : 94 Min. :4
Male : 48 1st Qu.:18.29 1st Qu.:1.560 1st Qu.:45.00 no :273 no : 76 1st Qu.:2.000 1st Qu.:1.891 Sometimes : 0 no :305 1st Qu.:1.000 no :266 1st Qu.:0.2036 1st Qu.:0.0000 Sometimes : 0 Walking : 15 Overweight_Level_I : 37 1st Qu.:4
NA Median :19.75 Median :1.620 Median :50.00 NA NA Median :2.596 Median :3.000 Frequently:120 NA Median :1.729 NA Median :1.0000 Median :1.0000 Frequently: 5 Automobile : 23 Overweight_Level_II: 5 Median :4
NA Mean :20.66 Mean :1.633 Mean :52.77 NA NA Mean :2.416 Mean :2.629 Always : 12 NA Mean :1.686 NA Mean :1.2033 Mean :0.7732 Always : 0 Motorbike : 2 Obesity_Type_I : 0 Mean :4
NA 3rd Qu.:21.50 3rd Qu.:1.700 3rd Qu.:58.00 NA NA 3rd Qu.:3.000 3rd Qu.:3.000 no : 5 NA 3rd Qu.:2.000 NA 3rd Qu.:2.0000 3rd Qu.:1.0000 no : 79 Bike : 1 Insufficient_Weight:171 3rd Qu.:4
NA Max. :61.00 Max. :1.900 Max. :93.00 NA NA Max. :3.000 Max. :4.000 NA NA Max. :3.000 NA Max. :3.0000 Max. :2.0000 NA NA Obesity_Type_II : 1 Max. :4


Note que esta metodología es sencilla y fácil de aplicar, sin embargo, es importante recordar la importancia de inspeccionar cada clúster construido, tomando una determinación basada en la comprensión de lo que representan los datos, lo que podría representar y la finalidad de cada grupo.

Referencias

[1] Gower J, 1971, A General Coefficient of Similarity and Some of Its Properties, Biometrics, Vol. 27, No. 4, pp. 857-871.

[2] Kaufman L, Rousseeuw P, 1990, Finding groups in data: an introduction to cluster analysis. John Wiley & Sons.

[3] Aruna B, 2014, K-medoids clustering using partitioning around medoids for performing face recognition, International Journal of Soft Computing, Mathematics and Control, Vol. 3, No. 3.

[4] Van der Laan M, Pollard K and Bryan J, 2003, A new partitioning around medoids algorithm, Journal of Statistical Computation and Simulation, Vol. 73, No. 8.

Traducciones

Ver también