Regras de Associação no Alteryx

Murilo Cremon
Murilo Cremon
Published in
8 min readSep 29, 2020

Quando falamos de Regras de Associação, a primeira impressão é meio nebulosa, estranha e até um pouco complexa, pois afinal, não é todo dia que nos deparamos com um problema de negócio que requer este tipo de solução.

Acredito que já se deparou com um problema desses ou já ouviu falar em alguns casos utilizando essa abordagem. Se recorda do famoso case do Walmart? “Quem compra cerveja, também compra fraldas”, pois bem, é uma típica aplicação de Regras de Associação.

Ainda não se recordou? Lá vai um pequeno trecho.

Walmart gostaria de aumentar as vendas e consequentemente o faturamento, então resolveram analisar as saídas de produtos por clientes. Ao realizaram a análise dos dados, notaram que, os consumidores que iam comprar fraldas também compravam cervejas, logo viram uma oportunidade nessa relação dos produtos, e então aproximaram as prateleiras de cerveja próxima ao setor de fraldas. E com isso tiveram um crescimento de 30% nas vendas.

Nesse caso, eu penso, baita jogada de mestre! Afinal, caso mantivesse ambos produtos afastados a chance do não ir até o setor de bebidas é grande devido a locomoção, por outro lado, deixando um produto ao lado do outro…

Regras de Associação

Basicamente as Regras de Associação descrevem a relação entre determinados itens de um banco de dados, tipicamente utilizado para realizar recomendação de produtos.

Imagine o Case do Walter acima…

  • Temos uma base de dados que contém 500 transações;
  • 400 transações contém o produto fraldas;
  • 300 transações tinham em conjunto fraldas e cervejas cervejas inclusas.

Um exemplo de lista com as transações realizadas.

Transação 1: Fraldas, Tomate, Cerveja, Leite
Transação 2: Fraldas, Salgadinho, Refrigerante, Cerveja
Transação 3: Bolacha, Cebola, Fraldas, Cerveja
Transação 4: Cerveja, Alho, Cebola, Fraldas
Transação 5: Fraldas, Tomate, Chá, Bolacha
Transação N …

Note, que com apenas os números e um exemplo das transações supostamente conseguimos observar que existe uma relação entre os produtos.

Mas dê uma olhada, acima usei a palavra supostamente, pois para acharmos as relações definitivas entre os produtos, devemos criar as regras necessárias e analisarmos as relações geradas, trabalhando com dois valores que são fundamentais neste tipo de aplicação, suporte e confiança.

Suporte

É o número de transações que determinado produto ou combinações de produtos aparecem.

Fórmula: Freq(X, Y)/ N
Onde X e Y representam combinação de produtos e N a quantidade de transação.

Confiança

Frequência cujo uma determinada transação possui o produto X e também o produto B.

Fórmula: Freq(X, Y) / X
Onde X e Y representam combinação de produtos e X a quantidade de transação que possui o produto X.

Imagine o seguinte caso..

Você é um Analistas/Cientista que trabalha em uma determinada rede de Supermercado Online, e as áreas de Marketing e Comercial, estão realizando um trabalho em conjunto e elaboram uma ideia de começar a oferecer produtos, com o intuito de ter um crescimento nas vendas.

Ambas áreas gostariam de 30 combinações de produtos para oferecer e também 30 produtos que podem ser oferecidos livremente, sem necessidade de combinações entre eles.

Eles te encaminham uma base que possui os dados históricos de transações de determinado cliente para que você possa analisar e gerar uma lista de produtos a serem recomendados de acordo com os produtos que o cliente adquire.

Bora Praticar!!

Este exemplo contém dados dados fictícios, somente para fins de demonstração de como realizar na ferramenta Alteryx.

A escolha pelo Alteryx para demonstração é que utilizo ele no meu cotidiano para me auxiliar nas tarefas de Análise e Ciência de Dados (pois é, não utilizo ele para ETL, mas realizo “prep” nele também, assunto para outro post), pois me trás uma grande produtividade, além de ser fácil, intuitivo, poderoso e estar em alta e é claro é meu xodó. Mas isso pode ser feito com outras ferramentas como R (que era o que eu mais utilizava e utilizo!), Python, Octave etc.

Este é o fluxo que vamos realizar. Não reparem, ele é realmente pequeno, pois o intuito é demostrar os fundamentos da Regras de Associação no Alteryx.

Para iniciarmos, vou escrever sobre todo o fluxo e em seguida vou detalhar cada Tool.

Este é um fluxo simples, que recebe dados manuais, para simular as transações, via Text Input. Estes dados, são submetidos a uma tool, chamada de MB Rules que fica localizada na categoria de Predictive Grouping, ela é encarregada de realizar as criações das regras utilizando um algoritmo em específico (vamos ver sem seguida), após isso, seguimos nosso fluxo com a ferramenta MB Inspect, responsável por transformar as regras geradas para um formato que podemos compreender.

