java e data science na publicidade digital fabiane bizinella nardon @fabianenardon chief data...

Post on 07-Apr-2016

227 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Java e Data Science na Publicidade Digital

Fabiane Bizinella Nardon@fabianenardon

Chief Data Scientist da TailTarget

“The best minds of my generation are thinking about

how to make people click ads. That sucks.”

Jeff Hammerbacher

Publicidade Digital Moderna

Muitos Dados +

Métricas (+/- Fáceis de Medir) +

Velocidade

Publicidade Digital

Anunciante

Direct Orders

Publicidade Digital Moderna

Anunciante

AdNetwork

AdExchangeDSP SSP

Mídia Programática

Real Time Bidding

Ad Exchange

DSP DSP DSP

Real Time Bidding

Ad Exchange

DSP DSP DSP

Menos de 300ms!

Escalabilidade

Data Science

Arquiteturas Escaláveis

Arquitete para pelo menos 3

Assuma que alguma coisa irá falhar

Isole os seus serviços

Architecting for Scalability

SHARED NOTHING

Shared Nothing

App Server 1 App Server 2 App Server 3

Cache 1 Cache 2 Cache 3

DB 1 DB 2 DB 3

Shared Nothing

App Server 1 App Server 2 App Server 3

Cache 1 Cache 2 Cache 3

DB 1 DB 2 DB 3

Cache 4

- Sem server-side session

- Sem sticky sessions

Shared Nothing

Play Framework Play Framework Play Framework

Redis Shard 1/Replica 1

Redis Shard 2/Replica 1

Redis Shard 1/Replica 2

MongoDBMaster

MongoDBSlave 1

MongoDBSlave 2

Redis Shard 2/Replica 2

Escalando

Use o poder da Nuvem

mas use os seus DADOS!

Predição de Tráfego – Por que?

Pode demorar de 10 a 20 min para ter uma máquina no ar. Dá pra esperar tudo isso?

Evite falsas quedas de tráfego

Predição de Tráfego

1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61700

800

900

1000

1100

1200

1300

1400

1500

1600

Requests

Requests

Predição de Tráfego

1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61700

800

900

1000

1100

1200

1300

1400

1500

1600

Requests

RequestsLinear (Requests)

Predição de Tráfego

1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61700

800

900

1000

1100

1200

1300

1400

Requests

RequestsLinear (Requests)

Predição de Tráfego

1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61700

800

900

1000

1100

1200

1300

1400

1500

RequestsLinear (Requests)Predicted Traffic

Ad Exchange

DSP DSP DSP

Data Science

BIG DATA+

ESTATÍSTICA+

INTELIGÊNCIA ARTIFICIAL

Data Science e Java

Detectando comportamentos

Ad Exchange

DSP DSP DSP

Detectando comportamentos

4-Jan

8-Jan12-Ja

n16-Ja

n20-Ja

n24-Ja

n28-Ja

n1-Fe

b5-Fe

b9-Fe

b13-Fe

b17-Fe

b21-Fe

b25-Fe

b1-M

ar5-M

ar9-M

ar

13-Mar

17-Mar

21-Mar

25-Mar

29-Mar

2-Apr

6-Apr

10-Apr

14-Apr

18-Apr

22-Apr

26-Apr0

2000000

4000000

6000000

8000000

10000000

12000000

POLITICSSOCCERJOBSFINANCE

Taxes

Detectando comportamentosCurly Hair

Straight Hair

Detectando comportamentos

Brazilian Java Developershttp://www.tailtarget.com/blog/getting-to-know-the-java-developer-using-data-science/

Detectando comportamentos

Brazilian Java Developers

Dado comportamental funciona?

Detectando comportamento

Classifiers

Recommendation Systems

Clustering

Deep Learning

FUTEBOL

User Profile

uid=123 : [FUTEBOL: 1 view, MASCULINO: 1 view]

Detectando comportamento

FUTEBOL

User Profile

uid=123 : [FUTEBOL: 10 views, MASCULINO: 20 views]

uid=123 : [FUTEBOL, MASCULINO]

Detectando comportamento

Implementando um Classificador

Aprendizado Supervisionado

1. PREPARAÇÃO DOS DADOS SementeSegmento

FUTEBOL

http://eleicoes.uol.com.brhttp://noticias.terra.com.br/brasil/politica/http://ultimosegundo.ig.com.br/politica/

País

BRASIL

MODA BRASIL

POLÍTICA

FAMÍLIA

BRASIL

BRASIL

http://esportes.terra.com.br/futebol/http://placar.abril.com.br/materia/http://esporte.uol.com.br/futebol/

http://www.fhits.com.brhttp://www.dolcemoda.com.br

http://guiadobebe.uol.com.br/http://mdemulher.abril.com.br/familia/

1. PREPARAÇÃO DOS DADOS (CRAWLER) Páginas (3.000)Segmento

FUTEBOL

(…)

País

BRASIL

MODA BRASIL

POLÍTICA

FAMÍLIA

BRASIL

BRASIL

1. http://esportes.terra.com.br/futebol/internacional/mourinho-diz-que-rafa-benitez-destruiu-a-inter-de-milao-em-2010,3652d311ab33c95fb07b01f6ee27168ew7uvRCRD.html

2. http://esportes.terra.com.br/futebol/brasileiro-serie-a/pato-que-voltar-a-selecao-e-lamenta-nao-enfrentar-corinthians,ac2efed99a4ed4ed83198389e01961f7sih9RCRD.html

(…)

(…)

2. APRENDIZADO SUPERVISIONADO

80%

TRE

INO

20%

