-
Como nós construímos
regras de associação?
-
Existem diversas formas de você
encontrar uma associação
-
entre um produto e outro.
-
Aqui nosso objetivo é olhar
para produtos, de fato.
-
Nós não estamos interessados
no perfil dos usuários.
-
Não me interessa saber quem está
comprando o quê.
-
Eu quero saber qual produto
está relacionado com quais outros.
-
Basicamente, nós vamos minerar regras.
-
É aqui que aparece o tal do Data Mining.
-
Data Mining fica muito evidente
nesse tipo de algoritmo.
-
Quando estamos tentando encontrar
relações de produtos
-
e vamos verificar se essa relação
procede ou não procede.
-
Portanto, a nossa base de dados
deve ser sempre uma transação,
-
um histórico de transações de vendas,
por exemplo.
-
Eu posso pensar o seguinte.
-
Em um mercado,
quais são os produtos
-
comprados em conjunto
ao longo do tempo?
-
Eu quero minerar regras
de compras similares entre esse histórico.
-
Para essa simulação,
vou utilizar uma base de dados disponível
-
no Kaggle que está imitando
um histórico de compras no supermercado.
-
Então,
aqui já estou na mente do Colab
-
com uma instância inicializada.
-
Eu já subi a base também aqui
no nosso ambiente
-
e vou começar a executar os códigos.
-
O primeiro passo é rodar
essa célula que está instalando
-
a biblioteca "apyori",
que é uma brincadeira
-
com o nome de Python
e o método em si.
-
Pronto,
já está instalado aqui nesse ambiente.
-
Agora eu posso fazer alguns imports
necessários,
-
que é pandas,
numpy para limpeza de dados.
-
E de fato, o algoritmo biblioteca
é apyori.
-
Aqui vou ler essa base
que está salva como um CSV
-
e nesse caso específico,
ela não tem nenhum cabeçalho.
-
Não é um CSV tradicional,
digamos assim.
-
Tanto que na execução já mostra
como se fosse um dataframe
-
com as linhas lidas.
-
O que me interessa é linha a linha,
o que foi adquirido.
-
Então, nós temos aqui
colunas sem nome,
-
porque a coluna "0",
por exemplo,
-
contém o primeiro
produto que passou nessa compra.
-
A coluna "1",
contém o segundo produto,
-
a "2" o terceiro
e por aí vai.
-
Então, pode ser que eu compro
apenas um produto
-
ou uma sequência
de produtos também.
-
Esses "NaN" indicam
esse produto não foi comprado
-
ou seja, nem vi o produto em si.
-
Mas essa cesta de compras
teve apenas três produtos,
-
dois e por aí vai.
-
É normal ter uma matriz bem esparsa
nesse tipo de dado,
-
portanto temos que prepará-la
para implementar o método.
-
Nessa preparação nós temos
que eliminar esse tanto de "NaN".
-
Basicamente, nós queremos
criar uma lista de lista, ou seja,
-
para cada compra,
cada transação de fato, cada cesta.
-
Eu quero criar uma lista
onde apenas produtos comprados
-
estejam de fato presentes nessa lista.
-
Quem está com valor "NaN"
eu possa ignorá-lo.
-
Vou fazer isso
com Python puro mesmo
-
a partir do código da próxima célula.
-
Então,
aqui embaixo nós temos um código
-
que está fazendo o seguinte.
-
Basicamente,
nós temos aqui
-
uma lista de transações,
uma lista vazia
-
e eu vou adicionar nessa lista
uma outra lista.
-
Ficando uma lista de listas.
-
Onde cada lista
que compõe a lista externa
-
ela está analisando os produtos
que foram adquiridos
-
e se ele for "NaN" estou ignorando.
-
Eu só vou por dentro da lista mesmo
-
a palavra que representa
o nome daquele produto.
-
Então eu estou percorrendo
o dado da primeira linha até a última,
-
criando essa nova representação,
esse novo dado.
-
Aqui temos aqui um exemplo
de como ficou.
-
Então cada lista dessa
é uma cesta de compras.
-
Ela pode ser menor,
maior e por aí vai.
-
Notem que me interessa saber
e a relação de um produto com o outro.
-
A quantidade não é relevante no caso.
-
Então,
saber que existe uma relação,
-
por exemplo,
entre frango e ovo
-
já é irrelevante para mim.
-
Me interessa saber quantos ovos
são associados a compra,
-
de quantos quilos de frango,
por exemplo,
-
ou vice versa.
-
Então,
como a sessão aqui é grande,
-
vou lá para baixo para começar
a construir a regra de associação.
-
O uso do método "apriori"
é muito direto.
-
Basicamente,
ele espera esses "records"
-
que são aquela lista de listas,
-
a lista dos produtos comprados de fato
-
e aqui alguns fatores de parametrização.
-
Essa parametrização depende muito
do que a gente quer
-
como objetivo de negócio.
-
Aqui nós estamos fazendo
a parametrização do método baseado
-
em algumas métricas de avaliação
da recomendação, ou seja,
-
quero avaliar o poder,
digamos assim,
-
daquela associação
de um produto com outro.
-
Esse poder está ligado
às métricas de avaliação
-
da relação entre um produto e outro.
-
Eu posso adicionar métricas
como confiança,
-
alavancagem,
entre tantas outras.
-
Eu posso limitar inclusive,
o tamanho da regra a ser criada.
-
Eu posso limitar,
por exemplo,
-
que as regras envolvam
pelo menos dois produtos,
-
mas eu posso criar regras
que envolvem pelo menos três,
-
quatro,
cinco produtos também.
-
No método a priori
não tem certo ou errado,
-
nós vamos fazer combinações
de produtos á produtos
-
e verificar se existem dados
evidências reais
-
que comprovem a eficácia,
eficiência,
-
o poder de fato daquela associação.
-
Por exemplo,
um lift é uma métrica interessante
-
que mostra alavancagem quando eu
tenho um produto que leva a compra do B,
-
o quanto que o produto está alavancando
a venda do B.
-
Por exemplo, a métrica do suporte.
-
Imagine que era verificar uma associação
entre maçã e banana,
-
então o suporte dessa regra indica
quantas vezes
-
maçãs e bananas
foram compradas em conjunto
-
em todo o histórico de transações
que estão analisando,
-
e eu posso verificar o suporte mínimo
-
assim que eu posso especificar um lift,
uma alavancagem mínima.
-
O que isso quer dizer?
-
Eu estou minerando as regras
e gerando combinações entre produtos.
-
Eu quero ter
-
uma regra que tenha no mínimo
uma alavancagem de três, por exemplo.
-
Ou seja, essa é produto.
-
A compra dele alavanca
a compra do bem em pelo -3 vezes.
-
Ou então, supondo nessa associação
-
entre produção de maçãs e bananas,
-
eu quero ter um suporte mínimo, ou seja,
quero regras que indicam
-
que a parte que aparece no histórico
pelo menos número mínimo de vezes.
-
Portanto, uma vez configurado
o que a gente quer do ponto de vista de
-
regras mínimas, nós podemos rodar aqui
o apriori para fazer essa mineração
-
sobre o conjunto de dados
já pré preparado.
-
Então rodar o algoritmo
-
e veja que ele
-
rodou muito rápido,
porque uma base de dados pequena de fato.
-
E aqui estou criando uma lista, forçando
-
a criação de uma lista da associação
e verificando seu tamanho.
-
Foram geradas 24 regras.
-
Claro que se tivessem histórico de dados
maior, com mais produtos,
-
teriam sido muito mais métricas
serem geradas.
-
Ou caso tivessem relaxado essas métricas,
-
eu poderia ter regras
um pouco mais fracas, mas mais abundantes.
-
Vamos entender a como
que o apriori funciona para
-
como que ele gera essas regras.
-
Aqui eu posso puxar a primeira regra
gerada por meio
-
no seguinte comando Association Round zero
-
Olhando a lista de regras,
quero pegar primeiro
-
e aqui está mostrando os itens de fato.
-
Então é um creme com frango.
-
Qual é o item a ser colocado?
-
Qual o item que gerou a compra
e posteriormente
-
essa regra tem qual lifetime mínimo?
-
Qual é a confiança apoiada dessa regra?
-
Também?
-
Eu posso pegar o seguinte é o segundo item
-
dessa composição, dessa regra,
que é de fato a lista de recomendações.
-
Então to pegando a lista
Association Rules,
-
o primeiro item ou zero e vou pegar agora
a lista de recomendação em si.
-
Então o segundo item eu posso pegar aqui
como uma lista de fato.
-
E se eu quiser pegar qual o produto
personalizado,
-
eu vou fazer uma outra indexação
baseado aqui
-
na posição zero dois na zero e novamente.
-
Então aqui eu tenho exatamente os produtos
-
configurados.
-
Note que a saída da regra anterior
é dessa,
-
até mesmo porque essa regra aqui
é bem simples tem dois produtos
-
apenas, ou seja, nesse ponto
a regra já está melhorada.
-
O que tenho que fazer
-
é simplesmente passar por essas regras
explorando que regras são essas?
-
Construindo aquele motor, digamos assim.
-
Quem compra a compra? A parte B.
-
A gente pode fazer isso com um laço
que está iterando por essas regras também
-
começando na tela.
-
As principais métricas
é que regras que foram geradas.
-
Vamos ver.
-
A próxima tela faz exatamente isso,
-
criando aqui.
-
Até mesmo o numerador da regra
está aí um, dois, três
-
e está separando
uma impressão da outra por uma.
-
Uma sequência de 15 iguais,
digamos assim, impressas na tela.
-
Então vem naquele isso.
-
A primeira regra tem aqui na sexta
-
um creme também e frango.
-
E a segunda regra temos aqui escalope.
-
É uma carne também
com o molho de cogumelo.
-
A terceira regra está colocando
a carne também é massa.
-
E por aí vai.
-
Então nós podemos verificar
quais são os produtos
-
que foram comprados em conjunto
às vezes com umas regras pequenas.
-
Tá com o tamanho de dois?
-
Como nós configuramos
o tamanho mínimo da regra para dois
-
envolvendo dois produtos,
-
nós temos várias regras que foram criadas
com apenas dois produtos.
-
Mas olhando um pouco mais,
-
quais dessas regras
que foram impressas com essas 24 criadas?
-
Isso em regras um pouco maiores, com três,
com quatro produtos também.
-
No entanto, elas são menos
comuns do que regras menores.
-
Então, aqui embaixo
-
nós temos também um exemplo
com três produtos
-
ou com outros seis produtos diferentes
-
com outros seis produtos também,
-
que pode ser simplesmente
uma combinação entre eles.
-
Eu posso tirando um produto
e colocando outro no lugar,
-
mas essa base nos permitiu
gerar esse conjunto de regras
-
e a pergunta que fica é como é que
nós vamos entregar essas regras?
-
Se for, por exemplo, uma loja física,
nós podemos pegar produtos
-
que tem uma relação
e colocar próximo dos outros.
-
É claro que isso pode não ser viável.
-
Por exemplo, eu vou colocar um enlatado
próximo de uma carne que está no açougue.
-
Talvez levar uma prateleira do enlatado
para próximo do açougue faz sentido.
-
Ao levar a carne
para um outro lugar, pode não ser viável
-
agora, no cenário
-
digital, quando, por exemplo,
uma compra num e-commerce e nesse mercado,
-
ou até mesmo no aplicativo
de relacionamento com os usuários,
-
com os clientes dessa loja,
nós podemos verificar
-
baseado em qual produto
a pessoa está interagindo,
-
colocou na compra, Pode ter algum card
que indica por que não fizeram compra
-
também tal produto e esse outro aqui
como nos conta alguma coisa do gênero?
-
Assim, o objetivo principal da regra
de associação é achar a associação
-
uma relação de produtos
que devem ser combinados.
-
A forma como nós vamos entregar
essa inteligência
-
que a máquina gerou para a gente
depende muito do negócio
-
a ser impactado
e como ele quer implementar essa regra.
-
De fato, no mundo real.