clusterizaÇÃo de anÚncios e modelo de classificaÇÃo...

52
CLUSTERIZAÇÃO DE ANÚNCIOS E MODELO DE CLASSIFICAÇÃO PARA AJUSTES DE LANCE EM LEILÕES DO GOOGLE ADS Rodrigo Gonçalves Haddad Projeto de Graduação apresentado ao Curso de Engenharia Eletrônica e de Computação da Escola Politécnica, Universidade Federal do Rio de Janeiro, como parte dos requisitos necessários à obtenção do título de Engenheiro. Orientador: Flávio Luis de Mello Rio de Janeiro Agosto de 2020

Upload: others

Post on 25-Aug-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: CLUSTERIZAÇÃO DE ANÚNCIOS E MODELO DE CLASSIFICAÇÃO …monografias.poli.ufrj.br/monografias/monopoli10031868.pdf · iii Declaração de Autoria e de Direitos Eu, Rodrigo Gonçalves

CLUSTERIZAÇÃO DE ANÚNCIOS E MODELO DE

CLASSIFICAÇÃO PARA AJUSTES DE LANCE EM

LEILÕES DO GOOGLE ADS

Rodrigo Gonçalves Haddad

Projeto de Graduação apresentado ao Curso de

Engenharia Eletrônica e de Computação da Escola

Politécnica, Universidade Federal do Rio de

Janeiro, como parte dos requisitos necessários à

obtenção do título de Engenheiro.

Orientador: Flávio Luis de Mello

Rio de Janeiro

Agosto de 2020

Page 2: CLUSTERIZAÇÃO DE ANÚNCIOS E MODELO DE CLASSIFICAÇÃO …monografias.poli.ufrj.br/monografias/monopoli10031868.pdf · iii Declaração de Autoria e de Direitos Eu, Rodrigo Gonçalves
Page 3: CLUSTERIZAÇÃO DE ANÚNCIOS E MODELO DE CLASSIFICAÇÃO …monografias.poli.ufrj.br/monografias/monopoli10031868.pdf · iii Declaração de Autoria e de Direitos Eu, Rodrigo Gonçalves

iii

Declaração de Autoria e de Direitos

Eu, Rodrigo Gonçalves Haddad CPF 118.005.027-45, autor da monografia

“CLUSTERIZAÇÃO DE ANÚNCIOS E MODELO DE CLASSIFICAÇÃO PARA

AJUSTES DE LANCE EM LEILÕES DO GOOGLE ADS”, subscrevo para os devidos

fins, as seguintes informações:

1. O autor declara que o trabalho apresentado na disciplina de Projeto de

Graduação da Escola Politécnica da UFRJ é de sua autoria, sendo original em

forma e conteúdo.

2. Excetuam-se do item 1. eventuais transcrições de texto, figuras, tabelas,

conceitos e ideias, que identifiquem claramente a fonte original, explicitando as

autorizações obtidas dos respectivos proprietários, quando necessárias.

3. O autor permite que a UFRJ, por um prazo indeterminado, efetue em qualquer

mídia de divulgação, a publicação do trabalho acadêmico em sua totalidade, ou

em parte. Essa autorização não envolve ônus de qualquer natureza à UFRJ, ou

aos seus representantes.

4. O autor pode, excepcionalmente, encaminhar à Comissão de Projeto de

Graduação, a não divulgação do material, por um prazo máximo de 01 (um) ano,

improrrogável, a contar da data de defesa, desde que o pedido seja justificado, e

solicitado antecipadamente, por escrito, à Congregação da Escola Politécnica.

5. O autor declara, ainda, ter a capacidade jurídica para a prática do presente ato,

assim como ter conhecimento do teor da presente Declaração, estando ciente das

sanções e punições legais, no que tange a cópia parcial, ou total, de obra

intelectual, o que se configura como violação do direito autoral previsto no

Código Penal Brasileiro no art.184 e art.299, bem como na Lei 9.610.

6. O autor é o único responsável pelo conteúdo apresentado nos trabalhos

acadêmicos publicados, não cabendo à UFRJ, aos seus representantes, ou ao(s)

orientador(es), qualquer responsabilização/ indenização nesse sentido.

7. Por ser verdade, firmo a presente declaração.

_________________________________________

Rodrigo Gonçalves Haddad

Page 4: CLUSTERIZAÇÃO DE ANÚNCIOS E MODELO DE CLASSIFICAÇÃO …monografias.poli.ufrj.br/monografias/monopoli10031868.pdf · iii Declaração de Autoria e de Direitos Eu, Rodrigo Gonçalves

iv

UNIVERSIDADE FEDERAL DO RIO DE JANEIRO

Escola Politécnica – Departamento de Eletrônica e de Computação

Centro de Tecnologia, bloco H, sala H-217, Cidade Universitária

Rio de Janeiro – RJ CEP 21949-900

Este exemplar é de propriedade da Universidade Federal do Rio de Janeiro, que

poderá incluí-lo em base de dados, armazenar em computador, microfilmar ou adotar

qualquer forma de arquivamento.

É permitida a menção, reprodução parcial ou integral e a transmissão entre

bibliotecas deste trabalho, sem modificação de seu texto, em qualquer meio que esteja

ou venha a ser fixado, para pesquisa acadêmica, comentários e citações, desde que sem

finalidade comercial e que seja feita a referência bibliográfica completa.

Os conceitos expressos neste trabalho são de responsabilidade do(s) autor(es).

Page 5: CLUSTERIZAÇÃO DE ANÚNCIOS E MODELO DE CLASSIFICAÇÃO …monografias.poli.ufrj.br/monografias/monopoli10031868.pdf · iii Declaração de Autoria e de Direitos Eu, Rodrigo Gonçalves

v

AGRADECIMENTO

Agradeço não só às pessoas que fizeram parte diretamente na criação desse

projeto, mas também às pessoas que participaram da minha jornada durante a graduação

e na minha vida, em geral.

Primeiramente aos meus pais e outros familiares por todo o apoio e carinho. Sem

eles, eu nunca teria tido a oportunidade de mudar de cidade para estudar engenharia. Em

especial, a minha mãe Marta que sempre me apoiou e foi um porto seguro para mim em

todos os momentos de dificuldade.

As minhas amizades que me acompanham desde o jardim de infância e também

às que fiz durante a graduação.

A Pareto por ter me agregado tanto conhecimento em tão pouco tempo e por

contribuir com este trabalho das mais diferentes formas.

Por fim, aos professores que impactaram positivamente minha vida durante a

graduação com conhecimento e demonstrando verdadeira vontade de ensinar.

Page 6: CLUSTERIZAÇÃO DE ANÚNCIOS E MODELO DE CLASSIFICAÇÃO …monografias.poli.ufrj.br/monografias/monopoli10031868.pdf · iii Declaração de Autoria e de Direitos Eu, Rodrigo Gonçalves

vi

RESUMO

A transição do marketing tradicional para o digital possibilitou um maior

controle dos anunciantes sobre qual segmento seu anúncio seria mostrado de acordo

com seu objetivo, maior aquisição de dados resultantes da exibição dos anúncios e

entrega em massa de anúncios personalizados. Ao mesmo tempo, passaram a ser

necessárias ferramentas que facilitassem e contribuíssem para um melhor controle do

administrador de uma conta de anúncios como o Google Ads. Nesse escopo, devem ser

estudadas formas que identifiquem padrões nas características de anúncios e possíveis

predições que possam ser feitas, tendo acesso a um histórico. Logo, este trabalho

procura analisar grupos de anúncios dividindo-os em clusters de acordo com suas

características e, posteriormente, a criação de um modelo que seja capaz de fazer ajustes

de lances em leilões de anúncios de acordo com os segmentos possíveis dentro de um

cluster. Dessa forma, um lance para veiculação de um anúncio pode ter seu valor

ajustado, de acordo com o aprendizado do algoritmo, para, por exemplo, aumentar em

20% os lances quando os anúncios forem direcionados a uma pessoa de 18 a 24 anos.

Para alcançar esse objetivo, foram escolhidos os métodos K-means, para o aprendizado

não supervisionado, e XGBoost classificador, para o supervisionado. Ao final da

aplicação do XGBoost, busca-se analisar os resultados para finalmente apontar a

confiabilidade da aplicação do modelo.

Palavras-Chave: marketing, marketing digital, Google Ads, cluster, classificação,

predição, leilão, lances, aprendizado de máquina, Python, K-means, XGBoost, métricas,

anúncio, campanha, grupo de anúncios.

Page 7: CLUSTERIZAÇÃO DE ANÚNCIOS E MODELO DE CLASSIFICAÇÃO …monografias.poli.ufrj.br/monografias/monopoli10031868.pdf · iii Declaração de Autoria e de Direitos Eu, Rodrigo Gonçalves

vii

ABSTRACT

The transition from traditional marketing to digital made possible a better

control from the advertisers over which segment their ad would be shown according to

their objective, larger acquisition of data and mass delivery of personalized ads. At the

same time, turned out to be necessary the creation of tools to facilitate and contribute to

a better control of an ad account as Google Ads. Therefore, it should be studied ways to

identify ads’ characteristics patterns and potential predictions that could be done when

having access to the account’s history. This project seeks to analyze ad groups splitting

them into clusters according to their characteristics and, posteriorly, the creation of a

model capable of making bid adjustments on ads auctions for each possible segment

inside a cluster. Therefore, a bid to deliver an ad may have its value adjusted according

to the model’s learning conclusion to, for example, rise 20% the bids when the ads are

targeted to people between 18 and 24 years old. To reach this goal, were chosen the

methods K-means, for unsupervised learning, and XGBoost classifier for supervised

learning. After applying the classification model, the results are analyzed in order to

point if the model was reliable or not.

Key-words: marketing, digital marketing, Google Ads, cluster, classification,

prediction, auction, bid, machine learning, Python, K-means, XGBoost, metrics, ad,

campaign, ad group.

Page 8: CLUSTERIZAÇÃO DE ANÚNCIOS E MODELO DE CLASSIFICAÇÃO …monografias.poli.ufrj.br/monografias/monopoli10031868.pdf · iii Declaração de Autoria e de Direitos Eu, Rodrigo Gonçalves

viii

SIGLAS

CPC – Custo Por Clique

CPV – Custo Por Visualização

CTR – Click Through Rate

CPM – Custo por Mil Impressões

XGBoost – Extreme Gradient Boost

GBM – Gradient Boosting Machine

