Aplicando uma camada de Ciência ao Marketing Digital


Aplicando uma camada de Ciência ao Marketing Digital

Uma nova área?

14344288_332419177100026_8522560281869819945_n.jpg

A Ciência de Dados vem conquistando espaço em várias áreas de negócios, como uma evolução natural ao Business Intelligence. Ela encontra no Marketing Digital um ambiente perfeito e repleto de dados a serem analisados, uma vez que a promessa do Marketing Digital é a mensuração de todas as ações realizadas pelo usuário antes, durante e após a realização de uma ação desejada pela estratégia da campanha.
Para uma visão mais ampla dessa sinergia, confira aqui as aplicações da Ciência de Dados no ambiente Digital.

Objetivo

target.jpg


Esse post tem o objetivo de oferecer uma explanação mais prática e técnica dessa ciência.

E por que a análise de dados se tornou uma ciência?

Essa nova "classificação" se deve ao fato da análise de dados poder ser repetida através de uma metodologia. Indo além do Business Inteligence, que procura entender o que aconteceu, a Ciência de Dados procura responder o que pode acontecer a partir dos dados. Essa investigação é realizada em seis passos iterativos (ensinados por Daniel Mendes, instrututor principal da Data Science Academy).

Metodologia Científica

  1. Compreender o Problema a ser Resolvido;
  2. Coletar os Dados;
  3. Limpar, Compreender e Preparar os Dados;
  4. Selecionar e Transformar as Variáveis;
  5. Construir, Testar, Avaliar e Otimizar o Modelo Preditivo;
  6. Contar a História dos Dados.

passos.jpg

 

Fonte da figura: Livro Dados Demais! Thomas Davenpoort

Problema de Negócio

Uma questão recorrente levantada por clientes de agências digitais que investem em mídia paga é: "Se eu invisto x valor em campanhas pagas e gero y em vendas, se eu aumentar em x+n o investimento, quanto a mais em vendas poderei obter?". Ou uma variação desta problemática seria levantada da seguinte forma: "Se eu quero atingir a meta de x em vendas, quanto em y eu preciso investir em mídia paga?".

Coleta de Dados

giphy.gif

 

Com o problema de negócio definido o Cientista de Dados começa a procura de dados e ferramentas que possam responder ao problema levantado. A ferramenta mais comum e mais utilizada por profissionais de Marketing Digital é o Google Analytics, uma aplicação web disponibilizada gratuitamente pelo Google que permite a mensuração de todas as interações que acontecem em um web site, geralmente o local onde os objetivos de uma estratégia digital acontecem. 

Ferramentas do Cientista de Dados

10616002_358177804524163_6220188765224981708_n.jpg

Ok, temos a ferramenta mais usada pelo Marketing Digital, e quais são as ferramentas do Cientista de Dados?

Embora a discussão sobre qual a melhor ferramenta seja ampla, geralmente os Cientistas de Dados usam as Linguagens de programação R ou Python para investigar e resolver os problemas de negócios com os dados. A Linguagem R, apresenta um pacote excelente para a solução do nosso problema, o RGoogleAnalytics.

Fantástico, não é mesmo?

giphy.gif

A união do Google Analytics do Marketing Digital com a Linguagem R do Cientista de Dados! Mas os usuários do Google Analytics devem estar se perguntando: "se eu já tenho todas as informações que preciso numa plataforma de fácil uso, por que eu deveria aprender uma linguagem de programação para realizar as análises das campanhas de Marketing Digital?"

Dados

dado_em_casa.png

Como Cientista de Dados da Orgânica Digital, eu posso afirmar que a análise de dados do Google Analytics com o uso da linguagem R, é muito mais profunda. Através da API do Google podemos correlacionar até 7 dimensões e 10 métricas numa única consulta, tarefa bem difícil de ser executada na interface do Google Analytics, e as vantagens vão além das já citadas, sendo possível criar no ambiente R o modelo preditivo e, ainda, carregar com a Linguagem R dados internos de um sistema gerencial do cliente e cruzar com os dados do website!

Na sequência encontra-se o passo a passo de como carregar os dados da API do Google Analytics para o R, realizar algumas análises e gerar o modelo preditivo. Confira!

Transformando os Dados

