Diferentemente do seu irmão mais popular (K-Means), o K-Medoids pode trazer mais explicabilidade e melhores resultados.
Resumo: o cliente da ADVISIA Analytics, um grande player da indústria farmacêutica, estava iniciando um novo canal de vendas que estava apresentando sinais de estagnação na captura de novos clientes e, daqueles que já haviam aderido ao canal, ainda não se tinha conhecimento de como rentabilizá-los. Portanto, propomos uma segmentação para entender como cada grupo de clientes se comporta e como podemos tratá-los de forma diferenciada a fim de rentabilizá-los. Para completar tal tarefa, utilizamos algoritmos de segmentação como o K-Means, que é de fácil explicação para o time de negócio, porém sofre com a presença de outliers. Para contornar essa situação, foi utilizado o K-Medoids.
K-Means e K-Medoids
Diferenças
Tanto o K-Means quanto o K-Medoids são técnicas de clusterização. O primeiro, apesar de mais popular, nem sempre é o mais adequado, pois perde em explicabilidade para o segundo.
Antes de explorar mais detidamente esses cenários em que os algoritmos apresentam diferentes performances, vale entender o motivo dessa disparidade. Assim, destacam-se algumas características que distinguem esses modelos de clusterização:

Ou seja, uma das principais diferenças entre os métodos é que o K-means pode começar em um ponto aleatório — inclusive representando um elemento não existente. Já o K-Medoids escolhe sempre um elemento presente no dataset.
As imagens abaixo representam bem a diferença entre estes modelos. Por exemplo, a imagem 1 deixa evidente como o K-Means é mais sensível a outliers, dado que sua definição de centroide é baseada na média da distância entre os pontos. Já a imagem 2 mostra como isso afeta a definição dos clusters, visto que o algoritmo de K-Medoids tende a ignorar possíveis novas clusterizações com dados outliers — no exemplo: reclassificando o cluster 2 do K-Means como cluster 1.


Tendo visto o peso que outliers podem ter no momento de escolher a metodologia de clusterização, vale ressaltar a importância de análises de dados exploratórias para entender o comportamento da base de dados utilizada e qual o peso dos outliers nesse comportamento, assim como sua influência.
Assim, no momento de decisão entre os dois modelos é válido que sejam feitas algumas reflexões:
– Há outliers na base?
– Quem são esses outliers?
– Faz sentido a criação de um cluster a parte para esses dados – como o K-Means provavelmente faria?
– Um cluster composto por outliers acrescentaria “interpretabilidade” ao modelo?
– Qual o meu objetivo com essa análise?
Na próxima seção, veja um case da ADVISIA Analytics de aplicação de ambos os métodos e o motivo do K-Medoids ter sido escolhido como modelo final.
Como utilizamos o K-Medoids para ajudar uma grande farmacêutica a segmentar seus pontos de venda
O problema
A partir de uma base de vendas de um canal específico do nosso cliente, conseguimos calcular, para cada ponto de venda, a recência do último pedido, a frequência de pedidos por mês e o valor médio por pedido. Com isso, temos as variáveis para realizarmos uma segmentação RFV (Recência, Frequência e Valor), com o objetivo de identificar, com base nele, os melhores pontos de venda para direcionar ações estratégicas de marketing.
No projeto, foi utilizada a premissa que para Recência maior que 2 meses, o ponto de venda foi considerado como Churn para o canal específico.
Veja no gráfico de pontos, a distribuição de Valor por Frequência:

Há um comportamento claro para a variável de valor, entre R$100 e R$750 por pedido, enquanto que para a frequência, há uma divisão visível em 3 grupos. Também é possível notar a presença de um grupo outlier, caracterizado pelo valor elevado de compra.
K-Means
Aplicando o K-Means na base de vendas Valor x Frequência, foi escolhido um K = 4. O que é possível de identificar visualmente. Logo, o resultado foi o seguinte:

Os pontos em laranja podem ser considerados como um grupo de outliers de alto valor. Para o negócio, esse grupo trazia pouca utilidade, considerando que era extremamente menor que os demais grupos. Logo, a variável de maior variância e importância, neste caso, foi a frequência.
Assim, para uma segmentação equilibrada e que “ignore” os outliers sem excluí-los, utilizamos o algoritmo K-Medoids, explicado anteriormente.
K-Medoids

Note como o grupo de alto valor foi incorporado ao grupo inferior. Neste caso, os outliers foram basicamente ignorados, o que trouxe grupos mais equilibrados em número.
Veja como utilizar o algoritmo do K-Medoids:
# É necessário instalar a biblioteca # scikit-learn-extra que contém o KMedoids %pip install scikit-learn-extra from sklearn import preprocessing from sklearn_extra.cluster import KMedoids import pandas as pd df = pd.read_parquet("base_rfv.parquet") df = df[['CNPJ','FREQUENCIA','VALOR']] # Agora iremos normalizar somente as variáveis de input do modelo scaler = preprocessing.StandardScaler() df_norm = scaler.fit_transform(df.set_index('CNPJ')) # Inicializamos o modelo KMedoids com 4 cluster kmedoids = KMedoids(n_clusters=4, random_state=1810) # Aplicamos o fit na base normalizada, como se trata de segmentação # Não há necessidade de dividir a base em treino e teste kmedoids = kmedoids.fit(df_norm) # Por fim, aplicamos o predict na base original para extrairmos # o cluster resultante de cada CNPJ df['Cluster'] = kmedoids.predict(df_norm)
Conclusão
Quando visualizamos o problema em duas dimensões, é nítida a vantagem de utilizar o K-Medoids, já que ele diminui a relevância de outliers na segmentação e, por consequência, gera clusters mais equilibrados em números por cluster e com características mais traduzíveis ao negócio. Porém, para problemas reais, os ganhos com o K-Medoids podem não ser tão facilmente notados.
Vale lembrar que a escolha do algoritmo deve ser condicionada ao problema que você quer resolver, considerando os prós e contras de cada um. O K-Medoids, por exemplo, possui custo O(n²), o que acaba sendo muito pesado computacionalmente para bases com mais de 25 mil linhas, neste caso, vale usar o algoritmo CLARA, que é uma versão simplificada do K-Medoids e que consegue rodar com bases bem maiores.
*Mantemos com rigor a confidencialidade dos nossos clientes.
Data Scientist
ADVISIA Analytics
Formada em Economia e Administração pelo Insper, com um minor em Ciências de Dados. Possui uma sólida experiência em projetos de marketing, segmentação de clientes e modelagem. Demonstrando proficiência nas linguagens R e Python, atualmente atua como Cientista de Dados na Advisia Analytics.
Data Scientist
ADVISIA Analytics
Formado em engenharia elétrica com ênfase em telecomunicações pela Escola Politécnia da USP e atualmente é cientista de dados da ADVISIA Analytics. Possui experiência em projetos de precificação, marketing, segmentação de clientes e modelagem. Proficiência em diversas linguagens de programação e tecnologias de nuvem, como AWS e Azure. Além disso, possui conhecimento em MLOps, permitindo a criação de pipelines de dados escaláveis e modelos de machine learning eficientes e automatizados.
Conheça as soluções da ADVISIA Analytics
Oferecemos soluções especializadas nesse campo, caso tenha interesse em saber mais sobre nossas ferramentas entre em contato conosco hoje mesmo!