TES

TE

Pages (3,000)Segment

SOCCER

(…)

Country

BRAZIL

FASHION BRAZIL

POLITICS

FAMILY

BRAZIL

BRAZIL

1. http://esportes.terra.com.br/futebol/internacional/mourinho-diz-que-rafa-benitez-destruiu-a-inter-de-milao-em-2010,3652d311ab33c95fb07b01f6ee27168ew7uvRCRD.html

2. http://esportes.terra.com.br/futebol/brasileiro-serie-a/pato-que-voltar-a-selecao-e-lamenta-nao-enfrentar-corinthians,ac2efed99a4ed4ed83198389e01961f7sih9RCRD.html

(…)

(…)

3. ENCONTRANDO O MODELOTREINO

TESTE

TREINO

TESTE

MODELO C

98%

TREINO

TESTE

MODELO B

85%MODELO A

70%

4. TESTANDO O MODELO

MATRIZ DE CONFUSÃO

FUTEBOL MODA POLÍTICA FAMÍLIA

FUTEBOL 997 0 1 2

MODA 1 999 0 0

POLÍTICA 3 1 995 1

FAMÍLIA 2 1 0 997

4. MODELO EM AÇÃO

DATA SC

IENCE

Algorit

mo

MODELO C ASSUNTOPágina

RETREINO

TV

DATA SC

IENCE

TAILT

ARGET

APLICANDO O MODELO

Português

MODELO

FUTEBOL

com.cybozu.labslangdetect

DETECÇÃO DE PAÍS

Colombia: 8.999Argentina: 100

Mexico: 87Venezuela: 50

USA: 45

Muitas vezes você não precisa processar todos os seus dados

Usuários por interesse (TODOS)

FUTEBOL

EMPREGO

FINANÇAS

POLÍTICA

Usuários por interesse (1%)

FUTEBOL

EMPREGOS

FINANÇAS

POLÍTICA

Usuários por InteresseTODOS 1%

Como selecionar uma boa amostra

Tamanho tem que ser representativo

Distribuição tem que ser homogênea

Tamanho da Amostra

MAIOR A AMOSTRA = MAIOR A ACURÁCIA

Tamanho da Amostra

Encontre a amostra mínima para o seu problema.

Se o banco de dados tem menos que o mínimo, use todos os dados.

Distribuição da Amostra(Ex.: Redis)

SHARDING 1 SHARDING 2 SHARDING 3

ITEMS POR SHARDING = TAMANHO DA AMOSTRA / NÚMERO DE SHARDINGS

RANDOMKEYs RANDOMKEYs RANDOMKEYs

ITEMS POR SHARDING = TAMANHO DA AMOSTRA / NÚMERO DE SHARDINGS

Distribuição da Amostra(Ex.: Redis)

SHARDING 1 SHARDING 2 SHARDING 3

RANDOMKEYs RANDOMKEYs RANDOMKEYs

Ta = Tamanho da AmostraTt = Tamanho TotalNa = Número de itens na amostraNt = Número de itens no tt

Nt = Na * Tt / TaExample:Ta = 1000Tt = 100,000Na = 400 Women

Nt = 400 * 100,000 / 1000 = 40,000

E quando você não sabe quantos itens você tem?

Reservoir Sampling

1 2 3 4 5

A B C D E

F

Random (0..1): 0.7K = Ss / i K = 5 / 6 = 0.83Se K > Random => TROCA!

Reservoir Sampling Distribuído

1 2 3 4 5

A B C D E F G H I J K L M N O P Q R S T U V X Y W Z

Reservoir Sampling Distribuído

1 2 3 4 5

A B C D E F G H I J K L M N O P Q R S T U V X Y W Z

Reservoir Sampling Distribuído

1 2 3 4 5

A:0.1 B:0.3 C:0.2 D:0.7 E:0.9 F:0.11 G:0.4 H:0.6 I:0.76

J:0.8 K:0.2 L:0.54 M:0.4 N:0.21 O:0.33 P:0.56 Q:0.32 R:0.23

S:0.21 T:0.32 U:0.22 V:0.7 X:0.12 Y:0.23 W:0.3 Z:0.76

private SortedMap<Double, MyObject> reservoir;

...if (reservoir.size() < SAMPLE_SIZE) { reservoir.put(score, myObject);} else if (score > reservoir.firstKey()) { reservoir.remove(reservoir.firstKey()); reservoir.put(score, myObject);}

Reservoir Sampling Distribuído

O L P I Z

1 2 3 4 5

A:0.1 B:0.3 C:0.2 D:0.7 E:0.9 F:0.11 G:0.4 H:0.6 I:0.76

J:0.8 K:0.2 L:0.54 M:0.4 N:0.21 O:0.33 P:0.56 Q:0.32 R:0.23

S:0.21 T:0.32 U:0.22 V:0.7 X:0.12 Y:0.23 W:0.3 Z:0.76

H:0.6 D:0.7 E:0.9 F:0.11 I:0.76 R:0.23 Q:0.32 O:0.33 L:0.54 P:0.56 S:0.21 U:0.22 Y:0.23 T:0.32 Z:0.76

COMBINER

Reservoir Sampling Distribuído

import org.apache.crunch.lib.Sample;

Sample.reservoirSample(PCollection<T> input, int sampleSize)

Apache Crunch:

Por que Java?

Bibliotecas de machine learning

Drivers NoSQL

Perfomance

Conectores para Frameworks Distribuídos

Java e Data Science na Publicidade Digital

Fabiane Bizinella Nardon@fabianenardon

Chief Data Scientist na TailTarget

top related