Instale o R em seu computador a partir deste link e também instale o RStudio. Se você nunca programou em R, estes vídeos podem te ajudar com uma introdução ou faça um curso completo. Após a instalação você vai precisar das chaves de acesso da API do Google Analytics. Com uma conta Google, de preferência a mesma que você acessa o Google Analytics, acesse este site e crie um novo projeto.

Preencha as informações iniciais e clique em criar:

Novo Projto

Escolha a Analytics API:

Depois clique em ativar:

Clique em criar credenciais:

Escolha a penúltima opção (Outra UI(por exemplo, Windows, ferramenta CLI):

Marque a opção Dados do usuário e clique em "Preciso de quais credenciais?":

Dê um nome e clique em criar ID do cliente:

Confirme o email (você deverá estar logado no chrome com este email quando for rodar o script em R):

Configure a tela

Agora você já tem o Client ID, copie e cole este ID direto no script ou então em um bloco de notas, clique em concluído.

Faça o download

Clique em criar credenciais e escolha Chave de API, será gerada uma chave automaticamente, salve direto no script ou no bloco de notas.

Chave de API

 

Agora estamos prontos para começar no R!. 

giphy.gif

Você pode baixar o script usado neste post no meu perfil do Github. Instale o pacote com o comando:

# Instalando o Pacote
needs(RGoogleAnalytics)



# Autorizar a conta do Google Analytics
# Isso não precisa ser executado em cada sessão uma vez que o objeto token criado
# é salvo



# Substitua as chaves pelas que você gerou no projeto da API
#https://console.developers.google.com
client.id <-"xxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com"
client.secret <-"xxxxxxxxxxxxxxxxxxxxxxxx"
token <- Auth(client.id,client.secret)



# Salvar o objeto token para sessões futuras
save(token,file="./token_file")



# Em sessões futuras, ele pode ser carregado
load("./token_file")



ValidateToken(token)

Modelo Preditivo

Agora é hora de escolher as variáveis que irão resolver o problema de negócio que estamos resolvendo. Neste link você encontra todas as dimensões e métricas disponíveis na API do Google Analytics. Selecionar as melhores variáveis requer conhecimento de negócios, prática, testes, intuição e paciência, ou seja é uma verdadeira Arte! Mas se realizada com disciplina e persistência eleva-se a Ciência de Dados.
Aqui eu escolhi as dimensões e métricas mais comumente analisadas em um e-commerce.

# Criar uma lista de consulta com os parâmetros da API
query.list <- Init(start.date = "2017-01-01",
                  end.date = "2016-01-31",
                  dimensions = "ga:date, ga:dayOfWeek, ga:source, ga:medium, ga:campaign, ga:deviceCategory",
                  metrics = "
                  ga:sessions,
                  ga:users,
                  ga:organicSearches,
                  ga:impressions,
                  ga:adClicks,
                  ga:CPC,
                  ga:adCost,
                  ga:transactions,
                  ga:costPerTransaction,
                  ga:totalValue",
                  max.results = 10000,
                  sort = "ga:date",
                  table.id = "ga:xxxxxxxx")
                 






# Crie o objeto Query Builder para que os parâmetros de consulta sejam validados
ga.query <- QueryBuilder(query.list)



# Extrair os dados e armazená-los em um data-frame
ga.data <- GetReportData(ga.query, token, paginate_query = F)
head(ga.data)



#Gravar os dados em outra variável é uma boa prática, pois em caso de neccessidade,
#os dados originais continuam armazenados e disponíveis.
analytics <- data.frame(ga.data)
head(analytics)



#explorando a estrutura dos dados
str(analytics)



#os dados virão brutos e em formatos que não permitem as análises, portanto é preciso transformá-los!



#transformando a primeira coluna em Data
class(analytics$date)
#pode ser necessário instalar o pacote antes de utilizá-lo
needs(lubridate)
analytics$date <- ymd(analytics$date)
class(analytics$date)
str(analytics)
any(is.na(analytics))



# Criar um fator ordenado para o dia da semana
analytics$dayOfWeek <- as.numeric(analytics$dayOfWeek)
analytics$dayOfWeek <- factor(analytics$dayOfWeek, labels = c("Domingo","Segunda","Terça","Quarta","Quinta","Sexta","Sábado"))



#arredondar as colunas que representam valor monetário
analytics$CPC <- round(analytics$CPC,2)
analytics$adCost <- round(analytics$adCost,2)
analytics$costPerTransaction <- round(analytics$costPerTransaction,2)
analytics$totalValue <- round(analytics$totalValue,2)
str(analytics)



# Aqui começa a construção do Modelo Predittivo
# Análise exploratória dos dados



# Pequenas Análises
dispositivo <- table(analytics$deviceCategory)
(dispositivo <- round((prop.table(dispositivo) * 100)))
dia <-  table(analytics$dayOfWeek)
(dia <- round(prop.table(dia) * 100))



# Construção de alguns gráficos para análises visuais
# Transações x potenciais variaveis
# Pode ser necessário instalar o pacote
needs(ggplot2)
labels <- list("Boxplots - Transações por Origem",
              "Boxplots - Transações por Mídia",
              "Boxplots - Transações por Dia Dispositivo",
              "Boxplots - Transações por Dia da Semana")



xAxis <- list("source", "medium", "deviceCategory", "dayOfWeek")



# Gráficos
plot.scatter <- function(X, label){
 ggplot(analytics, aes_string(x = X, y = "totalValue")) +
   geom_point(aes_string(colour = "totalValue"), alpha = 0.1) +
   scale_colour_gradient(low = "green", high = "blue") +
   geom_smooth(method = "loess") +
   ggtitle(label) +
   theme(text = element_text(size = 20)) }



Map(plot.scatter, xAxis, labels)



# Obtendo apenas as colunas numéricas
# Pode ser necessário instalar o pacote
needs(dplyr)
analytics_numericas <- sapply(analytics,is.numeric)
analytics <- analytics[, analytics_numericas]



#Análise de Correlação



par(mfrow=c(1,1))
data_cor <- cor(analytics)
data_cor
# Pode ser necessário instalar o pacote
needs(corrplot)
# Pode ser necessário instalar o pacote
needs(corrgram)
corrplot(data_cor, method = 'circle')
# Alternativas de gráficos
#corrgram(analytics)
#corrgram(analytics, order = T, lower.panel = panel.shade,
#         upper.panel = panel.pie, text.panel = panel.txt)
#pairs(data_cor, panel = panel.smooth)



# Alternativa de Regressão Simples



# Selecionando as váriaveis
a <- analytics$impressions
b <- analytics$totalValue
c <- data.frame(a,b)



# Dividindo os dados para o modelo
# Pode ser necessário instalar o pacote
needs(caTools)
set.seed(100)
amostra <- sample.split(c$a, SplitRatio = 0.70)
treino = subset(c, amostra = T)
teste = subset(c, amostra = F)






# Construindo o modelo de regressão
modelo <- lm(b ~ a, treino)
summary(modelo)
#plot(modelo)



# Plotando o gráfico de dispersão com a reta de regressão
k <- coefficients(modelo)
plot(a,b)
abline(k)



#fazendo as predições
#modelo <- lm(b ~ a, treino)
prevendo_totalValue <- predict(modelo,teste)
sum(prevendo_totalValue)



# Alterando o Valor para responder a pergunta do problema formulado
venda_previsto <- data.frame(x=20000)
previsao_1 <- predict(modelo, venda_previsto)
sum(previsao_1)



# Este Modelo está sofrendo de overfiting e precisa ser ajustado

 

 

O modelo criado aprendeu demais com os dados e portanto está sendo tendencioso ao invés de responder nossa pergunta de negócio, o algoritmo “decorou” o resultado e mesmo que o valor de investimento seja alterado, ele irá prever sempre o mesmo valor.

Por essa razão que os Cientistas de Dados são muito bem remunerados, com este resultado do modelo, retorna-se aquelas etapas do método e repete-se com outro algoritmo de Machine Learning, até chegar a um modelo preditivo satisfatório. Mas isso é assunto para um próximo post. 

Muito obrigado e até o próximo!




Por
02/03/2017

Data Scientist na Orgânica Digital.


Assine nosso blog

Não perca nenhuma novidade!

Assine nosso blog

Não perca nenhuma novidade!