Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
TDC2018FLN | Trilha Data Science - Encontrando Lookalikes para publicidade digital em um contexto de big data
1. 1 Globalcode – Open4education
Trilha – Xxxx
Nome do Palestrante
Qualificação do palestrante
Encontrando Lookalikes para Publicidade Digital
em um Contexto de Big Data
Joel Pinho Lucas
2. Agenda
• Lookalikes e Publicidade Digital (Introdução)
• Lookalikes em um contexto de Big Data: cenário da Tail
• Visão Geral da Implementação de Lookalikes na Tail
• Mineração de Padrões Frequentes com Spark MLlib FP-Growth
(Passo I)
• Descoberta de Lookalikes: matching de perfis (Passo II)
• Conclusões
2
3. Lookalikes e Publicidade Digital
Lookalikes: partindo de uma audiência semente, encontrar uma
audiência mais abrangente (alvo) com perfis de consumo que se
assemelhem a mesma
3
A audiência alvo deve refletir características benchmark da audiência do
cliente (source audience)
4. Lookalikes e Publicidade Digital
“De acordo com 30% dos advertisers e mais da metade das agências nos EUA
que reportaram utilizar a técnica, a modelagem de lookalikes resultou no dobro
ou até triplo dos resultados em comparação a um target de audiência padrão.”
Estudo da Exelate
4
8. Lookalikes em um contexto de Big Data:
Caso da Tail
• 1.5 bilhões novos registros ao dia
• 400 milhões de perfis anônimos na América Latina
• Os perfis de usuários são baseados em logs de navegação de
parceiros (publishers) através de uma tag em JavaScript
• Os perfis de usuários são segmentados em 132 categories
comportamentais e demográficas
Ex: TV, Futebol, Política, Beleza,Viagem,Adulto, Jovem, etc.
8
11. Formação dos perfis da Base de Dados da Tail
11
Tag
u=1507000A8451375B184024E
LOG
12. 12
Formação dos perfis da Base de Dados da Tail
Texto
Relevante
Extrator de Texto
Crawling
Representação de um link web:
1 15749 aluguel
2 12208 casa
3 11456 julho
4 10272 dia
5 9232 sao paulo
6 9177 procurar
7 8958 vender
8 8779 imóvel
9 8664 praia
10 8191 garagem
11 7626 carro
12 7580 preço
13 7453 quarto
14 7246 construção
…….
n
Extrator de Termos
Frequentes
Interesse Classificador
14. Implementação de Lookalikes
Passos implementados através da arquitetura do Apache Spark
1. revelar os padrões mais relevantes dentro da audiência semente
2. encontrar uma audiência alvo (target audience) que corresponda a tais
padrões
14
Problema: dado uma audiência semente, encontrar
os usuários que mais se assemelham (lookalikes) a
ela dentro da base da Tail
15. 15
• Implementação simplificada (API em Java, Scala, Python e R)
• Diversas implementações eficientes de algoritmos
http://spark.apache.org/mllib/
• Performance
Lazy evaluation
Armazenamento em memória
16. Passo 1: Encontrando os Padrões mais
Relevantes
• Identificar, extrair e entender os padrões mais relevantes da
audiência do cliente
• Problema de aprendizagem não-supervisionada (tarefa de
mineração de padrões frequentes)
• Utilizou-se a implementação do algoritmo FP-Growth da
Spark MLlib
16
17. Passo 1: Encontrando os Padrões mais
Relevantes
• O advertiser deve conseguir encontrar valor, poder realizar
insights e entender sua audiência com maior nível de detalhe (NO
black-box)
• A mineração de padrões frequentes possibilita que os dados de
uma audiência sejam explorados com mais detalhe
17
19. Passo 1: FP-Growth
Entrada: um conjunto de N transações:
D = {T1 ,T2 ,.... ..,TN }
Saída: um conjunto de regras de associação:
A —> B, onde A ⊂ D e B ⊂ D
19
• FP-Growth (Frequent Pattern Growth) é um algorithm de
mineração de itens frequentes
20. Passo 1: FP-Growth
Suporte mínimo: número mínimo de itens ocorrendo em um conjunto
de transações
20
IN: { [leite, pão], [fralda, leite], [fralda, cerveja], [fralda, cerveja], …., [fralda, leite, cerveja] }
{fralda, leite cerveja}OUT:
21. Passo 1: FP-Growth
• Permite que itens frequentes sejam descobertos sem precisar que
conjuntos candidatos sejam gerados (mais eficiente que Apriori)
• Utiliza uma estrutura de dados compacta (FP-tree)
21
Duas Etapas:
Gerar uma FP-Tree compacta (realizando apenas duas passadas no conjunto de dados)
Extrair itens frequentes diretamente da FP-Tree
22. Passo 1: FP-Growth (FP-Tree)
22
Min Support = 2
Figura extraída de “Yıldız, Barış & Ergenç, Belgin. (2010). Comparison of two association rule mining algorithms
without candidate generation”.
23. Passo 1: FP-Growth no Spark MLlib
Exemplo de implementação no Spark MLlib (Java):
23
Não precisamos das Regras de
Associações, apenas dos padrões
frequentes
28. Passo II: Encontrar Lookalikes
1. Para cada usuário da base dados da empresa calcular um índice de
correlação que conta os matches nas regras geradas no passo 1
2. Ordenar usuários por tais índices
3. Disponibilizar a audiência de Lookalikes para atender a requisições
disparadas por clientes (assertividade x alcance da audiência)
28
29. 29
• Implementar os jobs que irão rodar no cluster do Spark
• Testar e/ou depurar um job do Spark
• O time precisa operar e similar um mesmo cluster
Implementação de Lookalikes - Infra para
Spark MLlib
30. 30
• Cluster "leve"
• Apenas uma máquina
• Mesmo ambiente para todo o time
Executando Spark Localmente com
Docker
33. Exemplo de Implementação
• Algoritmo FP-Growth (MLlib)
• Entrada: dados anônimos de publicidade digital
• Problema: encontrar padrões frequentes nos perfis de
navegação (baseado no Passo I)
• Escreve resultados no MongoDB
http://github.com/joelplucas/fpgrowth-spark-example
33
34. Teste Unitário Utilizando Spark Testing Base
• Lançado no Strata NYC 2015 por Holden Karau (e mantido pela comunidade)
• Suporta testes unitários em Java, Scala e Python
34
35. Conclusões
• A utilização de aprendizagem não-supervisionada, da maneira como
foi implementada nos passos 1 e II, permitiu gerar audiências de
lookalike
• Dividir o problema em dois passos (utilizando Spark) mostrou-se
uma estratégia eficaz para escalar as requisições de lookalikes de
clientes em um contexto de big data
• A extensão do FP-Growth permitiu que a solução descrevesse
claramente os padrões encontrados nas audiência dos clientes
35
36. Conclusões
• A utilização de código fonte aberto da Spark MLlib permitiu depurar
e investigar nossos conjuntos de dados com maior facilidade
• A utilização de um ambiente de desenvolvimento comum ao time e
realizar testes unitários nos jobs do Spark contribuíram de forma
significativa ao processo de desenvolvimento
36