Skip to main content
28 maio 2021
Follow Us

Regras de associação – que produtos se vendem melhor em conjunto?

Não é difícil de adivinhar que alguns produtos estão melhor juntos do que separados. Queijo e fiambre, café e açúcar, gasolina e jornais são alguns exemplos comuns. Mas, quando lidamos com uma grande variedade de produtos de consumo e quando o volume de transações é significativo, nem sempre estas associações são tão óbvias. Nem sempre conhecemos a motivação do consumidor. Analisando os dados transacionais das empresas, podemos descobrir estes padrões, assim como oportunidades para cross-selling e recomendações personalizadas.

O algoritmo Association Rules

No exemplo que analisaremos de seguida, vamos recorrer ao algoritmo Association Rules da biblioteca MLExtend para Python. Os mais interessados poderão consultar a documentação aqui.

De uma forma resumida, este algoritmo percorre os dados transacionais, que registam as vendas incluindo os detalhes de produtos vendidos a cada transação, e cria regras de associação.

De acordo com a documentação, uma regra de associação é uma implicação sob a forma X -> Y. Ou seja, se se vende o produto X, também se venderá o produto Y. Assume-se que não existe qualquer elemento comum entre os dois produtos e a X chama-se antecedente e a Y consequente.

Para validar a força das regras de associação existem diversas medidas. As mais importantes são o suporte, a confiança e o lift.

Suporte da regra X->Y mede a proporção de transações que incluem este par de produtos no total de transações. O suporte é normalmente usado como limite mínimo acima do qual temos interesse em conhecer as regras de associação. Se for baixo, poderá não ter importância. Os valores do suporte podem variar entre 0 e 1.

A confiança é o suporte de X->Y dividido pelo suporte de X. É a probabilidade de o consequente (produto Y) estar incluído numa determinada transação, dado que esta contém também o antecedente (produto X). Os valores da confiança podem variar entre 0 e 1. Na confiança máxima (1) os produtos vendem-se sempre em conjunto.

O lift é a confiança de X->Y dividida pelo suporte de Y. Mede quão mais frequente é o par de produtos em conjunto do que seria de esperar se fossem estatisticamente independentes. Se X e Y forem independentes, então o lift é igual a 1.

Os dados

Uma das vantagens da implementação deste algoritmo, a meu ver, é a facilidade na recolha de dados. Basicamente, tudo o que precisamos para identificar regras de associação é de uma tabela onde constem todas as transações realizadas num determinado período, por exemplo, no último ano.

Não faltam fontes de dados para transações comerciais, seja o software de faturação, os ficheiros SAF-T ou o ERP.

Em função da dimensão da empresa e da variedade de produtos de que dispõe, pode ser aconselhável lidar com períodos menores. A capacidade computacional para executar o algoritmo pode ser considerável. Por outro lado, lidar com períodos demasiado extensos, pode incorporar efeitos de mudança de comportamento do consumidor que, sendo agregados uma única tabela, não são detetáveis.

Eis uma amostra das primeiras linhas da tabela transacional que usaremos neste exemplo. Como habitual, os dados foram adaptados de uma empresa real, mas não são eles mesmos reais.

regras associaçao1

O produto 100079 Gemini Theady87 surge nas 5 primeiras transações, como podemos ver acima. Nela, apenas nos interessa a coluna com a referência do produto e a identificação da transação.

Para que o algoritmo funcione corretamente, é necessário converter esta estrutura que ele entenda. A estrutura correta é a que se pode ver na tabela abaixo. Cada coluna representa uma referência de produto e cada linha uma transação. Os valores da tabela são True ou False, consoante o produto esteja presente na transação ou não.

Eis as 5 primeiras transações, num total de 13.103 analisadas:

regras associaçao2

Note-se que a empresa dispõe de um elevado número de referências (9.467). Este número é particularmente elevado quando comparado com o número total de transações (13.103), o que implica a utilização de valores de suporte relativamente baixos. Portanto, o nível de suporte, sendo um parâmetro do modelo, deve ser utilizado com referência ao problema a analisar.

Os produtos mais frequentes

Se retirarmos as transações cujo suporte é pelo menos 1.5, estamos a excluir a grande maioria das transações. Dos 9.467 produtos, apenas 140 figuram em 1.5% das transações. Por exemplo, na tabela seguinte é possível verificar que o produto mais frequente (com o maior suporte) é o 100001 Gemini Frivillesid.

regras associaçao3

Até esta fase estamos ainda a lidar com produtos individualmente, não chegamos ainda à definição de regras de associação. Para tal, em função dos dados que dispomos, existem várias possibilidades de análise.

Uma solução possível seria extrair aquelas regras cuja confiança é pelo menos 0.5. Como podemos ver na seguinte tabela, com este critério é possível encontrar 48 regras e identificar os conjuntos de produtos frequentes:

regras associaçao4

Se o critério for escolher as regras em função do lift, poderíamos criar um filtro para encontrar as regras com um valor superior a 1.5. O resultado não seria muito diferente do anterior:

regras associaçao5

Se for difícil de lidar com um conjunto tão extenso de regras ou se nos interessar gerir apenas aquelas regras que têm mais do que um antecedente, então podemos acrescentar uma coluna com o número de antecedentes e criar um filtro a partir dessa coluna.

Por exemplo, se nos interessarem apenas as regras com pelo menos dois antecedentes, nível de confiança superior a 0.75 e lift superior a 1.2, teríamos apenas 5 regras:

regras associaçao6

Analisando esta tabela é fácil de verificar que quando se vendem os produtos 102610 Gemini Shatuse e 102402 Gemini Eassom, também é provável que se venda o produto 100198 Gemini Harbiang. Com menos regras, mas mais fortes, é mais fácil de definir estratégias de cross selling.

Porque não procurar os clientes que compraram apenas os antecedentes se esqueceram dos consequentes? Há uma forte probabilidade de se aumentarem as vendas via cross-selling!


Assine a nossa newsletter e receba o nosso conteúdo diretamente no seu email