GBRT – Gradient Boosted Regression Tree

Impr. (Abs. Top)% - Porcentagem de Impressões Absolutas no Topo

Impr. (Top)% - Porcentagem de Impressões no Topo

OHE – One Hot Encoder

PCA – Principal Component Analysis

RMSE - Root-Mean-Square Error

WCSS – Within Cluster Sum of Squares

Page 9: CLUSTERIZAÇÃO DE ANÚNCIOS E MODELO DE CLASSIFICAÇÃO …monografias.poli.ufrj.br/monografias/monopoli10031868.pdf · iii Declaração de Autoria e de Direitos Eu, Rodrigo Gonçalves

ix

Sumário

1 Introdução 1

1.1 - Tema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.2 - Delimitação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.3 - Justificativa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

1.4 - Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

1.5 - Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1.6 - Descrição . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2 Fundamentação Teórica 6

2.1 - Conceitos de Marketing Digital aplicados a uma conta de

anúncios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6

2.2 - Estrutura de Dados de um Grupo de anúncios do Google Ads 11

2.3 - Algoritmos de Clusterização . . . . . . . . . . . . . . . . . . . . . . . . . 11

2.4 - Algoritmos de Classificação . . . . . . . . . . . . . . . . . . . . . . . . . 12

3 Implementação 15

3.1 - Tratamento de dados para clusterização . . . . . . . . . . . . . . . . 15

3.2 - Busca pelo número de clusters . . . . . . . . . . . . . . . . . . . . . . . . . 16

3.3 - Clusterização . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

3.4 - Modelo básico para comparação . . . . . . . . . . . . . . . . . . . . . 19

3.5 - Tratamento de dados para classificação . . . . . . . . . . . . . . . . . 20

3.6 - Classificação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

21

Page 10: CLUSTERIZAÇÃO DE ANÚNCIOS E MODELO DE CLASSIFICAÇÃO …monografias.poli.ufrj.br/monografias/monopoli10031868.pdf · iii Declaração de Autoria e de Direitos Eu, Rodrigo Gonçalves

x

3.7 - Análise dos resultados da classificação . . . . . . . . . . . . . . . . . . 22

4 Conclusões

31

Page 11: CLUSTERIZAÇÃO DE ANÚNCIOS E MODELO DE CLASSIFICAÇÃO …monografias.poli.ufrj.br/monografias/monopoli10031868.pdf · iii Declaração de Autoria e de Direitos Eu, Rodrigo Gonçalves

xi

Lista de Figuras

1.1 – Diagrama de blocos do método seguido no projeto . . . . . . . . . . . . . . . . . . . . 4

2.1 – Divisão do mercado de anúncios digitais . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

2.2 – Divisão e subgrupos das campanhas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2.3 – Demografia e dispositivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.4 – Comparação entre algoritmos de classificação . . . . . . . . . . . . . . . . . . . . . . . . 14

3.1 – Resultado do Elbow Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

3.2 – Gráfico de cluster com três clusters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

3.3 – Gráfico de cluster com cinco clusters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

3.4 – Árvore de decisão de segmentação por renda . . . . . . . . . . . . . . . . . . . . . . . . 23

3.5 – Árvore de decisão de segmentação por aparelho . . . . . . . . . . . . . . . . . . . . . . 24

3.6 – Gráfico de importância de feature de segmentação por idade . . . . . . . . . . . . 25

3.7 – Gráfico de importância de feature de segmentação por gênero . . . . . . . . . . . 25

3.8 – Gráfico de importância de feature de segmentação por renda . . . . . . . . . . . . 26

3.9 – Gráfico de importância de feature de segmentação por aparelho . . . . . . . . . . 27

3.10 – Gráfico de pontos de segmentação por idade . . . . . . . . . . . . . . . . . . . . . . . . 28

3.11 – Gráfico de pontos de segmentação por gênero . . . . . . . . . . . . . . . . . . . . . . . 28

3.12 – Gráfico de pontos de segmentação por renda . . . . . . . . . . . . . . . . . . . . . . . . 29

3.13 – Gráfico de pontos de segmentação por aparelho . . . . . . . . . . . . . . . . . . . . . 30

Page 12: CLUSTERIZAÇÃO DE ANÚNCIOS E MODELO DE CLASSIFICAÇÃO …monografias.poli.ufrj.br/monografias/monopoli10031868.pdf · iii Declaração de Autoria e de Direitos Eu, Rodrigo Gonçalves

xii

Lista de Tabelas

3.1 – RMSE obtido de acordo com segmentação e estratégica . . . . . . . . . . . . . . . . 19

3.2 - Segmentações e suas possíveis categorias . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

3.3 – Menor média RMSE de teste obtida . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . 22

3.4 – RMSE em segmentação por idade . . . . . . .. . . . . . . . . . .. . . . . . . . . . . . . . . . 35

3.5 – RMSE em segmentação por gênero . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

3.6 – RMSE em segmentação por renda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

3.7 – RMSE em segmentação por aparelho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

Page 13: CLUSTERIZAÇÃO DE ANÚNCIOS E MODELO DE CLASSIFICAÇÃO …monografias.poli.ufrj.br/monografias/monopoli10031868.pdf · iii Declaração de Autoria e de Direitos Eu, Rodrigo Gonçalves

1

Capítulo 1

Introdução

1.1 – Tema

De modo geral, trata-se inicialmente da clusterização para visualização de

grupos de anúncios com características similares. Neste sentido, o problema concreto a

ser resolvido é a melhor visualização de como os anúncios de uma conta se relacionam,

permitindo escolhas de estratégias diferenciadas para lidar com cada grupo.

Num segundo momento, será aplicada uma classificação para predição dos

ajustes de lance. Os lances são quanto um anunciante está disposto a pagar para que

certo grupo de anúncios seja veiculado. Os ajustes de lance, por sua vez, são variações

aplicadas nos lances para que esses sejam maiores, ou menores, para categorias

específicas dentro de um segmento, como, por exemplo, um ajuste de lance para

aumentar em 20% o lances quando esses anúncios forem direcionados para pessoas

acessando através de um tablet. Portanto, dessa vez, os pontos a serem atingidos são:

melhor embasamento e segurança ao serem determinados os ajustes de lance e menor

carga de trabalho direcionada a microgerenciamento de conta por conta de ajustes em

vários anúncios.

1.2 – Delimitação

Atualmente, a demanda vem principalmente de administradores de conta de

Google Ads que precisam fazer vários ajustes de lance em diversas contas com

embasamento.

O projeto não contempla todos as plataformas que distribuem anúncios pela

Internet. Os dados utilizados são provenientes de uma conta de Google Ads, logo, o

projeto se delimitará a fazer análises somente dessa plataforma. Pretende-se que o

modelo resultante seja generalizável, ou seja, seja aplicável para outras contas e outros

Page 14: CLUSTERIZAÇÃO DE ANÚNCIOS E MODELO DE CLASSIFICAÇÃO …monografias.poli.ufrj.br/monografias/monopoli10031868.pdf · iii Declaração de Autoria e de Direitos Eu, Rodrigo Gonçalves

2

anúncios com as mesmas características, porém o resultado precisa ser testado a fim de

confirmar essa possibilidade. Por fim, para verificar se o resultado esperado foi

alcançado, o modelo será aplicado na conta em que os dados foram consumidos com

melhor e/ou igual desempenho ao que é feito atualmente.

1.3 – Justificativa

Controlar os lances nos leilões numa conta de anúncios é importante, pois é

imprescindível favorecer o aparecimento dos anúncios para o melhor público

segmentado, em detrimento de aparecem para outros grupos que não fariam o mesmo

aproveitamento. Do ponto de vista da organização proprietária da conta, é importante

que o investimento seja direcionado a onde o retorno seja maior, logo, cabem ajustes de

lances positivos para segmentos que respondem bem aos estímulos, da mesma forma

que ajustes negativos são dados para segmentos que não estão oferecendo resposta

aceitável.

É interessante para o administrador da conta fazer ajustes de acordo com sua

estratégia e de acordo com o desempenho do anúncio. O administrador deve também

estar atento a todas as opções demográficas e dispositivos que suportam um anúncio de

lance diferenciado. Nesses casos, o administrador precisa fazer os ajustes manualmente

e procurar embasamento no histórico da conta e situação atual. Por ser um trabalho

manual, repetitivo e inteligente, está muito suscetível a erros humanos. Nesse contexto,

é interessante o uso de uma inteligência artificial que faça ajustes de lances com maior

embasamento e segurança.

Neste projeto, inicialmente, será discutida uma forma de divisão dos anúncios

em grupos para adoção de estratégias parecidas para gerenciar os que possuem

características semelhantes. Após isso, a atenção será voltada para uma proposta de

ajustes de leilão dados fazendo-se uso de classificação.

1.4 – Objetivos

O objetivo do projeto é entregar uma análise de grupos de anúncios divididos em

grupos e múltiplas inteligências artificiais treinadas em Ad Groups com características

Page 15: CLUSTERIZAÇÃO DE ANÚNCIOS E MODELO DE CLASSIFICAÇÃO …monografias.poli.ufrj.br/monografias/monopoli10031868.pdf · iii Declaração de Autoria e de Direitos Eu, Rodrigo Gonçalves

3

diferentes, identificados através da clusterização, e de tipos de campanhas diferentes

(display, search, video). A inteligência artificial deverá ser capaz de fazer ajustes de

lances coerentes de acordo com as métricas providas. Por fim, os modelos serão

comparados com tecnologias utilizadas atualmente no mercado a fim de verificar sua

precisão. Desta forma, os objetivos específicos são:

• Análise da plataforma (Google Ads) a fim de escolher a melhor forma de

visualização de dados para serem exportados para planilha.

• Pesquisa e planejamento para escolha dos algoritmos de clusterização e

classificação que tenham melhor potencial para chegarem próximos a uma

solução para o problema.

• Escrita do código a ser utilizado na clusterização e classificação.

• Escrita do código de modelo base para comparação.

• Tratamento dos datasets.

• Treinamento e aplicação dos algoritmos.

• Análise dos resultados obtidos.

Page 16: CLUSTERIZAÇÃO DE ANÚNCIOS E MODELO DE CLASSIFICAÇÃO …monografias.poli.ufrj.br/monografias/monopoli10031868.pdf · iii Declaração de Autoria e de Direitos Eu, Rodrigo Gonçalves

4

1.5 – Metodologia

Figura 1.1 – Diagrama de blocos do método seguido no projeto. Os mesmos

