Segmentação de clientes: análise de cluster usando o algoritmo Partitioning Around Medoids (PAM)

Categorias: R

Como comentamos em posts anteriores, segmentação de clientes é uma metodologia de agrupamento que permite às empresas entenderem seus clientes e orientar a tomada de decisões para grupos bem definidos, atendendo as necessidades específicas de cada um deles. No entanto, geralmente encontramos na literatura algoritmos de agrupamento que usam apenas variáveis numéricas, ao passo que, em várias situações da vida real, precisamos agrupar conjuntos de dados que são do tipo misto (variáveis numéricas e categóricas). Neste artigo apresentamos uma metodologia que permite o agrupamento de dados deste tipo, a partir da distância de Gower e do algoritmo PAM (Partitioning Around Medoids).

Distância de Gower

A distância de Gower é um coeficiente de similaridade baseado em diferentes tipos de informações das \(n\) variáveis e que mede as similaridades entre dois indivíduos. Como similaridade não é algo que pode ser medido diretamente, é necessário transformá-la em distâncias para construir uma matriz de similaridade. O índice de Gower é um coeficiente que combina diferentes tipos de descritores e os processa de acordo com seu próprio tipo matemático. Geralmente, para calcular essa distância, índices binários são usados da seguinte forma: dois indivíduos são comparados em uma das variáveis e a pontuação 0 é atribuída quando eles são considerados diferentes e 1 quando eles têm algum grau de similaridade. Para mais detalhes, consulte[1].

Algoritmo PAM

Partitioning Around Medoids (PAM) foi proposto por \([2]\) como um método de agrupamento que associa qualquer medida de distância a um pré-determinado número de grupos. O algoritmo se baseia na busca de \(k\) objetos representativos, dentre os objetos do conjunto de dados, e em vez de usar um centróide convencional para representar os grupos, o PAM usa medoides. Depois de encontrar um conjunto dos \(k\) objetos representativos, os \(k\) clusters são construídos atribuindo cada objeto do conjunto de dados ao objeto representativo mais próximo. A partir daí, é determinado um novo medóide que pode representar melhor o grupo. Todos os elementos do conjunto de dados restantes são atribuídos mais uma vez aos grupos que possuem o medóide mais próximo. A cada iteração, os medoides alteram sua localização. O método minimiza a soma das diferenças entre cada elemento do conjunto de dados e seu medóide correspondente. Este ciclo é repetido até que nenhum medóide mude mais sua localização \([2][3][4]\). Para ilustrar essa metodologia, vamos usar um conjunto de dados publicado no repositório [UCI Machine Learning] (https://archive.ics.uci.edu/ml/machine-learning-databases/00544/). Este é um conjunto de dados sobre os níveis de obesidade em indivíduos do México, Peru e Colômbia, com base em seus hábitos alimentares e condição física. Na tabela a seguir mostramos sua estrutura:

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


A pergunta que inicialmente fazemos é quantos clusters devemos construir? Bem, atualmente existem diferentes métodos para avaliar os resultados em uma análise de cluster, como por exemplo densidade, coesão, separação e raio dos clusters formados. Neste post vamos usar o coeficiente de silhueta para avaliar a qualidade do agrupamento obtido e decidir quantos agrupamentos realizar.


O gráfico do coeficiente de silhueta sugere que devemos decidir entre 2 e 8 clusters, porém, para fins ilustrativos, vamos construir 4 clusters. No gráfico abaixo podemos ver uma representação deles.

Finalmente podemos fazer um resumo de cada cluster

Cluster 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

Cluster 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

Cluster 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

Cluster 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 metodologia é simples e fácil de se aplicar, porém é válido ressaltar a importância de se inspecionar cada cluster construído, verificando se o agrupamento é coerente com o contexto dos dados, se variáveis importantes estão tendo efeito, de fato, na construção dos agrupamentos, e se é possível distinguir e descrever o que cada grupo representa.

Referências

[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.

Tradução

Veia Também