-
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 de tamanho.
-
E também fica muito evidente
nesse tipo de algoritmo.
-
Quando nós 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,
-
uma história de transações de vendas,
por exemplo.
-
Eu posso pensar o seguinte num 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 que é algo que está imitando
a um histórico de compras no mercado.
-
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.
-
Abra o Deca API Ore, 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 duas hipóteses
necessárias, que é pandas,
-
um par para limpeza de dados também.
-
E de fato, o algoritmo biblioteca
é a priori arquivo nessa base
-
que está salva como um CSV e nesse caso
específico, ela não tem nenhum cabeçalho.
-
Como é 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
-
Zero, por exemplo, contém o primeiro
produto que passou nessa.
-
Nessa compra,
a coluna contém o segundo produto,
-
a dois 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 não indicam.
-
Esse produto aqui 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
que uma lista de lista, ou seja,
-
para cada compra,
cada transação de fato, cada cesta.
-
Eu quero criar uma listinha
-
onde apenas produtos comprados
sejam de fato presentes nessa lista.
-
Quem sabe com valor 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
-
de uma lista vazia
e eu vou estar de sanando essa lista.
-
Uma outra lista
-
fica numa lista de
-
listas
onde cada linha que compõe a lista externa
-
ela é um dos produtos que foram adquiridos
-
e se ele for, não estou melhorando
e 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 que unificou.
-
Então cada listinha 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á é relevante 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 aquela que é grandinha,
vou lá pra baixo
-
para começar a construir
a regra de associação.
-
O uso do método a priori é muito direto.
-
Basicamente, ele espera esses recordes,
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 é o tipo de negócio.
-
Aqui nós estamos a fazer
uma parametrização do método baseado
-
em algumas métricas de avaliação
da recomendação, ou seja, 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 -2 produtos,
-
mas eu posso criar regras que envolvem
pelo -3, quatro, cinco produtos também.
-
Método a priori não tem certo ou errado,
mas vamos fazer combinações
-
de produtos e 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.