A análise RFM (Recency, Frequency and Monetary) é uma forma de segmentação da sua base de clientes com base em quão engajados com o seu negócio eles estão.
Recency (Recência): quando o cliente fez a compra mais recente de um produto ou serviço.
Frequency (Frequência): frequência com que os clientes fazem compras dos produtos ou serviços.
Monetary (Monetário): quanto um cliente costuma gastar com produtos ou serviços.
Este tipo de análise tem o objetivo de agrupar os clientes para que possamos entender quem são os clientes que mais compram e aqueles que menos compram.
Para essa análise eu utilizei um conjunto de dados de e-commerce publicado no kaggle. Este conjunto de dados possui 41 variáveis e 9 tabelas, obviamente que não utilizamos todos os campos, apenas os principais como data da compra, valor, quantidade de compras e mais alguns que irei mostrar na exploração de dados (Exploratory Data Analysis ou EDA).
Tabelas utilizadas:
Como as variáveis estão em tabelas separadas, no modelo fato e dimensão, teremos que juntar todas elas para facilitar o desenvolvimento. Abaixo segue um exemplo da modelagem no banco de dados.
Juntando as tabelas:
Análise Exploratória
Agora que temos todas as variáveis em uma única tabela, podemos começar a primeira fase do projeto que é explorar a base de dados, gerar algumas visualizações e entender alguns padrões.
Já que estamos falando de clientes, por que não começar respondendo a seguinte pergunta: quantos porcentos dos meus clientes contribui para o faturamento? (Famoso 80/20).
Com o gráfico acima podemos ver que 40mil clientes (mais ou menos 42%) da base representam 80% do faturamento.
Certo, mas qual a concentração desses clientes? Onde eles estão? Por se tratar de um e-commerce eles podem estar espalhados pelo Brasil todo.
Agora conseguimos entender que esses 40mil clientes estão concentrados em apenas 9% das 4mil cidades registradas.
E quanto aos períodos e horários em que as compras mais acontecem? Qual horário de pico de compra? Esse pico acontece mais de manhã, tarde ou de noite?
A quantidade de compras começa a aumentar a partir das 9 da manhã e até as 22h mantêm sem muita sazonalidade. Quando mudamos a visualização de horas para períodos, podemos observar que a maior quantidade de compras ocorre no período da tarde (entre 12h e 18h59) e em seguida no período da noite (entre 19h e 23h).
O interessante do gráfico de vendas por dia é que a quantidade de vendas segue os dias da semana em sequência. Apenas no final de semana que a quantidade de compras passa a ser maior no domingo do que no sábado.
Agora falando um pouco de produtos: quais foram os produtos com melhores e piores avaliações?
Top10 categorias com melhores avaliações:
Como não temos o nome de cada produto, utilizei o campo “category” e filtrei a quantidade de compras acima de 30. Books general, books imported e flowers são as categorias que mais foram bem avaliadas, mesmo não sendo as categorias com maior quantidade de compras.
Top10 categorias com piores avaliações:
Outro tipo de informação interessante é sobre a taxa de cancelamento das compras. Qual tipo de pagamento tem uma maior taxa de cancelamento?
Podemos ver que a taxa de cancelamento (Avg Cancelation Rate) é praticamente a mesma em todos os métodos de pagamento. Mas notamos que um pequeno desvio acima da média para credit_card.
Será que existe alguma relação entre o tempo de entrega com a avaliação? No conjunto de dados temos os dados de avaliação e a data de entrega.
É possível ver claramente uma relação direta entre “dias de entrega” com “review_score”. À medida que o tempo de entrega diminui, a avaliação do cliente tende a ser mais alta.
Neste outro gráfico também podemos ver nitidamente uma relação negativa entre o tempo que o vendedor leva para entregar os pedidos com a avaliação do cliente. Isso pode significar que a base de clientes leva em consideração não só o produto em si, mas também o serviço de entrega.
Já que essa é uma informação importante para o negócio, vamos analisar como anda o tempo de entrega dos vendedores ao longo dos anos.
No conjunto de dados temos apenas 3 anos, porém é possível observar que o tempo médio de entrega vem diminuindo. Com isso, podemos ver que as avaliações dos clientes vêm aumentando.
Análise RFM
Para fazer a análise de RFM vamos precisar construir outro conjunto de dados, baseado nas tabelas que já temos, agrupando por cliente. As variáveis que iremos construir são, recência, frequência e valor (monetário).
Calculando a recência.
Agora temos uma nova tabela com a data da última compra e a recência por cliente.
Calculando a frequência.
Armazenando em outra variável temos agora a frequência de compras por cliente.
Calculando o valor(monetário)
E por último temos o valor gasto por cliente.
Com as 3 variáveis juntas, agrupadas por cliente, podemos visualizar a distribuição e entender o comportamento.
Com essa visualização podemos ver que os dados estão bem assimétricos, principalmente nas variáveis “frequência” e “valor pago”. Antes do método de agrupamento, utilizando o K-Means, seria interessante fazer uma transformação log nos dados. A transformação log pode ser usada para lidar com dados distorcidos como esses.
A transformação logarítmica fornece dados melhores ao método K-Means para que ele possa calcular e encontrar clusters para os dados, eliminando muitos dados distorcidos.
Com a transformação logarítmica feita, podemos usar elbow method (Método cotovelo). Este método é usado para determinar o número ideal de clusters em agrupamento no K-Means.
Podemos considerar que o nosso agrupamento terá 4 clusters.
Conclusão
Podemos ver que a nossa variável “frequência” não agrega tanto valor, pois a maioria dos clientes só fez uma compra. Além disso, a maioria dos clientes não faz novas compras.
Cluster 0: Clientes nesse cluster tem um tempo de rencência menor, ou seja, os clientes passam menos tempo sem comprar, porém o valor gasto pelos clientes é baixo (valor pago).
Cluster 1: Possui uma recência um pouco maior, mas a frequência e o valor gasto pelos clientes acaba sendo maior do que dos outros clusters. Acredito que esse seja o melhor.
Cluster 2: Podemos chamar esse cluster de “Baixo valor/Clientes perdidos”. A recência é muito alta e o valor gasto pelos clientes é muito baixo, ou seja, clientes que compram uma coisa ou outra e quase nunca retornam.
Cluster 3: Aparentemente este é o segundo melhor cluster. A recência é a segunda melhor, o valor gasto é o maior e a quantidade de clientes nesse cluster é relativamente grande (22.748).
Com os clientes agrupados fica muito mais claro entender o comportamento e direcionar os esforços do time de marketing (qual grupo de clientes devemos investir mais? Qual grupo de clientes trará mais retorno? Qual deles devemos fidelizar? E muito mais)
O código do projeto está disponível aqui, no meu GitHub :)
Espero que tenha gostado e caso queira comentar alguma coisa, tanto da parte técnica quanto das análises, fique à vontade.