dados são exportados em formatos diferentes para serem usados na clusterização e

classificação, porém, servem a um mesmo propósito.

O trabalho será desenvolvido utilizando-se de uma conta de Google Ads ativa há

dois anos. Na Figura 1.1, foi esquematizado de forma macro, em um diagrama de

blocos, as partes da metodologia: os modelos, suas entradas e saídas.

Após a extração e preparação dos dados de grupos de anúncios da conta, será

feita a clusterização K-means dos grupos de anúncios existentes, a fim de identificar ad

groups com características similares para que posteriormente sejam utilizados nos

mesmos modelos.

A partir da clusterização, os grupos de anúncios escolhidos terão os dados

exportados separadamente por demografia e dispositivo. De posse dos dados, as

planilhas terão os dados tratados a fim de serem utilizados para o aprendizado do

modelo.

O modelo será escrito utilizando uma classificação XGBoost. Após, o modelo

aprenderá com os dados exportados separadamente por demografia e dispositivo. Esse

processo será repetido em grupos de anúncios com características diferentes a fim de

levar em conta as diferenças intrínsecas aos objetivos de cada grupo.

Page 17: CLUSTERIZAÇÃO DE ANÚNCIOS E MODELO DE CLASSIFICAÇÃO …monografias.poli.ufrj.br/monografias/monopoli10031868.pdf · iii Declaração de Autoria e de Direitos Eu, Rodrigo Gonçalves

5

Na fase final do projeto, será feito um comparativo dos lances dados pelo

modelo com lances dados manualmente a fim de verificar a sua aplicabilidade no

mercado.

1.6 – Descrição

No capítulo 2 será dado um panorama geral sobre marketing digital direcionado

a Google Ads. Serão apresentados os tipos de campanhas, assim como os grupos de

anúncios e anúncios. Também será falado sobre segmentação de público de acordo com

dispositivos e demografia e métricas. Ao final, os métodos de clusterização e

classificação K-means e XGBoost serão abordados e explicados a fim de serem

utilizados para a resolução do problema.

O capítulo 3 apresenta o tratamento dos dados, aplicação dos algoritmos e

análise dos resultados para os métodos propostos para solução do problema.

Primeiramente, será aplicado o algoritmo K-means e posteriormente o XGBoost, a fim

de empregar a clusterização das instâncias no trabalho de divisão dos datasets para o

aprendizado no XGBoost.

Na conclusão, são abordados problemas encontrados durante o estudo a

aplicação do modelo nos dados disponíveis. São observados os pontos positivos e

negativos da estratégia de clusterização seguida por classificação e também é feita uma

breve proposta para continuação do projeto e sua transformação em produto.

Page 18: CLUSTERIZAÇÃO DE ANÚNCIOS E MODELO DE CLASSIFICAÇÃO …monografias.poli.ufrj.br/monografias/monopoli10031868.pdf · iii Declaração de Autoria e de Direitos Eu, Rodrigo Gonçalves

6

Capítulo 2

Fundamentação Teórica

2.1 – Conceitos de Marketing Digital aplicados a uma conta de

anúncios

A principal diferença entre o marketing digital e marketing tradicional é que o

primeiro utiliza mais intensamente tecnologias digitais que são inerentemente

mensuráveis, permitem conversas personalizadas e facilitam o desenvolvimento de

relacionamentos entre clientes e empresas, ao passo que o último é muito mais

orientado à comunicação de massa [1]. O marketing digital permite personalização de

anúncios entregues em larga escala. Permite também que o anunciante receba feedback

em forma de dados sobre seus anúncios.

São várias as plataformas que possuem o “comércio de anúncio” como sua

principal fonte de receita, são exemplos delas: Google, Facebook, Instagram, LinkedIn,

Bing entre outras. Dentre essas, uma das mais utilizadas é a do Google (Google Ads),

vide Figura 2.1, que entrega anúncios não só dentro da busca do Google, mas também

em outros lugares pela Internet, tais como YouTube e sites diversos.

Page 19: CLUSTERIZAÇÃO DE ANÚNCIOS E MODELO DE CLASSIFICAÇÃO …monografias.poli.ufrj.br/monografias/monopoli10031868.pdf · iii Declaração de Autoria e de Direitos Eu, Rodrigo Gonçalves

7

Figura 2.1 – Divisão do mercado de anúncios digitais. Divisão de receita proveniente

de anúncios digitais entre empresas nos Estados Unidos

.

Fonte: disponível em gráficos no eMarketer [15].

Através do Google Ads, é possível criar campanhas de search, display,

shopping, vídeo e app. Campanhas são compostas por grupos de anúncios que

compartilham do mesmo orçamento, público-alvo e outras configurações. No Google

Ads, cada conta pode possuir uma ou mais campanhas e cada campanha pode conter um

ou mais grupo de anúncios,

Campanhas de search permitem que o anunciante escolha palavras-chave

(keywords) que, ao serem buscadas no Google por alguma pessoa, mostrem o anúncio

configurado para aquele grupo de anúncios composto por essas keywords. Esse anúncio,

caso bem configurado e com lance alto, aparecerá como um dos primeiros resultados.

Já as campanhas de display, são responsáveis pelos anúncios visuais compostos

por imagens escolhidas pelo anunciante, que geralmente aparecem nos cantos dos sites

em formato de banner.

Nas campanhas de shopping, anúncios são entregues pelo Google e por outros

sites, porém, diferentemente da campanha de display, há uma mistura de texto e

imagens, com destaque para o preço e o nome da loja.

Já as campanhas de app são focadas em entregar anúncios em mobiles nos

aplicativos do Google, como Youtube, Google Search, Google Play, Discover etc.

Page 20: CLUSTERIZAÇÃO DE ANÚNCIOS E MODELO DE CLASSIFICAÇÃO …monografias.poli.ufrj.br/monografias/monopoli10031868.pdf · iii Declaração de Autoria e de Direitos Eu, Rodrigo Gonçalves

8

Pode-se dizer que engloba todos os tipos de campanha, porém de forma direcionada ao

formato mobile, uma vez que é possível entregar, por exemplo, anúncios de vídeo e

shopping em mobiles.

Por outro lado, as campanhas de vídeo são veiculadas principalmente no

YouTube em vídeos isolados, ou embutidos. Esses estão divididos em categorias de

acordo com sua duração e se é possível pulá-los, ou não [2].

Na figura 2.1, estão dispostos os tipos de campanhas e os tipos de anúncios que

podem ser criados dentro de seus grupos. Não são todas as campanhas que suportam

qualquer tipo de anúncio, logo, por conta da disponibilidade de dados, será dado foco às

campanhas de search que possuam anúncios do tipo texto, campanhas de vídeo com

anúncios do tipo vídeo e campanhas de display com anúncios do tipo imagem, ou

responsivo.

Figura 2.2 – Divisão e subgrupos das campanhas. Campanhas podem ser divididas em

search, display, shopping, video ou app, enquanto anúncios podem ser text, responsive,

image, video, product, showcase, ou call-only.

Fonte: criação do autor.

Para pagar pelos anúncios, o anunciante participa de um "leilão" com outros

anunciantes que também estão dispostos a pagar pelo clique naquele ad. É usado o

termo CPC (custo por clique) para denominar o quanto se quer pagar pelo anúncio.

Neste leilão, para saber quem ganhará o direito de exibir o anúncio naquela posição, é

levado em conta o lance, a qualidade do ad e o impacto. Além desses, há também

dependência do capital escolhido para a campanha. Por exemplo; se o capital de uma

Page 21: CLUSTERIZAÇÃO DE ANÚNCIOS E MODELO DE CLASSIFICAÇÃO …monografias.poli.ufrj.br/monografias/monopoli10031868.pdf · iii Declaração de Autoria e de Direitos Eu, Rodrigo Gonçalves

9

campanha for de R$50,00, uma vez que um determinado número de leilões seja vencido

alcançando os R$50,00, os anúncios contidos nessa campanha não mais serão entregues.

Nas campanhas de search, o anunciante pode escolher o CPC condicionado ao

grupo de anúncio (ad group), ou à keyword. Nas campanhas de display, é possível

escolher CPC apenas segundo o grupo de anúncio, e não separadamente por ad. Nas

campanhas de vídeo, é usado o termo CPV, uma vez que a contagem é feita por

visualização, onde se entende que uma visualização é alcançada após terem

transcorridos trinta segundos desde o início da exibição, ou o usuário ter interagido com

o anúncio.

Para entregar ads para o melhor segmento possível de acordo com a estratégia

do anunciante, o Google Ads dispõe de dados divididos por demografia (faixa de idade,

gênero, renda e combinação entre esses), aparelhos (tablet, celular, computador e

televisão), localidade (cidade, estado e país) e status parental (pai, ou não). Para melhor

entendimento das subdivisões, consultar figura 2.2. Nessas divisões, é possível ainda

fazer ajustes de lance de acordo com o público-alvo. Por exemplo, se o CPC para

determinado grupo de anúncios for de R$1,00, através de um ajuste de 20% direcionado

ao gênero feminino o anunciante passará a estar disposto a pagar R$1,20 pelo clique

nesse ad por pessoas identificadas como sendo do gênero feminino.

Page 22: CLUSTERIZAÇÃO DE ANÚNCIOS E MODELO DE CLASSIFICAÇÃO …monografias.poli.ufrj.br/monografias/monopoli10031868.pdf · iii Declaração de Autoria e de Direitos Eu, Rodrigo Gonçalves

10

Figura 2.3 – Demografia e dispositivos. Os dados podem ser visualizados em diferentes

formatos e, em cada visualização (idade, gênero etc), são subdivididos de acordo com

características.

Fonte: criação do autor.

Em cada anúncio, campanha, ou grupo de anúncio, métricas como impressões,

interações, taxa de interação, custo, custo médio, conversão, custo por conversão e taxa

de conversão são transparentes. As principais delas; impressões correspondem à

quantidade de vezes que o anúncio é entregue, interações indicam a quantidade de vezes

que os anúncios são clicados e conversão que corresponde à quantas vezes determinada

ação é realizada dentro do site do anunciante, são comumente usadas para embasar o

investimento de acordo com a estratégia do anunciante.

Em datas especiais, como Natal, Black Friday e Dia das Mães, nota-se um

aumento na quantidade de anúncios e nos lances. Nessas épocas, e em cerca de até um

mês e meio antes, há a veiculação de anúncios mais personalizados, de acordo com o

