Análise RFM - Recency, Frequency e Monetary Value

A análise RFM é um modelo de clusterização de clientes que visa dividi-los em grupos para 3 características:

Última vez que o cliente fez uma determinada ação (precisa ser definido pelo negócio), geralmente uma compra ou um engajamento específico;

Quantidade de ações (compras, engajamentos, etc) realizados pelo cliente em um intevalo de tempo definido.

Quantia total gasta ou alguma quantificação de valor recebido do cliente.


Primeiros passos

A primeira questão importante a se atentar é a definição de como serão divididos estes grupos. Pode ser uma definição personalizada da empresa seguindo alguma diretriz específica do negócio ou seguir algumas regras quantitativa como a divisão 80/20 de Pareto ou a partir dos percentis.

Neste estudo será exemplificado o modo a partir dos percentis, onde os clientes são dividios em grupos de mesmo tamanho a partir da quantidade de níveis escolhida para cada variável (R, F e M).

Por exemplo:

Se o negócio definir o R, F e o M em 5 níveis para cada cliente, o processo manual para o R (recency) seria:

Note que estamos encontrado O CLIENTE que divide a distribuição no meio e não a data do meio do período, ou seja, estamos dividindo os clientes em 2 grupos de mesma quantidade. Tecnicamente, esté cliente é a mediana ou o percentil de 50%.

Perceba que esta divisão cria 5 grupos de mesmo tamanho. Portanto se entrarem 2 clientes no grupo dos que tem nota (3) em Recência, um cliente precisará passar para nota (2) ou (4) a depender dos valores.

De forma técnica, para uma distribuição de 5 níveis, valores que dividem os clientes são o percentil de 25% (segundo quartil), 50% (mediana) e 75% (terceiro quartil);


Mas ATENÇÃO!

Um ponto positivo é que a clusterização acontece de maneira relativa, sendo pouco influenciada por outliers e se auto-ajustando de acordo com as tendências gerais. Contudo, ela não fornece insumos para avaliações globais como taxas de retorno, valores gastos, entre outros.

Como assim?

Imagine que uma empresa X tenha péssimos indicadores de faturamento, quantidade de vendas e retorno. Ainda assim, a análise dividirá os clientes igualitáriamente entre os níveis, havendo o mesmo números de indivíduos no nível 1 e no 5. Ou seja, os clientes do nível 5 podem estar gastado pouco em relação ao esperado pelo negócio, porém relativamente eles estão no nível mais alto de (M).

Os níveis RFM são relativos aos demais individuos da amostra.


Como utilizar a matriz RFM

Alguns portais sugerem classificar as diferentes porções da matriz em cluster e traçar diretrizes para cada cluster de cliente de acordo com suas necessidades e expectativas.

Um exemplo de matriz é a seguinte, o crédito do design é do portal Vida de Produto.

image.png


Mão na massa: hora do código!

Para este exemplo será utilizado um conjunto de dados do repositório da UCI.

Se você já viu nosso artigo sobre Análise Coorte, pode pular a etapa de leitura e tratamento dos dados, pois são as mesmas etapas já realizadas no artigo da Análise Coorte.

Os dados estão em uma planilha do excel (.xlsx) e representam vendas de uma loja on-line no Reino Unido. As colunas presentes no dataset são:

Contudo, para elaboração da análise RFM só serão utilizadas as 5 colunas em destaque.


Pacotes e bibliotecas Python utilizadas

Leitura dos dados

Tratamento dos dados

Contagem de linhas e identificação do tipo

Limpeza dos dados

Na descrição do conjunto de dados é informado que os pedidos que se iniciam com C representam cancelamentos.

Portanto, estes registros serão eliminados do conjunto.

Contabilizando linhas com valores não preenchidos

Eliminando os registros que possuem valores não preenchidos, pois distorcem as contagems e cálculos utilizados.

Verificando se existem vendas duplicadas

Eliminando duplicadas

Conferindo estatísticas para ver se existe algum valor fora do padrão

Existem preços unitários com valor 0,00. Será puxado um exemplo dos registros:

Aparentemente são registros comuns, pode ser brindes ou promoções. Serão mantidos na análise.

Venda mais antiga

Venda mais recente


Criando novas colunas para as métricas

Como o conjunto veio com valor unitário e quantidade, precisamos criar uma coluna com o valor total de cada venda, depois agrupar o valor da venda por cliente (soma dos valores) e teremos o Valor Monetário para cada cliente.

Uma segunda manipulação que precisamos fazer é o referencial para a análise da Recência (R). Normalmente a recência de uma compra é calculada em relação ao dia da análise ou dia do hit, que é o momento (dia, mês, ano e hora) em que os dados são extraídos da fonte de dados (caso não seja streaming em tempo real).

Entretanto, como os dados são de compras realizadas entre 01/12/2010 e 09/12/2011, vamos definir uma variável dia_do_hit para simular que a análise está sendo feita um dia depois da última compra.

Pronto, as diferenças de tempo para calcular a Recência serão em relação ao dia 10/12/2011. Em situações normais podemos definir um dia_do_hit ou utilizar o módulo today quando as análises são em relação ao próprio dia de elaboração.

Calculando os índices R, F e M

Primeiro deve ser calculado os valores dos índices R, F e M. Observe que no momento ainda não são os níveis, os níveis serão divididos a partir dos quartis destes índices.

Observação

Pronto, este dataframe será a base para todas as variações da análise RFM.


Criação da matriz RFM

Para criação da matriz sugerida no início do estudo é necessário apenas pivotar ou transpor, e preenche-la com a contagem de clientes.

Demais consultas

A matriz permite recuperar os clientes com qualquer filtro desejado, como por exemplo:

Consultar clientes campeões (R nível 5 e média de F e M nível 5)

Atribuir classes

É possível atribuir as classes pré-definidas a cada setor da matriz de acordo com as diretrizes da empresa. Neste caso iremos atribuir as classes sugeridas no início do estudo.

Pronto, essa tabela por exeplo pode ser exportada para excel e encaminhada para outras estratégias direcionadas para cada cluster como e-mail marketing e CRM. o comando para exportar em excel é:

rfm.to_excel("nomedaplanilha.xlsx", index=False)

Isso cria uma planilha .xlsx na mesma pasta em que está o notebook. Caso queira especificar um local diferente para salvar é só escrever o endereço no disco:

rfm.to_excel(C:endereco/nomedaplanilha.xlsx')

Referências

Conjunto de dados no repositório da UCI

Cohort Analysis & Customer Segmentation with RFM