Análise de Hábitos de Compras Utilizando Regras de Associação

Com Base no Algoritmo Apriori

Postado em 23/06/2020

Conteúdo

  1. Apriori (Regras de Associação)
  2. Conjunto de Dados
  3. Pré-processamento dos registros
  4. Apriori utiliza 3 variáveis
  5. Considerações Finais

Apriori (Regras de Associação)

Vamos ver o algoritmo Apriori em ação. Usaremos o algoritmo Apriori para encontrar regras que descrevem associações entre diferentes produtos comprados.

Este processo analisa os hábitos de compra de clientes por meio da descoberta de associações entre diferentes itens que aparecem no carrinho de compras. A descoberta destas associações ajuda os varejistas no desenvolvimento de estratégias de marketing, uma vez revelam quais itens são frequentemente comprados juntos pelos clientes.

import pandas as pd
from apyori import apriori

Conjunto de dados

Utilizando um conjunto de dados com 7500 registros de compras que ocorreram em um supermercado francês no período de uma semana.

Dataset disponível em: https://drive.google.com/file/d/1y5DYn0dGoSbC22xowBq2d4po6h1JxcTQ/view?usp=sharing

cesto = pd.read_csv('cesto.csv', header=None)
cesto.head()
cesto.count(axis='columns')

Pré-processamento dos registros

A biblioteca Apriori utiliza conjunto de dados como lista de listas.

Portanto, iremos formatar os registros em uma grande lista onde cada transação no conjunto de dados terá uma lista interna da grande lista externa.

registros = []
for i in range(0, 7501):
    registros.append([str(cesto.values[i,j]) for j in range(0, 20)])
regras = list(apriori(registros, min_support=0.0045,
                                     min_confidence=0.2, min_lift=3, min_length=2))
print(len(regras))
print(regras[0])

Apriori utiliza 3 variáveis

Suporte (support) e confiança (confidence) são duas medidas de “interessabilidade” (interestingness), que refletem respectivamente a utilidade e confiabilidade da regra descoberta.

Um suporte de 2% para uma regra de associação significa que 4% de todas as transações sob análise mostram que frango e creme de leite são comprados juntos. O suporte do item I é definido como a razão entre o número de transações que contêm o item I pelo número total de transações.

A confiança de 29% significa que 29% das compras onde os clientes compraram frango também apresentam o item creme de leite como item vendido. Isso é medido pela proporção de transações com o item I1, nas quais o item I2 também aparece. A confiança entre dois itens I1 e I2, em uma transação, é definida como o número total de transações contendo os itens I1 e I2 dividido pelo número total de transações contendo I1.

Lift: Aumento é a razão entre a confiança e o suporte.

Tipicamente, regras de associação são consideradas de interesse se elas satisfazem tanto um suporte mínimo quanto uma confiança mínima.

mostrar = 0
for item in regras:
    items = [x for x in item[0]]
    print("Relação   - " + items[0] + " -> " + items[1])
    print("Suporte   - " + str(item[1]))
    print("Confiança - " + str(item[2][0][2]))
    print("Lift      - " + str(item[2][0][3]))
    print("#################################")
    mostrar += 1
    if (mostrar == 5):
        break

Considerações Finais

Todo o código e mais um pouco está disponível no meu GitHub.

Os passos de execução deste tutorial foram testados com Python 3.6 e tudo ocorreu sem problemas. No entanto, é possível que alguém encontre alguma dificuldade ou erro no meio do caminho. Se for o caso, por favor comente a sua dificuldade ou erro neste post.