tema. Porém, em outras épocas longe dos picos de consumo, é comum a veiculação de

anúncios comuns. Como o anunciante tem a sua disposição dados que revelam o

desempenho do anúncio, é frequente que se disponha de maior capital para campanhas

que alcancem o desempenho desejado, de acordo com as métricas disponíveis. Uma

prática muito aplicada é a de Teste A/B, em que dois anúncios parecidos são colocados

à prova para ver qual tem o melhor desempenho de acordo com suas peculiaridades.

Page 23: CLUSTERIZAÇÃO DE ANÚNCIOS E MODELO DE CLASSIFICAÇÃO …monografias.poli.ufrj.br/monografias/monopoli10031868.pdf · iii Declaração de Autoria e de Direitos Eu, Rodrigo Gonçalves

11

Após algum tempo anunciando com o Google Ads, uma rica base de dados é

formada, contendo muitas informações sobre o histórico de investimento da conta.

Além de disponibilizar esses dados em dashboards, o Google Ads também permite que

sejam exportados em formato .xlsx, permitindo análises em larga escala.

2.2 – Estrutura de Dados de um Grupo de anúncios do Google Ads

A estrutura dos dados relevantes de grupos de anúncios exportados de uma conta

e seu tipo, a princípio, é composta por: nome (palavra), tipo (palavra), impressões

(número inteiro), interações (número inteiro), taxa de interação (porcentagem), custo

médio (número decimal), custo (número decimal), conversões (número decimal), custo

por conversão (número decimal), taxa de conversão (porcentagem), clicks (número

inteiro), CTR (porcentagem), CPM médio (número decimal), CPC médio (número

decimal), CPV médio (número decimal), impressões mostradas no topo (porcentagem) e

impressões mostradas acima dos resultados que não correspondem a anúncios

(porcentagem).

Enquanto a estrutura de cada grupo de anúncios é composta por: dia, ajuste de

lance (porcentagem), demografia/dispositivo (palavra), impressões (número inteiro),

interações (número inteiro), taxa de interação (porcentagem), custo (número decimal),

conversões (número decimal), custo por conversão (número decimal), taxa de conversão

(porcentagem), clicks (número inteiro), CTR (porcentagem), CPC médio (número

decimal), CPV médio (número decimal), impressões mostradas no topo (porcentagem) e

impressões mostradas acima dos resultados que não correspondem a anúncios

(porcentagem).

2.3 – Algoritmos de Clusterização

Os algoritmos de clusterização são classificados como aprendizado não

supervisionado, já que a máquina é treinada com observações não rotuladas (sem acesso

à resposta correta); almeja a aprender a identificar padrões e estruturas nos dados

dispostos [3].

Page 24: CLUSTERIZAÇÃO DE ANÚNCIOS E MODELO DE CLASSIFICAÇÃO …monografias.poli.ufrj.br/monografias/monopoli10031868.pdf · iii Declaração de Autoria e de Direitos Eu, Rodrigo Gonçalves

12

Esse tipo de algoritmo cria uma nova representação dos dados de forma que seja

de mais fácil explorar a propriedade de localidade de referência de um modelo

matemático. A principal aplicação é para a redução de dimensões, transformando

representações de dados com muitas dimensões para uma representação com menos

dimensões (duas dimensões, em muitos casos), levando em conta os dados mais

importantes [4].

Logo, o objetivo do aprendizado não supervisionado é encontrar clusters nas

entradas semelhantes sem ser dito explicitamente que esses pontos pertencem a uma

classe, ou outra, em específico. Ao algoritmo é dado o desafio de descobrir

similaridades por si só [3]. Desta forma, clusterização é a atividade de particionar um

dataset em grupos, denominados clusters. De modo simples, objetivo é dividir os dados

de forma que os pontos de um mesmo cluster sejam muito similares e os pontos num

outro cluster sejam diferentes [4].

Suponha que se necessita dividir os dados de entrada em k categorias, sendo k

um número conhecido. São alocados k clusters no espaço dos dados para que sejam

posicionados no centro de cada cluster. Porém, não é sabido onde os clusters estão, nem

onde se localizam seus centros. O algoritmo K-means é normalmente aplicado neste

tipo de problema.

Mais especificamente, o algoritmo tem funcionamento dependente de escolhas

de entradas k, k posições aleatórias no espaço de dados e atribuição de centro de clusters

a essas posições. Durante o aprendizado, que se repete até que os centros de cluster

parem de se mover, para cada ponto, computa-se a distância para cada centro de cluster

e atribui-se o ponto ao centro de cluster mais próximo, para cada centro, move-se a

posição do centro para o meio dos pontos desse cluster [3].

Finalmente, durante o uso, para cada ponto de teste, computa-se a distância a

cada centro de cluster e atribui-se o ponto ao cluster cujo centro está mais próximo [3].

2.4 – Algoritmos de Classificação

Os algoritmos de classificação são classificados como aprendizado

supervisionado, uma vez que a máquina é treinada com observações rotuladas

(acompanhadas da resposta correta); aprende a inferir a resposta correta para

observações não rotuladas recebidas posteriormente [3].

Page 25: CLUSTERIZAÇÃO DE ANÚNCIOS E MODELO DE CLASSIFICAÇÃO …monografias.poli.ufrj.br/monografias/monopoli10031868.pdf · iii Declaração de Autoria e de Direitos Eu, Rodrigo Gonçalves

13

Há um dataset (training data) que consiste em dados de entrado contendo o dado

alvo, que é a resposta que o algoritmo deverá produzir, no final das contas.

Um problema de classificação consiste em, a partir de vetores de entrada, decidir

a qual classe N eles pertencem, baseado em treinos de cada classe. O ponto mais

importante de um problema de classificação é que ele é discreto; cada exemplo pertence

a exatamente uma classe, e o conjunto de classes cobre todas as possíveis saídas das

amostras. Alguns exemplos podem fugir dessa definição, para eles são aplicados os

classificadores fuzzy, que não são abordados neste projeto [3].O XGBoost é uma

biblioteca de classificação e regressão bastante utilizada, porém antes de apresentá-la é

necessário realizar uma introdução acerca do algoritmo Gradient Boosted Tree (GBRT

OU GBM): esse funciona através da criação de múltiplas árvores de decisão

serialmente, em que cada árvore tenta corrigir a anterior. Nesse algoritmo, a pré-poda é

usada para evitar overfitting. As árvores costumam ser muito rasas, com profundidade

de um a cinco, fazendo com que as predições sejam rápidas e consumam pouca

memória.

A ideia principal por trás do GBRT é combinar múltiplos modelos, nesse

contexto conhecidos como weak learners; como as árvores rasas. Cada árvore só

consegue fornecer boas predições sobre parte dos dados, logo, mais e mais árvores são

adicionadas para melhorar a performance [4].

Os principais parâmetros do GBRT são a quantidade de árvores a serem geradas

e a taxa de aprendizado, que controla quantos erros cada árvore pode corrigir da

anterior. Quanto mais árvores forem geradas, mais complexo será o modelo. De modo a

evitar o overfitting, uma pré-poda mais forte pode ser aplicada, assim como uma

limitação da taxa de aprendizado e da quantidade de árvores [4].

O XGBoost é uma biblioteca open source escalável de machine learning que

deve sua popularidade principalmente às muitas resoluções no Kaggle que aplicaram

seus conceitos. Esse sistema executa muito mais rápido que outras técnicas populares, e

é escalável por conta de otimizações feitas em seu algoritmo [6]. Como pode ser visto

na Figura 2.4, o XGB possui o segundo menor tempo de treinamento ficando atrás

apenas da regressão logística e o maior poder de predição dentre os comparados, em um

conjunto de dados de um milhão de registro com 20 features. Apesar da diferença no

poder de predição entre os dois primeiros ser mínima, o tempo de treinamento do

Gradient Boosting é muito maior.

Page 26: CLUSTERIZAÇÃO DE ANÚNCIOS E MODELO DE CLASSIFICAÇÃO …monografias.poli.ufrj.br/monografias/monopoli10031868.pdf · iii Declaração de Autoria e de Direitos Eu, Rodrigo Gonçalves

14

Figura 2.4 – Comparação entre outros algoritmos de classificação. Comparação em

relação a poder de predição e tempo de treino entre XGBoost e outros algoritmos

tradicionais.

Fonte: “XGBoost Algorithm: Long May She Reign!” em Towards Data Science [7].

Dentre as otimizações, as mais notáveis são: a paralelização, pois XGBoost

aborda o processo sequencial de criação de árvores usando paralelização. A poda de

árvore em que o primeiro critério a ser levado em conta para a parada na divisão das

árvores no é o “máximo de profundidade”, de modo que os outros critérios são dados

como secundários. Logo, enquanto no GBM a árvore continuaria se aprofundando por

conta de outros critérios, na XGBoost a árvore já seria podada de acordo com o máximo

dado. Finalmente, a otimização de hardware, que é alcançado através do uso do cache

alocando buffers em cada thread para guardar informações estatísticas calculadas. Além

disso, também faz uso da out-of-core computing, criado para processar dados que sejam

muito grandes para caber na memória principal do computador de uma só vez.

Page 27: CLUSTERIZAÇÃO DE ANÚNCIOS E MODELO DE CLASSIFICAÇÃO …monografias.poli.ufrj.br/monografias/monopoli10031868.pdf · iii Declaração de Autoria e de Direitos Eu, Rodrigo Gonçalves

15

Capítulo 3

Implementação

3.1 – Tratamento de dados para clusterização

Uma vez que existe uma maior quantidade de dados disponíveis para grupo de

anúncios do tipo busca (509 grupos), os grupos de anúncios do tipo display (11 grupos)

e vídeo (3 grupos) foram descartados, já que possuem muitas características diferentes

do tipo busca e não poderiam ser clusterizados juntos.

De posse dos dados de ad groups (grupo de anúncios) exportados numa planilha

de Excel (.xlsx), foram retirados os grupos que continham zero na coluna de custo,

porque representam grupos de anúncios que nunca foram veiculados. Após isso,

também foram retirados os grupos que não tinham informação sobre porcentagem de

impressões absolutas no topo da busca (Impr. (Abs. Top)%) e porcentagem de

impressões no topo da busca (Impr. (Top)%) [9].

Impr. (Abs. Top)% diz respeito à quantidade de impressões que ficaram no topo

absoluto da busca do Google, acima dos resultados orgânicos e acima de todos os outros