As demais ferramentas, acredito ser mais conhecidas. A Multi-Row Formula, é responsável por tirar algumas regras que possuem duplos sentidos e criar uma espécie de Status, para que possamos realizar a divisão das regras conforme a necessidade do negócio passada para nós. Seguindo o fluxo, foi inserido um Filter Tool, para filtrar somente os Status de devemos mandar para o negócio, logo adiante, vemos uma Sample Tool, que fica encarregada de pegar as 30 primeiras regras de cada Status e por fim, publicar isso no Tableau Server.

Passo a Passo

Os dados para a execução do fluxo são inseridos através da Text Input Tool.

Estamos tratando de 7 transações, e alguns produtos. Cada produto está separada por vírgula, como já mostrado nos exemplos acima. Não repare, eu sai escrevendo alguns produtos sem mais nem menos.

Em seguida, está conectada a Tool de MB Rules.

Essa ferramenta é encarregada de realizar a criação das regras. Por trás dos panos, ela utiliza o algoritmo Apriori (acredito eu, que seja o algoritmo mais utilizado para essa necessidade).

Basicamente a estrutura do arquivo de transações, já está pronta, pois este algoritmo ele lê um tipo específico que denominamos de Transactions, e é separado geralmente por vírgula, caso contrário, teria que ter alguma forma de realizar a preparação dos dados (provavelmente utilizando Summarize Tool e agrupando o campo de string separando por vírgula).

Essa é a janela de configuração da ferramenta, temos duas formas de entradas, a primeira que está desabilitada, trata-se de realizar agrupamento por um campo e passar o campo onde está os produtos (não fui muito feliz nesta opção), pois ele realiza o agrupamento na própria ferramenta, e a segunda opção a que estamos utilizando, passamos o campo que contém as transações e o separador que está dividindo nossas transações.

O método de uso, é possui várias opções, mas somente Association Rules, realiza a geração das regras. Basicamente, o restante das opções são para gerar frequências, conjuntos de frequências baseando-se no Suporte das Regras.

Já nos Parâmetros de Controles, é onde realizamos as configurações do Algoritmo, é ai onde a mágica acontece, pois realizamos a calibragem de acordo com a Performance do mesmo.

  • Na primeira opção, passamos a quantidade de regra mínima gerada por conjunto;
  • Segunda opção, o valor de suporte, cujo se for muito baixo, é altamente prejudicial, pois requer mais processamento, pois o número de regras geradas será demasiada;
  • Terceira opção, o valor de suporte que é um percentual de quantas vezes ocorreu determinada transação.

Nessa ferramenta temos duas âncoras, uma é o Output e R de Report. Output contém um arquivo com as regras geradas, e a âncora R, um relatório com as informações das transações e regras geradas. Bem valioso e já da para retirar alguns insights.

Para dar continuidade no fluxo, vemos a ferramenta MB Inspect.

Para quem trabalha com R (não sei no Python, comentem ai) sabe que os dados gerados pelo Algoritmo apriori é uma lista que contém os valores das transações e regras.

No R utilizaríamos a função inspect para visualizar as regras.
Por exemplo, inspect(regras) ou as(regras, ‘data.frame’).

Nesta ferramenta não é diferente, ela converte de uma forma que conseguimos visualizar os dados direto na Janela de Resultados, via âncora O.

Já na âncora R, temos um as regras geradas, mais alguns gráficos de relação das regras.

Seguindo o fluxo, foi criado Mult-Row Formula, para gerarmos os Status das regras em cima do que o Algoritmo criou.

Com isso, foi denominado três status:

  • DUPLICADA: Representa a regra duplicada;
  • DUPLICADA_INV: Representa a regra funcional em ambos sentidos;
  • UNICA: Somente uma regra única.

Conforme a configuração da ferramenta abaixo.

Em seguida, foi adicionado um Filter Tool.

Dessa forma, conseguimos realizar um filtro somente com as regras cujo Status são UNICA e DUPLICADA_INV, para fins do pedido de negócio.

Finalizando o fluxo, uma Sample Tool é inserida no fluxo.

Essa ferramenta, tem objetivo de pegar as 30 primeiras regras agrupadas por Status. Um ponto interessante, que a ferramenta MB Inspect, já realiza a ordenação de acordo com a métrica escolhida, sem necessidade de uma nova ordenação.

Acredito que é isso! O post ficou um pouco extenso, mas acredito que dê para compreender os fundamentos e de como aplicar esse tipo de demanda no Alteryx.

--

--

Murilo Cremon
Murilo Cremon

Bem Vindo! Neste blog, compartilharei minhas experiências e conhecimentos sobre Business Intelligence, Visualização de Dados, Tableau e outros assuntos!