Uma nova área?
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
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
- Compreender o Problema a ser Resolvido;
- Coletar os Dados;
- Limpar, Compreender e Preparar os Dados;
- Selecionar e Transformar as Variáveis;
- Construir, Testar, Avaliar e Otimizar o Modelo Preditivo;
- Contar a História dos Dados.
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
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
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?
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
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:
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):
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.
Clique em criar credenciais e escolha Chave de API, será gerada uma chave automaticamente, salve direto no script ou no bloco de notas.
Agora estamos prontos para começar no R!.
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!