anúncios, dividido pelo total de impressões. Enquanto isso, Impr. (Top)% representa a

quantidade de vezes que o anúncio apareceu acima dos resultados orgânicos, dividido

pelo total de impressões. Resultados orgânicos correspondem aos resultados que não

representam anúncios; são os resultados da busca que apresentam maior relevância para

o que foi buscado, de acordo com o algoritmo de busca do Google.

Também foram retiradas as colunas que continham dados que são relações de

outros dados já presentes em outras colunas, como CPC (custo por clique). Finalmente,

com 509 ad groups disponíveis com todos os dados de interesse preenchidos.

As colunas restantes para clusterização foram: impressões, interações, custo

médio, custo, conversões, cliques, CPM médio, CPC médio, Impr. (Abs. Top)% e Impr.

(Top)%. A permanência das colunas de CPM e CPC médios não é uma falha, pois não

estão disponíveis colunas de impressões médias e cliques médios, enquanto há colunas

de custo e clique para CPC.

Page 28: CLUSTERIZAÇÃO DE ANÚNCIOS E MODELO DE CLASSIFICAÇÃO …monografias.poli.ufrj.br/monografias/monopoli10031868.pdf · iii Declaração de Autoria e de Direitos Eu, Rodrigo Gonçalves

16

3.2 – Busca pelo número de clusters

A divisão das amostras, a princípio seria feita com três, quatro, ou cinco clusters,

pois, dependendo da definição de funil de vendas utilizado, representam a quantidade de

etapas que um cliente passa até fazer a compra. A mais geral delas, a de três etapas,

apresenta as seguintes definições:

Topo de funil: o cliente está em momento de aprendizado. Estão pesquisando e

vendo as soluções para suas dores. Meio de funil: já fizeram sua pesquisa e já estão

cientes do que é capaz de solucionar seu problema, agora só estão filtrando as opções;

buscam informações mais específicas, mesmo ainda não estando prontos para gastarem.

Fundo de funil: já se decidiram e estão confortáveis com sua decisão; estão prontos para

gastar com o produto, ou serviço [8].

Ao invés de escolher o número de clusters de forma aleatório, é melhor aplicar

uma técnica para decidir o número ótimo. Para isso, representa-se em um gráfico a

variação da Soma dos Quadrados Dentro do Cluster (WCSS) em relação à quantidade

de clusters. Tal técnica é denominada técnica do cotovelo e o número de clusters

escolhido é o de quando o aumento de clusters não compensa mais o decaimento do

WCSS e começa a ocorrer o overfitting [14].

Ao aplicar a técnica do cotovelo, claramente o número ótimo de clusters é três

ao se analisar o gráfico na Figura 3.1. Logo, a clusterização foi feita com três e cinco

clusters para fins de comparação e numa tentativa de dissolver o cluster que concentrava

a maioria dos pontos.

Page 29: CLUSTERIZAÇÃO DE ANÚNCIOS E MODELO DE CLASSIFICAÇÃO …monografias.poli.ufrj.br/monografias/monopoli10031868.pdf · iii Declaração de Autoria e de Direitos Eu, Rodrigo Gonçalves

17

Figura 3.1 – Método utilizado para prever qual o número ótimo de clusters.

3.3 – Clusterização

Através da PCA, plota-se um gráfico compreensível reduzido a duas dimensões

dos principais componentes responsáveis por caracterizar cada grupo de anúncios, uma

vez que não seria viável fazer uma representação de dez dimensões. Ao plotar os

gráficos, percebe-se, obviamente, a mesma disposição dos pontos no gráfico, porém

com certa diferença no pertencimento dos pontos aos clusters.

Percebe-se também que os pontos se encontram muito concentrados na mesma

área do gráfico. Na clusterização com 3 clusters, o cluster 2 têm muitos pontos dentro

de sua área, enquanto o cluster 1 tem apenas um ponto e o cluster 0 tenha 13 pontos.

Na clusterização com 5 clusters, oito pontos no cluster 2, cinco no cluster 4, um no

cluster 1, trinta e um no cluster 3 e o restante no cluster 0.

O resultado da clusterização não é o esperado pois não reflete as diferentes

características de cada ad group, muito devido ao fato dessas características relativas a

posição no funil de vendas não serem representadas nas métricas disponíveis para

análise.

Page 30: CLUSTERIZAÇÃO DE ANÚNCIOS E MODELO DE CLASSIFICAÇÃO …monografias.poli.ufrj.br/monografias/monopoli10031868.pdf · iii Declaração de Autoria e de Direitos Eu, Rodrigo Gonçalves

18

Figura 3.2 - Clusterização reduzida a duas dimensões com três clusters.

Figura 3.3 – Clusterização reduzida a duas dimensões com cinco clusters.

Page 31: CLUSTERIZAÇÃO DE ANÚNCIOS E MODELO DE CLASSIFICAÇÃO …monografias.poli.ufrj.br/monografias/monopoli10031868.pdf · iii Declaração de Autoria e de Direitos Eu, Rodrigo Gonçalves

19

3.4 – Modelo básico para comparação

A fim de concluir se a classificação proposta forneceria resultados melhores, ou

não que a base, foram utilizados dois modelos básicos para comparação com a

classificação por XGB a saber: (1) média aritmética; (2) média mediana. Foram

aplicadas as estratégias de média mediana e média aritmética, e logo após, medidas suas

eficácias através do erro médio quadrático (Root-Mean-Square Error, RMSE), cujos

valores podem ser observados na Tabela 3.1.

Essa tabela traz o RMSE médio e o desvio padrão associado obtido aplicando-se

a média aritmética e mediana como predições para os ajustes de lance cinco vezes para

cada segmentação, com os dados de treino e teste sendo redivididos aleatoriamente em

cada uma dessas iterações.

Tabela 3.1 - RMSE médio obtido de acordo com segmentação e estratégia. Aplicadas

médias aritmética e mediana para obtenção dos modelos baseline e extraídos RMSE e

desvio padrão.

Segmentação RMSE

Aritmética

Desvio Padrão

A

RMSE

Mediana

Desvio Padrão M

Idade 0,35928

0,017717 0,369663

0,009194

Renda 0,182831

0,017981

0,187393

0,033945

Gênero 0,317471

0,014519 0,339154

0,031289

Aparelho 0,203412

0,036762

0,218609

0,013262

Page 32: CLUSTERIZAÇÃO DE ANÚNCIOS E MODELO DE CLASSIFICAÇÃO …monografias.poli.ufrj.br/monografias/monopoli10031868.pdf · iii Declaração de Autoria e de Direitos Eu, Rodrigo Gonçalves

20

3.5 – Tratamento de dados para classificação

Assim como na clusterização, foram usados dados de ad group de campanhas de

buscas por conta da menor disponibilidade de dados de ad groups de outros tipos

(display, vídeo etc).

Devido à baixa disponibilidade de dados de outros segmentos com ajustes de

lances, o algoritmo foi aplicado a segmentação por idade, aparelho, gênero e renda

familiar. Fora usados dados de lances de diversos ad groups divididos pelas

segmentações presentes na Tabela 3.2. Assim, para cada ad group, todas as categorias

dentro de uma segmentação possuem um ajuste de lance específico.

Tabela 3.2 - Segmentações e suas possíveis categorias. Cada segmento (idade,

renda, etc) é dividido em diferentes categorias.

Idade Renda Gênero Aparelho

18 – 24 50% menores Masculino Computadores

25 – 34 41 – 50% Feminino Celulares

35 – 44 31 – 40% Desconhecido Tablets

45 – 54 21 – 30% Televisores

65+ 11 – 20%

Desconhecido 10% maiores

Desconhecido

Ao fazer a análise do melhor método a ser escolhido para descarte de colunas,

foi observado que, caso aplicado o PCA, não seria possível aplicar uma análise

satisfatória de importância de feature, já que se perderia a referência do que cada

feature representava. Por esse motivo, optou-se por exclusão manual de colunas, já que

eram poucas e fáceis de serem discernidas como relações entre outras.

Foram retiradas as colunas que contivessem dados que são relações de outros

dados já presentes em outras colunas, como CPC (custo por clique) e linhas que

possuíam custo igual a zero. Após o descarte de colunas redundantes, restaram as

Page 33: CLUSTERIZAÇÃO DE ANÚNCIOS E MODELO DE CLASSIFICAÇÃO …monografias.poli.ufrj.br/monografias/monopoli10031868.pdf · iii Declaração de Autoria e de Direitos Eu, Rodrigo Gonçalves

21

colunas de campanha, ad group, segmentação, impressões, interações (clicks), custo

médio, custo, conversões, CPM médio, CPC médio e ajuste de lance.

Dessa vez, como os dados estão segmentados por categorias, como visto na

Tabela 3.2, existem muito mais registros do que na abordagem da clusterização.

Finalmente, obtiveram-se quatro planilhas (uma para cada categoria) contendo 391

linhas de dados (renda), 2679 linhas de dados (idade), 1459 linhas de dados (gênero) e

1385 linhas de dados (aparelho). Não foi possível aplicar o modelo para a segmentação

de status parental, pois não possuíam um histórico satisfatório de ajustes de lances:

apenas dados sobre três ad groups com lances ajustes ajustados disponíveis.

3.6 – Classificação

Primeiramente, foi feito uso do One Hot Encoder (OHE) para lidar com as

segmentações das categorias. O OHE permite que colunas que representem

segmentações sejam “quebradas” em n colunas, sendo n categorias, e preenchidas com

0, ou 1, de acordo com a categoria. Após, foi feita a divisão dos dados para treino e para

teste sendo, a cada 10 linhas de dados, 2 para teste e 8 para treino.

Optou-se pelo uso do XGBClassifier ao invés do XGBRegressor, pois a faixa de

valores de ajustes de leilões é finita e discreta; são cerca de 30 possíveis ajustes entre -

100% e +150%. Foram utilizados os parâmetros:

• “objective”: especificação do tipo de aprendizado e objetivo.

• “colsample_bytree”: é a taxa de criação de subamostras de colunas na criação de

cada árvore.

• “learning_rate”: usado para prevenir o overfitting. Depois de cada iteração,

reduz o peso das features para deixar o processo mais conservativo.

• “max_depth”: profundidade máxima de uma árvore. Quanto maior esse

parâmetro, mais provável de acontecer o overfitting.

• “n_estimators”: quantidade de árvores a serem construídas. [13]

A fim de fazer o melhor ajuste dos parâmetros, observou-se o RMSE ao fim de

