Insights Letter

Segmentação RFV utilizando o algoritmo K-Medoids

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:

Diferença entre K-Means e K-Medoids – Fonte: Autor

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.

Imagem1
Imagem 1: K-Means à esquerda e K-Medoids à direita – Fonte: Link
Imagem 2
Imagem 2: K-Means à esquerda e K-Medoids à direita, os outliers são um cluster para o K-Means, e para o K-Medoids eles apenas são incorporados a um cluster maior – Fonte: Link

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:

Distribuição Valor (R$) x Frequência (pedidos por mês) – Fonte: Autor

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:

Clusterização utilizando K-Means – Fonte: Autor

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

Clusterização utilizando K-Medoids – Fonte: Autor

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.

Malu Brito

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.




William Nagano

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!

ADVISIA Analytics

Count on our team of experts to achieve the digital transformation of your company.

Conte com o nosso time de especialistas para alcançar a transformação digital da sua empresa.