cada análise de resultados, escolhendo a configuração de parâmetros que alcançassem o

menor RMSE.

Page 34: CLUSTERIZAÇÃO DE ANÚNCIOS E MODELO DE CLASSIFICAÇÃO …monografias.poli.ufrj.br/monografias/monopoli10031868.pdf · iii Declaração de Autoria e de Direitos Eu, Rodrigo Gonçalves

22

Os valores utilizados nos parâmetros, de acordo com a segmentação, foram os

seguintes:

• Idade: colsample_bytree = 0.5, learning_rate = 0.3, max_depth = 15, alpha = 10,

n_estimators = 60.

• Gênero: colsample_bytree = 0.5, learning_rate = 0.2, max_depth = 15, alpha =

10, n_estimators = 60.

• Renda: colsample_bytree = 0.5, learning_rate = 0.3, max_depth = 15, alpha =

10, n_estimators = 60.

• Aparelho: colsample_bytree = 0.5, learning_rate = 0.3, max_depth = 15, alpha =

10, n_estimators = 60.

3.7 – Análise dos resultados da classificação

O método k-fold implica em dividir aleatoriamente o dataset em k grupos de

tamanhos aproximadamente iguais. Cada grupo é usado como grupo de teste uma vez,

enquanto o restante é usado como grupo de treinamento. Aplica-se o modelo em cada

grupo de treinamento e posteriormente avalia-se no grupo de teste. A pontuação de cada

uma das comparações é armazenada e utilizada para avaliar o modelo [12].

Na Tabela 3.3 é possível observar o menor RMSE alcançado pelo modelo. Os

menores RMSE’s são alcançados em árvores de maior ordem, logo, como pode ser

observado nas tabelas localizadas no apêndice, as primeiras árvores apresentam RMSE

alto bem mais alto.

Com os parâmetros utilizados, foi possível chegar ao menor RMSE médio de

acordo com as interações de criação de árvore. Na Tabela 3.3 pode ser observado em

qual iteração que o RMSE parou de apresentar diminuição significativa.

Tabela 3.3 – Menor média RMSE de teste obtida. Menores médias RMSE obtidas e o

número da iteração em que aconteceu.

Segmentação Menor RMSE Desvio padrão Iteração

Idade 0,272097 0,002249 27

Page 35: CLUSTERIZAÇÃO DE ANÚNCIOS E MODELO DE CLASSIFICAÇÃO …monografias.poli.ufrj.br/monografias/monopoli10031868.pdf · iii Declaração de Autoria e de Direitos Eu, Rodrigo Gonçalves

23

Gênero 0,329853 0,020646 41

Renda 0,120664 0,012460 24

Aparelho 0,186851 0,015882 31

Árvores de decisão podem ser impressas para ver o processo que o modelo

seguiu para chegar em sua decisão final. É possível apresentar qualquer uma das árvores

criadas, porém, decidiu-se apresentar somente a primeira de duas segmentações

diferentes, pois uma árvore sozinha, por si só, não fornece pistas que levem ao valor

alcançado na previsão final. De posse de todas as árvores geradas pelo modelo, é

necessário fazer o somatório dos valores das folhas alcançadas através das decisões para

chegar ao valor almejado.

Figura 3.4 – Primeira árvore de decisão de segmentação por renda.

Page 36: CLUSTERIZAÇÃO DE ANÚNCIOS E MODELO DE CLASSIFICAÇÃO …monografias.poli.ufrj.br/monografias/monopoli10031868.pdf · iii Declaração de Autoria e de Direitos Eu, Rodrigo Gonçalves

24

Figura 3.5 – Primeira árvore de decisão de segmentação por aparelho.

A importância da feature revela quão útil e valiosa uma feature foi para a

construção das árvores de decisão dentro do modelo. Desta forma, quanto mais um

atributo for usado nas decisões, maior sua importância.

Uma pontuação é atribuída para a feature a cada árvore criada de acordo com a

melhora que a feature garante ao modelo ao ser aplicada como ponto de divisão.

Finalmente, é feita uma média, para cada feature, das pontuações em todas as árvores

criadas. Os resultados destas pontuações são apresentados nas Tabelas 3.4 a 3.7.

Page 37: CLUSTERIZAÇÃO DE ANÚNCIOS E MODELO DE CLASSIFICAÇÃO …monografias.poli.ufrj.br/monografias/monopoli10031868.pdf · iii Declaração de Autoria e de Direitos Eu, Rodrigo Gonçalves

25

Figura 3.6 - Gráfico de importância de feature de segmentação por idade.

Sendo, ordenado de mais importante pra menos importante: f12: CPM médio,

f8: custo médio, f7: impressões, f9: custo, f13: CPC médio, f11: clicks, f10: conversões.

Categorias: f6: desconhecido, f1: 25-34, f0: 18-24, f2: 35-44, f3: 45-54, f5: 65+, f4: 55-

64.

Figura 3.7 - Gráfico de importância de feature de segmentação por gênero.

Page 38: CLUSTERIZAÇÃO DE ANÚNCIOS E MODELO DE CLASSIFICAÇÃO …monografias.poli.ufrj.br/monografias/monopoli10031868.pdf · iii Declaração de Autoria e de Direitos Eu, Rodrigo Gonçalves

26

Sendo, ordenado de mais importante pra menos importante: f4: custo médio , f8:

CPM médio, f5: custo, f3: impressões, f7: clicks, f9: CPC médio, f6: conversões.

Categorias: f0: feminino, f1: masculino, f2: desconhecido.

Figura 3.8 - Gráfico de importância de feature de segmentação por renda.

Sendo, ordenado de mais importante pra menos importante: f8: custo médio,

f13: CPM médio, f9: custo, f7: impressões, f11: clicks, f12: CPC médio, f10:

conversões. Categorias: f5: 10% maiores, f4: 50% menores, f0: 11-20%, f1: 21-30%, f2:

31-40%, f6: desconhecido, f3: 41-50%.

Page 39: CLUSTERIZAÇÃO DE ANÚNCIOS E MODELO DE CLASSIFICAÇÃO …monografias.poli.ufrj.br/monografias/monopoli10031868.pdf · iii Declaração de Autoria e de Direitos Eu, Rodrigo Gonçalves

27

Figura 3.9 - Gráfico de importância de feature de segmentação por aparelho.

Sendo, ordenado de mais importante pra menos importante: f5: custo médio, f6:

custo, f9: clicks, f4: impressões, f10: CPM médio, f8: conversões, f7: custo. Categorias:

f1: celular, f0: computador, f3: tablet.

O gráfico de comparação é uma ferramenta visual para comparar o lance real

com cada previsão de lance. Em vez de dispor todos os dados em uma tabela muito

extensa, optou-se pela apresentação no gráfico cujo eixo x representa cada grupo de

anúncio e o eixo y, seu ajuste de lance, indo de -100% a +150%.

Page 40: CLUSTERIZAÇÃO DE ANÚNCIOS E MODELO DE CLASSIFICAÇÃO …monografias.poli.ufrj.br/monografias/monopoli10031868.pdf · iii Declaração de Autoria e de Direitos Eu, Rodrigo Gonçalves

28

Figura 3.10 - Gráfico de pontos de segmentação por idade. Gráfico de pontos de

previsões e testes de ajustes de lance (segmentação por idade).

A Figura 3.10 apresenta a segmentação por idade, nesse gráfico os lances e suas

predições vão de -90% a +73%. Nessa situação, percebe-se que as predições e os lances

concentram-se na faixa de -40% a +20%, mas com algum valores nos extremos dos

lances.

Figura 3.11 - Gráfico de pontos de segmentação por gênero. Gráfico de pontos de

previsões e testes de ajustes de lance (segmentação por gênero).

Page 41: CLUSTERIZAÇÃO DE ANÚNCIOS E MODELO DE CLASSIFICAÇÃO …monografias.poli.ufrj.br/monografias/monopoli10031868.pdf · iii Declaração de Autoria e de Direitos Eu, Rodrigo Gonçalves

29

A Figura 3.11 apresenta a segmentação por gênero, nesse gráfico os lances e

suas predições vão de -62% a +175%. Nessa situação, percebe-se que as predições e os

lances concentram-se na faixa de -50% a +40%.

Figura 3.12 - Gráfico de pontos de segmentação por renda. Gráfico de pontos de

previsões e testes de ajustes de lance (segmentação por renda).

A Figura 3.12 apresenta a segmentação por renda, nesse gráfico os lances e suas

predições vão de -50% a +100%. Nessa situação, percebe-se que as predições e os

lances concentram-se em um único valor: -20%.

Page 42: CLUSTERIZAÇÃO DE ANÚNCIOS E MODELO DE CLASSIFICAÇÃO …monografias.poli.ufrj.br/monografias/monopoli10031868.pdf · iii Declaração de Autoria e de Direitos Eu, Rodrigo Gonçalves

30

Figura 3.13 - Gráfico de pontos de segmentação por aparelho. Gráfico de pontos de

previsões e testes de ajustes de lance (segmentação por aparelho).

A Figura 3.13 apresenta a segmentação por aparelho, nesse gráfico os lances e

suas predições vão de -100% a +45%. Nessa situação, percebe-se que as predições e os

lances concentram-se na faixa de -20% a +40%.

Page 43: CLUSTERIZAÇÃO DE ANÚNCIOS E MODELO DE CLASSIFICAÇÃO …monografias.poli.ufrj.br/monografias/monopoli10031868.pdf · iii Declaração de Autoria e de Direitos Eu, Rodrigo Gonçalves

31

Capítulo 4

Conclusões

Algumas características do XGBoost não foram aproveitadas; o tamanho do

dataset não é tão grande a ponto de as otimizações feitas pelo modelo fazerem

diferença. Porém, algumas análises provenientes da mesma biblioteca que contém o

modelo são muito diretas e fáceis de serem aplicadas, como as de importância de

feature, visualização de árvore e RMSE após cada etapa de boosting. Em um cenário

que incluísse contas de anúncios diversas aliadas à análise temporal, as otimizações de

desempenho seriam mais úteis.

Para uma análise com um volume ainda maior de dados, poderia ter sido feita

uma análise temporal para cada ad group, a fim de obter mais informações de como o

ajuste de lance variou com o tempo. Porém, não foi feita por conta de ajustes de lances

possivelmente errados; muitos ajustes permaneciam fixos por toda a duração do ad

group. Logo, percebe-se que não necessariamente os lances disponibilizados são os

melhores lances para cada ocasião, pois é necessário levar em conta erros humanos.

Os dados disponibilizados pelo Google são poucos e básicos, não fornecendo

muita informação sobre um ad group. Uma alternativa para contornar essa escassez de

features, seria o enriquecimento de dados através do uso de outras fontes que, por

exemplo, disponibilizassem os valores de conversão, não só a quantidade de

conversões.

Não foi possível ter uma diferenciação clara entre os anúncios a ponto de

formarem clusters bem definidos. Logo, a clusterização que foi feita para melhor dividir

os dados para a classificação acabou não tendo muita serventia. Por outro lado, fazer a

classificação sem subdividir os ad groups em demasia pode ter evitado um overfitting.

De acordo com a comparação ao modelo básico, três segmentações tiveram

resultados satisfatórios, alcançando um RMSE menor do que o comparado. Foi notado

que alguns modelos apresentaram melhora significativa no RMSE de acordo com a

mudança de parâmetros, logo, pode ainda haver espaço para melhora em um ajuste

ainda mais fino dos parâmetros.

Para dar continuidade ao projeto e torná-lo aplicável em escala comercial, é

preciso transformá-lo em produto. Para isso, seria necessário encapsular o modelo numa

aplicação com comunicação com API do Google Ads, “conteinerizar” a aplicação

Page 44: CLUSTERIZAÇÃO DE ANÚNCIOS E MODELO DE CLASSIFICAÇÃO …monografias.poli.ufrj.br/monografias/monopoli10031868.pdf · iii Declaração de Autoria e de Direitos Eu, Rodrigo Gonçalves

32

através do Docker e hospedar o container Docker em algum serviço de cloud. No caso

de uma pivotagem mais agressiva da ideia, também é possível criar um modelo que faça

previsões e aprenda em tempo real, gastando dinheiro da conta durante esse processo.

Page 45: CLUSTERIZAÇÃO DE ANÚNCIOS E MODELO DE CLASSIFICAÇÃO …monografias.poli.ufrj.br/monografias/monopoli10031868.pdf · iii Declaração de Autoria e de Direitos Eu, Rodrigo Gonçalves

33

Bibliografia

[1] ALKHATEEB, F., CLAUSEN, K., KHANFAR, N. et al., 2008, “Digital marketing:

Legal and regulatory risk associated with Web 2.0 adoption by the pharmaceutical

companies”, Journal of Medical Marketing, v. 8, n. 4, pp. 311-318. Doi:

10.1057/jmm.2008.20

[2] About the Google Search Network, About the Google Display Network, About

Shopping campaigns and Shopping ads, About video campaigns, About App campaigns

. Google Ads Help. Disponível em: <support.google.com>. Acesso em: 09/11/2019.

[3] S. MARSLAND, S. Machine Learning – An Algorithmic Perspective. Segunda

edição. CRC Press, 2015.

[4] MÜLLER, A. C. e GUIDO, S. Introduction to Machine Learning with Python.

O’Reilly Media, 2017.

[5] GÉRON, A. Hands-On Machine Learning with Scikit-Learn and TensorFlow.

O’Reilly Media, 2017.

[6] CHEN, Tianqi; GUESTRIN, Carlos. “XGBoost: A Scalable Tree Boosting System”.

14 folhas. 2016.University of Washington. Doi: 10.1145/2939672.2939785.

[7] MORDE, Vishal. XGBoost Algorithm: Long May She Reign! Towards Data

Science, 2019. Disponível em: <https://towardsdatascience.com/https-medium-com-

vishalmorde-xgboost-algorithm-long-she-may-rein-edd9f99be63d>. Acesso em:

19/01/2020.

[8] Inbound Marketing Sales Funnel. The Foundation of your Modern Marketing Sales

Strategies. Disponível em: <https://www.impulsecreative.com/inbound-marketing-

sales-funnel>. Acesso em 07/03/2020.

Page 46: CLUSTERIZAÇÃO DE ANÚNCIOS E MODELO DE CLASSIFICAÇÃO …monografias.poli.ufrj.br/monografias/monopoli10031868.pdf · iii Declaração de Autoria e de Direitos Eu, Rodrigo Gonçalves

34

[9] Imp (abs top) % Column. Search Ads 360 Help. Disponível em

<https://support.google.com/searchads/answer/9329947?hl=en>. Acesso em

07/03/2020.

[10] About top and absolute top metrics. Google Ads Help. Disponível em

<https://support.google.com/google-ads/answer/7501826?hl=en>. Acesso em

07/03/2020.

[11] XGBoost Documentation. XGBoost. Disponível em

<https://xgboost.readthedocs.io/en/latest/index.html. Acesso em 30/05/2020.

[12] JAMES, Gareth; WITTEN, Daniela; HASTIE, Trevor; TIBSHIRANI, Robert. An

Introduction to Statistical Learning with Applications in R. Springer, 2013.

[13] XGBoost Parameters. XGBoost. Disponível em

<https://xgboost.readthedocs.io/en/latest/parameter.html>. Acesso em 20/06/2020

[14] MALKIN, Cory. K-means Clustering Python Example. Disponível em

<https://towardsdatascience.com/machine-learning-algorithms-part-9-k-means-

example-in-python-f2ad05ed5203>. Acesso em 16/08/2020.

[15] US Net Digital Ad Revenue Share, by Company, 2019 (% of total digital ad

spending). eMarketer, Feb 2019. Disponível em

<https://www.emarketer.com/chart/227063/us-net-digital-ad-revenue-share-by-

company-2019-of-total-digital-ad-spending>. Acesso em 16/08/2020,

Page 47: CLUSTERIZAÇÃO DE ANÚNCIOS E MODELO DE CLASSIFICAÇÃO …monografias.poli.ufrj.br/monografias/monopoli10031868.pdf · iii Declaração de Autoria e de Direitos Eu, Rodrigo Gonçalves

35

Apêndice

1.Tabelas simplificadas da evolução do RMSE por segmentação

1. train-rmse-mean train-rmse-std test-rmse-mean test-rmse-std 2. 0 0.533365 0.001076 0.533954 0.002650 3. 1 0.435233 0.001136 0.436938 0.003977 4. 2 0.376533 0.001404 0.379931 0.003401 5. 3 0.333202 0.004281 0.339677 0.005342 6. 4 0.306626 0.004035 0.313741 0.002025 7. 5 0.289697 0.002363 0.297125 0.002831 8. 6 0.280286 0.002836 0.288506 0.002233 9. 7 0.274038 0.003031 0.283451 0.002398 10. 8 0.270220 0.003003 0.280209 0.003122 11. 9 0.267390 0.003184 0.278175 0.002858 12. 10 0.265621 0.003877 0.277159 0.002451 13. 11 0.263328 0.003414 0.275757 0.001690 14. 12 0.262311 0.003043 0.274802 0.001444 15. 13 0.260820 0.002220 0.273985 0.001771 16. 14 0.260133 0.002185 0.273616 0.001721 17. 15 0.259521 0.002459 0.273222 0.001736 18. 16 0.259190 0.002570 0.273053 0.001660 19. 17 0.258542 0.002185 0.272852 0.001756 20. 18 0.258256 0.002241 0.272744 0.001768 21. 19 0.257833 0.001903 0.272598 0.001969 22. 20 0.257591 0.001915 0.272507 0.002002 23. 21 0.257462 0.001829 0.272390 0.002129 24. 22 0.257129 0.001598 0.272232 0.002217 25. 23 0.257056 0.001550 0.272157 0.002277 26. 24 0.256933 0.001450 0.272086 0.002260 27. 25 0.256872 0.001406 0.272024 0.002249 28. 26 0.256815 0.001369 0.272029 0.002250 29. 27 0.256801 0.001360 0.272019 0.002249

Tabela 3.4 - Evolução do RMSE de acordo com a árvore na segmentação por idade.

1. train-rmse-mean train-rmse-std test-rmse-mean test-rmse-std 2. 0 0.534312 0.003769 0.535234 0.007207 3. 1 0.472503 0.005060 0.474078 0.008928 4. 2 0.427035 0.006247 0.429695 0.011236 5. 3 0.395316 0.007079 0.399023 0.013508 6. 4 0.372786 0.008307 0.377986 0.014976 7. 5 0.356373 0.007949 0.363518 0.017057 8. 6 0.345438 0.008225 0.353055 0.017633 9. 7 0.338232 0.008888 0.346594 0.018673 10. 8 0.333103 0.009071 0.342094 0.019348

Page 48: CLUSTERIZAÇÃO DE ANÚNCIOS E MODELO DE CLASSIFICAÇÃO …monografias.poli.ufrj.br/monografias/monopoli10031868.pdf · iii Declaração de Autoria e de Direitos Eu, Rodrigo Gonçalves

36

11. 9 0.329676 0.009396 0.338790 0.019594 12. 10 0.325435 0.007038 0.336134 0.020617 13. 11 0.323234 0.006445 0.334903 0.021067 14. 12 0.320148 0.004600 0.333846 0.021178 15. 13 0.319161 0.004658 0.333128 0.021243 16. 14 0.317448 0.003460 0.332792 0.021108 17. 15 0.316823 0.003346 0.332351 0.021149 18. 16 0.315954 0.003542 0.331966 0.021251 19. 17 0.315463 0.003622 0.331722 0.021285 20. 18 0.314909 0.003688 0.331453 0.021332 21. 19 0.313624 0.003208 0.330779 0.021330 22. 20 0.312965 0.002482 0.330935 0.021155 23. 21 0.312645 0.002401 0.330725 0.021208 24. 22 0.312255 0.002493 0.330664 0.021224 25. 23 0.311861 0.002481 0.330592 0.021274 26. 24 0.311633 0.002404 0.330507 0.021239 27. 25 0.311257 0.002322 0.330443 0.021104 28. 26 0.310774 0.001858 0.330727 0.020812 29. 27 0.310351 0.001710 0.330613 0.020911 30. 28 0.310308 0.001661 0.330617 0.020910 31. 29 0.310011 0.001659 0.330305 0.020871 32. 30 0.309772 0.001821 0.330145 0.020771 33. 31 0.309652 0.001653 0.330201 0.020694 34. 32 0.309529 0.001610 0.330150 0.020786 35. 33 0.309125 0.001889 0.329890 0.020682 36. 34 0.309125 0.001889 0.329890 0.020682 37. 35 0.309125 0.001889 0.329890 0.020682 38. 36 0.309125 0.001889 0.329890 0.020682 39. 37 0.309120 0.001892 0.329891 0.020683 40. 38 0.309116 0.001894 0.329892 0.020684 41. 39 0.309116 0.001894 0.329892 0.020684 42. 40 0.309116 0.001894 0.329892 0.020684 43. 41 0.309064 0.001924 0.329853 0.020646

Tabela 3.5 - Evolução do RMSE de acordo com a árvore na segmentação por gênero.

1. train-rmse-mean train-rmse-std test-rmse-mean test-rmse-std 2. 0 0.487450 0.002962 0.488435 0.007595 3. 1 0.370773 0.003904 0.372199 0.007553 4. 2 0.288100 0.007409 0.289651 0.008652 5. 3 0.228606 0.005238 0.230528 0.008600 6. 4 0.189857 0.004245 0.193206 0.008971 7. 5 0.163339 0.003574 0.167274 0.008121 8. 6 0.146216 0.003304 0.150996 0.008540 9. 7 0.134633 0.004506 0.140543 0.009750 10. 8 0.128083 0.004749 0.134508 0.009993 11. 9 0.123741 0.004464 0.130584 0.011126 12. 10 0.120413 0.004260 0.127487 0.011766 13. 11 0.117577 0.005331 0.125287 0.011386

Page 49: CLUSTERIZAÇÃO DE ANÚNCIOS E MODELO DE CLASSIFICAÇÃO …monografias.poli.ufrj.br/monografias/monopoli10031868.pdf · iii Declaração de Autoria e de Direitos Eu, Rodrigo Gonçalves

37

14. 12 0.116170 0.004915 0.124023 0.011883 15. 13 0.114748 0.005593 0.122942 0.011704 16. 14 0.113939 0.005954 0.122439 0.011667 17. 15 0.113326 0.005564 0.121753 0.012087 18. 16 0.112624 0.005765 0.121264 0.012128 19. 17 0.112624 0.005765 0.121264 0.012128 20. 18 0.112228 0.005890 0.121019 0.012213 21. 19 0.112116 0.005752 0.120904 0.012361 22. 20 0.111876 0.005889 0.120790 0.012398 23. 21 0.111876 0.005889 0.120790 0.012398 24. 22 0.111843 0.005849 0.120755 0.012444 25. 23 0.111722 0.006000 0.120713 0.012396 26. 24 0.111675 0.005943 0.120664 0.012460

Tabela 3.6 - Evolução do RMSE de acordo com a árvore na segmentação por renda.

1. train-rmse-mean train-rmse-std test-rmse-mean test-rmse-std 2. 0 0.380690 0.003976 0.381001 0.007888 3. 1 0.309092 0.004626 0.309578 0.009934 4. 2 0.263405 0.004416 0.264925 0.012636 5. 3 0.236809 0.004893 0.238473 0.013971 6. 4 0.218695 0.007857 0.220849 0.013089 7. 5 0.208011 0.006956 0.210286 0.014873 8. 6 0.200318 0.007395 0.203173 0.015383 9. 7 0.196135 0.007143 0.199262 0.016101 10. 8 0.192313 0.007749 0.195760 0.015539 11. 9 0.189916 0.007288 0.193179 0.015897 12. 10 0.188839 0.007176 0.192301 0.016049 13. 11 0.187861 0.007050 0.191339 0.016040 14. 12 0.186571 0.007090 0.190325 0.016092 15. 13 0.185833 0.007348 0.189890 0.015903 16. 14 0.185343 0.007146 0.189551 0.016117 17. 15 0.184763 0.007031 0.189162 0.016110 18. 16 0.184276 0.007057 0.188669 0.016051 19. 17 0.183758 0.007153 0.188376 0.015991 20. 18 0.183366 0.007170 0.188013 0.015974 21. 19 0.183025 0.007176 0.187791 0.015948 22. 20 0.182732 0.007388 0.187640 0.015855 23. 21 0.182538 0.007338 0.187533 0.015909 24. 22 0.182083 0.007466 0.187324 0.015816 25. 23 0.181897 0.007345 0.187246 0.015855 26. 24 0.181797 0.007279 0.187176 0.015886 27. 25 0.181709 0.007251 0.187107 0.015902 28. 26 0.181464 0.007339 0.186944 0.015880 29. 27 0.181396 0.007270 0.186916 0.015904 30. 28 0.181327 0.007353 0.186896 0.015885 31. 29 0.181327 0.007353 0.186896 0.015885 32. 30 0.181327 0.007353 0.186896 0.015885 33. 31 0.181243 0.007346 0.186851 0.015882

Page 50: CLUSTERIZAÇÃO DE ANÚNCIOS E MODELO DE CLASSIFICAÇÃO …monografias.poli.ufrj.br/monografias/monopoli10031868.pdf · iii Declaração de Autoria e de Direitos Eu, Rodrigo Gonçalves

38

Tabela 3.7 - Evolução do RMSE de acordo com a árvore na segmentação por aparelho.

2. Clusterização

1. import matplotlib.pyplot as plt 2. import pandas as pd 3. from sklearn.cluster import KMeans 4. from sklearn.decomposition import PCA 5. import seaborn as sns; sns.set() 6. 7. # Importing the dataset 8. dataset = pd.read_excel('Ad group - standard.xlsx') 9. features = list(dataset.columns)[3:12] 10. data = dataset[features] 11. 12. # Getting the number of clusters 13. wcss = [] 14. for index in range(1, 11): 15. kmeans = KMeans(n_clusters = index, 16. init = 'k-means++', 17. max_iter = 300, 18. n_init = 10) 19. kmeans.fit(data) 20. wcss.append(kmeans.inertia_) 21. plt.plot(range(1, 11), wcss) 22. plt.title('The Elbow Method') 23. plt.xlabel('Number of clusters') 24. plt.ylabel('WCSS') 25. plt.show() 26. 27. # Fitting K-Means to the dataset 28. kmeans = KMeans(n_clusters = 3, init = 'k-

means++', max_iter = 300, n_init = 10) 29. data['Clusters'] = kmeans.fit_predict(data) 30. 31. # Run PCA on the data and reduce the dimensions in pca_num_components dimensio

ns 32. reduced_data = PCA(n_components=2).fit_transform(data) 33. results = pd.DataFrame(reduced_data,columns=['pca1','pca2']) 34. 35. # Visualising the clusters 36. sns.scatterplot(x="pca1", y="pca2", hue=data['Clusters'], data=results) 37. plt.title('K-means Clustering with 3 clusters') 38. plt.show()

Page 51: CLUSTERIZAÇÃO DE ANÚNCIOS E MODELO DE CLASSIFICAÇÃO …monografias.poli.ufrj.br/monografias/monopoli10031868.pdf · iii Declaração de Autoria e de Direitos Eu, Rodrigo Gonçalves

39

3. Modelo básico

1. import pandas as pd 2. from sklearn.dummy import DummyRegressor 3. from sklearn.model_selection import train_test_split 4. from sklearn.metrics import mean_squared_error 5. from math import sqrt 6. 7. dataset = pd.read_excel('Device report.xlsx') 8. features = list(dataset.columns)[2:12] 9. data = dataset[features] 10. 11. X, y = data.iloc[:,:-1], data.iloc[:,-1] 12. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) 13. 14. # Create a dummy regressor 15. dummy = DummyRegressor(strategy='median') #median or mean 16. 17. # "Train" dummy regressor 18. dummy.fit(X_train, y_train) 19. y_pred = dummy.predict(X_test) 20. 21. # Get RMSE 22. rmse = sqrt(mean_squared_error(y_pred, y_test)) 23. 24. print(rmse)

4. Classificação

Page 52: CLUSTERIZAÇÃO DE ANÚNCIOS E MODELO DE CLASSIFICAÇÃO …monografias.poli.ufrj.br/monografias/monopoli10031868.pdf · iii Declaração de Autoria e de Direitos Eu, Rodrigo Gonçalves

40

1. import pandas as pd 2. from sklearn.compose import ColumnTransformer 3. from sklearn.preprocessing import OneHotEncoder 4. from sklearn.model_selection import train_test_split 5. import xgboost as xgb 6. import matplotlib.pyplot as plt 7. 8. # Importing the dataset 9. dataset = pd.read_excel('Household income report.xlsx') 10. features = list(dataset.columns)[2:11] 11. data = dataset[features] 12. 13. # Aplying one hot encoder to segment 14. ct = ColumnTransformer(transformers=[('encoder', OneHotEncoder(), [0])], 15. remainder='passthrough') 16. data = ct.fit_transform(data) 17. 18. # Splitting into training set and test set 19. X, y = data[:,:-1], data[:,-1] 20. data_dmatrix = xgb.DMatrix(data=X, label=y) 21. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) 22. 23. # Fitting XGBoost to training set and predict 24. module = xgb.XGBClassifier(objective ='reg:squarederror', 25. colsample_bytree = 0.5, 26. learning_rate = 0.3, max_depth = 15, 27. alpha = 10, n_estimators = 60) 28. module.fit(X_train, y_train) 29. print(module.get_num_boosting_rounds()) 30. y_pred = module.predict(X_test) 31. 32. # K-fold 33. params = {"objective":"reg:squarederror", 34. 'colsample_bytree': 0.5,'learning_rate': 0.3, 35. 'max_depth': 15, 'alpha': 10} 36. 37. cv_results = xgb.cv(dtrain=data_dmatrix, params=params, nfold=3, 38. num_boost_round=60, early_stopping_rounds=10, 39. metrics="rmse", as_pandas=True) 40. cv_results.head() 41. print((cv_results)) 42. 43. # Visualizing tree 44. xgb.plot_tree(booster = module, num_trees = 0) 45. fig = plt.gcf() 46. fig.set_size_inches(150, 100) 47. plt.savefig("tree.png") 48. 49. # Visualizing feature importance 50. plt.rcParams['figure.figsize'] = [14, 7] 51. xgb.plot_importance(module) 52. plt.savefig("fi.png") 53. 54. # Scatter graph 55. epochs = len(y_pred) 56. x_axis = range(0, epochs) 57. fig, ax = plt.subplots() 58. ax.scatter(x_axis, y_test, label='Test') 59. ax.scatter(x_axis, y_pred, label='Pred') 60. ax.legend() 61. plt.ylabel('Bid Adjustment') 62. plt.xlabel('Ad group') 63. plt.title('Bid Adjustment per Ad group') 64. plt.savefig("scatter.png")