Autor: Patrick Riley
Agradecimentos especiais a: Diane Tang, Rehan Khan, Elizabeth Tucker, Amir Najmi, Hilary Hutchinson, Joel Darnauer, Dale Neal, Aner Ben-Artzi, Sanders Kleinfeld, David Westbrook e Barry Rosenberg.
Histórico
- Última grande atualização: junho de 2019
- Uma versão anterior de parte deste material apareceu no blog não oficial do Google Data Science (em inglês): outubro de 2016
Visão geral
Extrair verdade e insights de uma pilha de dados é um trabalho poderoso, mas propenso a erros. Os melhores analistas e engenheiros com foco em dados têm uma reputação por fazer declarações confiáveis usando dados. Mas o que eles estão fazendo para que tenham credibilidade? Muitas vezes ouço adjetivos como cuidado e metodico, mas o que os analistas mais cuidadosos e metódicos realmente fazem?
Essa não é uma pergunta trivial, especialmente considerando o tipo de dados que coletamos regularmente no Google. Normalmente, não só trabalhamos com conjuntos de dados muito grandes, como também extremamente ricos. Ou seja, cada linha de dados normalmente tem muitos atributos. Quando você combina isso com as sequências temporais de eventos de um determinado usuário, há um número enorme de maneiras de analisar os dados. Compare isso com um experimento típico de psicologia acadêmica, em que é trivial que o pesquisador analise cada ponto de dados. Os problemas apresentados pelos nossos grandes conjuntos de dados de alta dimensão são muito diferentes daqueles encontrados na maior parte da história do trabalho científico.
Este documento resume as ideias e técnicas que analistas cuidadosos e metódicos usam em conjuntos de dados grandes e de alta dimensão. Embora este documento se concentre em dados de registros e análises experimentais, muitas dessas técnicas são mais amplamente aplicáveis.
O restante do documento é composto por três seções que abrangem diferentes aspectos da análise de dados:
- Técnico: ideias e técnicas sobre como manipular e examinar seus dados.
- Processo: recomendações sobre como abordar seus dados, quais perguntas fazer e o que verificar.
- Mental: como trabalhar com outras pessoas e comunicar insights.
Técnica
Vamos conferir algumas técnicas para examinar seus dados.
Analisar suas distribuições
A maioria dos profissionais usa métricas resumidas (por exemplo, média, mediana, desvio padrão e assim por diante) para se comunicar sobre distribuições. No entanto, geralmente é necessário examinar representações de distribuição muito mais ricas gerando histogramas, funções de distribuição cumulativa (CDFs), gráficos quantil-quantil (Q-Q) e assim por diante. Essas representações mais ricas permitem detectar atributos importantes dos dados, como comportamento multimodal ou uma classe significativa de outliers.
Considerar os pontos fora da curva
Examine os outliers com cuidado, porque eles podem ser canários na mina de carvão que indicam problemas mais fundamentais com sua análise. Não há problema em excluir outliers dos dados ou agrupá-los em uma categoria "incomum", mas você precisa saber por que os dados foram incluídos nessa categoria.
Por exemplo, analisar as consultas com o menor número de cliques pode revelar cliques em elementos que você não está contando. Analisar as consultas com o maior número de cliques pode revelar cliques que não deveriam estar sendo contabilizados. Por outro lado, pode haver alguns outliers que você nunca será capaz de explicar, então tenha cuidado com quanto tempo você se dedica à tarefa.
Considere o ruído
A aleatoriedade existe e vai nos enganar. Algumas pessoas pensam: “O Google tem tantos dados; o ruído desaparece”. Isso simplesmente não é verdade. Cada número ou resumo de dados que você produz precisa ter uma noção de confiança nessa estimativa (por meio de medidas como intervalos de confiança e p-values).
Confira exemplos
Sempre que você estiver produzindo um novo código de análise, será necessário observar exemplos dos dados subjacentes e como seu código está interpretando esses exemplos. É quase impossível produzir um código funcional de qualquer complexidade sem realizar esta etapa. Sua análise está abstraindo muitos detalhes dos dados subjacentes para produzir resumos úteis. Ao analisar toda a complexidade dos exemplos individuais, você pode ter confiança de que o resumo é razoável.
A forma de criar amostras desses exemplos é importante:
- Se você estiver classificando os dados subjacentes, observe os exemplos pertencentes a cada classe.
- Se for uma classe maior, confira mais exemplos.
- Se você estiver calculando um número (por exemplo, o tempo de carregamento da página), analise os exemplos extremos (talvez os 5% mais rápidos e lentos). Você sabe como é sua distribuição, certo?), além de pontos em todo o espaço das medições.
Dividir seus dados
Dividir significa separar os dados em subgrupos e analisar valores de métricas para cada subgrupo separadamente. Geralmente, dividimos dimensões, como navegador, localidade, domínio, tipo de dispositivo e assim por diante. Se o fenômeno subjacente funcionar de maneira diferente entre subgrupos, será necessário dividir os dados para confirmar se esse é o caso. Mesmo que você não espere que o fracionamento produza resultados diferentes, analisar algumas frações para verificar a consistência interna oferece maior confiança de que você está medindo a coisa certa. Em alguns casos, uma fração específica pode ter dados inválidos, uma interação do usuário corrompida ou, de alguma forma, ser fundamentalmente diferente.
Sempre que você dividir os dados para comparar dois grupos (como experimento x controle, ou mesmo “tempo A” vs. “horário B”), você precisará estar ciente das mudanças no mix. Uma mudança na composição ocorre quando a quantidade de dados nas frações de cada grupo é diferente. Paradoxo de Simpson e outras confusões podem ocorrer. Geralmente, se a quantidade relativa de dados em uma fração é a mesma nos dois grupos, é possível fazer uma comparação com segurança.
Considere a significância prática
Com um grande volume de dados, pode ser tentador se concentrar apenas na significância estatística ou nos detalhes de cada fragmento dos dados. Mas você precisa se perguntar: "Mesmo que seja verdade que o valor X é 0,1% maior do que o valor Y, isso importa?". Isso pode ser especialmente importante se você não consegue entender/categorizar parte dos seus dados. Se você não consegue entender algumas strings do user agent nos registros, se elas representam 0,1% ou 10% dos dados, isso faz uma grande diferença na investigação desses casos.
Como alternativa, às vezes você pode ter um volume pequeno de dados. Muitas alterações não parecerão estatisticamente significativas, mas isso é diferente de afirmar que essas alterações são "neutras". Você precisa se perguntar: "Qual é a probabilidade de que ainda haja uma alteração praticamente significativa?"
Verifique a consistência ao longo do tempo
Quase sempre é melhor tentar fracionar dados por unidades de tempo, porque muitas perturbações nos dados subjacentes acontecem à medida que nossos sistemas evoluem ao longo do tempo. Muitas vezes usamos dias, mas outras unidades de tempo também podem ser úteis. Durante o lançamento inicial de um recurso ou uma nova coleta de dados, os profissionais geralmente verificam cuidadosamente se tudo está funcionando conforme o esperado. No entanto, muitas falhas ou comportamentos inesperados podem surgir com o tempo.
Só porque um determinado dia ou conjunto de dias é um ponto fora da curva, não significa que você deve descartar os dados correspondentes. Use os dados como um gancho para determinar um motivo causal pelo qual esse dia ou dia é diferente antes de descartá-lo.
Analisar dados diários também oferece uma noção da variação nos dados que levaria a intervalos de confiança ou declarações de significância estatística. Geralmente, isso não substitui o cálculo rigoroso de intervalo de confiança, mas, muitas vezes, com grandes mudanças, é possível notar que elas serão estatisticamente significativas apenas dos gráficos diários.
Confirmar e contar sua filtragem
Quase todas as análises de dados grandes começam com a filtragem de dados em vários estágios. Talvez você queira considerar apenas usuários dos EUA, pesquisas na Web ou pesquisas com anúncios. Seja qual for o caso, você precisa:
- Confirme e especifique claramente os filtros que você está fazendo.
- Conte a quantidade de dados que está sendo filtrada em cada etapa.
Muitas vezes, a melhor maneira de fazer isso é computar todas as métricas, mesmo para a população que você está excluindo. Você pode analisar esses dados para responder a perguntas como: "Que fração de consultas a filtragem de spam removeu?" Dependendo do motivo da filtragem, esse tipo de análise nem sempre é possível.
As proporções precisam ter numerador e denominador claros
As métricas mais interessantes são proporções de medidas subjacentes. Muitas vezes, filtros interessantes ou outras opções de dados estão escondidas nas definições precisas do numerador e do denominador. Por exemplo, o que significa "Consultas / usuário"?
- Consultas / usuários com uma consulta
- Consultas / usuários que visitaram o Google hoje
- Consultas / usuários com uma conta ativa (sim, eu teria que definir active)
Isso pode evitar confusão para você e os outros.
Outro caso especial são as métricas que podem ser calculadas somente em alguns dos seus dados. Por exemplo, "Tempo de clicar" geralmente significa "Tempo de clicar, considerando que houve um clique". Sempre que você observar uma métrica como essa, precisará reconhecer que a filtragem e procurar uma mudança na filtragem entre os grupos que está comparando.
Processo
Esta seção contém recomendações sobre como abordar seus dados, quais perguntas fazer sobre eles e o que verificar.
Validação, descrição e avaliação separadas
Acho que a análise de dados tem três estágios inter-relacionados:
- Validação1: acredito que os dados são autoconsistentes, que foram coletados corretamente e que representam o que acho que fazem?
- Descrição:qual é a interpretação objetiva desses dados? Por exemplo: "Os usuários fazem menos consultas classificadas como X", "No grupo experimental, o tempo entre X e Y é 1% maior" e "Menos usuários vão para a próxima página de resultados".
- Avaliação:considerando a descrição, os dados indicam que algo de bom está acontecendo para o usuário, para o Google ou para o mundo?
Separar esses estágios, fica mais fácil chegar a um acordo com os outros. A descrição precisa ser algo que todos possam concordar com relação aos dados. É provável que a avaliação estimule muito mais debate. Se você não separar "Descrição" e "Avaliação", é muito mais provável que veja apenas a interpretação dos dados que espera ver. Além disso, a avaliação tende a ser muito mais difícil, porque estabelecer o valor regulatório de uma métrica, geralmente por meio de comparações rigorosas com outros recursos e métricas, requer um investimento significativo.
Essas etapas não progridem linearmente. Ao explorar os dados, você pode pular entre os estágios, mas a qualquer momento é preciso deixar claro em que estágio você está.
Confirmar a configuração do experimento e da coleta de dados
Antes de analisar qualquer dado, certifique-se de entender o contexto em que eles foram coletados. Se os dados vierem de um experimento, confira a configuração dele. Se for da instrumentação do novo cliente, certifique-se de ter pelo menos uma compreensão aproximada de como os dados são coletados. Você pode encontrar configurações incomuns/ruins ou restrições de população (como dados válidos somente para o Chrome). Qualquer coisa notável aqui pode ajudar a criar e verificar teorias mais tarde. Alguns itens a serem considerados:
- Se o experimento estiver em andamento, faça um teste. Se não for possível, confira as capturas de tela/descrições de comportamento.
- Verifique se houve algo incomum no período em que o experimento ocorreu (feriados, grandes lançamentos etc.).
- Determine quais populações de usuários foram submetidas ao experimento.
Conferir o que não deve mudar
Como parte da etapa "Validação", antes de responder à pergunta do seu interesse (por exemplo, "Adicionar uma foto de um rosto aumentou ou diminuiu os cliques?"), descarte qualquer outra variabilidade nos dados que possa afetar o experimento. Exemplo:
- O número de usuários mudou?
- O número certo de consultas afetadas apareceu em todos os meus subgrupos?
- As taxas de erro mudaram?
Essas perguntas são relevantes tanto para comparações entre experimento/controle e ao examinar tendências ao longo do tempo.
Padrão primeiro, depois personalizado
Ao analisar novos recursos e dados, é particularmente tentador pular direto para as métricas novas ou especiais desse novo recurso. No entanto, sempre analise as métricas padrão primeiro, mesmo que espere que elas mudem. Por exemplo, ao adicionar um novo bloco universal à página, entenda o impacto nas métricas padrão, como "cliques nos resultados da Web", antes de analisar as métricas personalizadas desse novo resultado.
As métricas padrão são validadas muito melhor e têm mais chances de estarem corretas do que as métricas personalizadas. Se as métricas personalizadas não fazem sentido com as padrão, é provável que elas estejam erradas.
Medir duas vezes ou mais
Especialmente se você estiver tentando capturar um novo fenômeno, tente medir a mesma coisa subjacente de várias maneiras. Em seguida, determine se essas diversas medições são consistentes. Ao usar várias medições, é possível identificar bugs no código de medição ou registro, recursos inesperados dos dados ou etapas de filtragem importantes. É ainda melhor se você puder usar diferentes fontes de dados para as medições.
Verificar a reprodutibilidade
O fracionamento e a consistência ao longo do tempo são exemplos específicos de verificação da reprodutibilidade. Se um fenômeno for importante e significativo, você deverá vê-lo em diferentes populações de usuários e em diferentes horários. Mas verificar a reprodutibilidade significa mais do que realizar essas duas verificações. Se você estiver criando modelos dos dados, esses modelos precisarão ser estáveis em pequenas perturbações nos dados. O uso de diferentes períodos ou subamostras aleatórias dos dados também indica o nível de confiabilidade/reprodutível desse modelo.
Se um modelo não for reproduzível, você provavelmente não está capturando algo fundamental sobre o processo subjacente que produziu os dados.
Verificar a consistência com as medições anteriores
Com frequência, você estará calculando uma métrica semelhante a coisas que foram contadas no passado. Você precisa comparar suas métricas com aquelas relatadas no passado, mesmo que essas medições estejam em diferentes populações de usuários.
Por exemplo, se você estiver analisando o tráfego de consulta de uma população especial e medir que o tempo médio de carregamento da página é de 5 segundos, mas as análises anteriores de todos os usuários deram um tempo médio de carregamento de 2 segundos, você vai precisar investigar. Seu número pode ser adequado para esta população, mas agora você tem que trabalhar mais para validá-lo.
Você não precisa chegar a um acordo, mas deve estar no mesmo nível. Se não está, presuma que está errado até conseguir se convencer totalmente. Os dados mais surpreendentes acabarão sendo um erro, não um novo insight fabuloso.
Primeiro, as novas métricas precisam ser aplicadas aos dados/recursos antigos
Se você criar novas métricas (possivelmente coletando uma nova fonte de dados) e tentar aprender algo novo, não saberá se a nova métrica está certa. Ao usar novas métricas, elas precisam ser aplicadas a um atributo ou dados conhecidos primeiro. Por exemplo, se você tiver uma nova métrica de satisfação do usuário, verifique se ela informa quais os melhores recursos ajudam na satisfação. Se você tiver uma nova métrica para onde os usuários direcionam a atenção à página, verifique se ela corresponde ao que sabemos por meio do rastreamento ocular ou de estudos de classificação sobre como as imagens afetam a atenção da página. Assim, você tem validação para aprender algo novo.
Criar hipóteses e procurar evidências
Normalmente, a análise de dados para um problema complexo é iterativa.2 Você descobrirá anomalias, tendências ou outros recursos dos dados. Naturalmente, você desenvolverá teorias para explicar esses dados. Não desenvolva uma teoria apenas e a declare como verdadeira. Procure evidências (dentro ou fora dos dados) para confirmar/negar essa teoria. Exemplo:
- Se você notar algo que pareça uma tendência de aprendizado, confira se isso se manifesta mais fortemente entre os usuários de alta frequência.
- Se você acredita que uma anomalia é causada pelo lançamento de alguns recursos, confira se a população a que o recurso foi lançado é a única afetada pela anomalia. Como alternativa, verifique se a magnitude da mudança é consistente com as expectativas do lançamento.
- Se as taxas de crescimento de usuários mudarem em uma localidade, tente encontrar uma fonte externa que valide essa taxa.
Uma boa análise de dados terá uma história para contar. Para ter certeza de que é a história certa, você precisa contar a história para si mesmo e, em seguida, procurar evidências de que ela está errada. Uma maneira de fazer isso é se perguntar: "Quais experimentos eu faria para validar/invalidar a história que estou contando?". Mesmo que você não faça ou não possa fazer esses experimentos, eles podem dar ideias sobre como validar com os dados que você tem.
A boa notícia é que essas teorias e possíveis experimentos podem levar a novas linhas de investigação que transcendem a tentativa de aprender sobre qualquer recurso ou dado específico. Depois, você entra no campo da compreensão não apenas desses dados, mas da derivação de novas métricas e técnicas para todos os tipos de análises futuras.
Benefícios da análise exploratória da iteração de ponta a ponta
Ao fazer a análise exploratória, execute o máximo possível de iterações de toda a análise. Normalmente, há várias etapas de coleta, processamento, modelagem etc. de indicadores. Se você gastar muito tempo para aperfeiçoar o primeiro estágio dos seus indicadores iniciais, vai perder oportunidades de fazer mais iterações na mesma quantidade de tempo. Além disso, quando você finalmente olha seus dados no final, você pode fazer descobertas que mudam sua direção. Portanto, seu foco inicial não deve ser a perfeição, mas sim em conseguir algo razoável até o fim. Deixe anotações para si e reconheça coisas como etapas de filtragem e solicitações não analisáveis ou incomuns, mas não perca tempo tentando se livrar de todas elas no início da análise exploratória.
Atenção aos comentários
Normalmente, definimos várias métricas sobre o sucesso do usuário. Por exemplo, os usuários clicaram em um resultado? Se você alimentar esses dados de volta no sistema (o que realmente fazemos em vários lugares), criará muitas oportunidades para confusão na avaliação.
Não é possível usar a métrica que é retornada ao seu sistema como base para avaliar a alteração. Se você exibir mais anúncios e receber mais cliques, não poderá usar "mais cliques" como base para decidir se os usuários estão mais satisfeitos, mesmo que "mais cliques" muitas vezes signifiquem "mais felizes". Além disso, você não deve nem dividir as variáveis que alimentadas e manipuladas, porque isso resulta em mudanças de combinação difíceis ou impossíveis de entender.
Postura
Esta seção descreve como trabalhar com outras pessoas e comunicar insights.
A análise de dados começa com perguntas, não com dados ou uma técnica
Sempre há uma motivação para analisar dados. Formular suas necessidades como perguntas ou hipóteses ajuda a garantir que você esteja coletando os dados que precisa coletar e que está pensando sobre as possíveis lacunas nos dados. É claro que as perguntas devem evoluir à medida que você analisa os dados. No entanto, uma análise sem uma pergunta acabará sem propósito.
Não caia na armadilha de encontrar uma técnica favorita e só encontrar as partes dos problemas em que essa técnica funciona. Novamente, criar perguntas claras ajuda a evitar essa armadilha.
Seja cético e defensor
Ao trabalhar com dados, é preciso ser o defensor dos insights que está ganhando e um cético em relação a eles. Espero que você encontre alguns fenômenos interessantes nos dados que analisar. Ao detectar um fenômeno interessante, faça a si mesmo as seguintes perguntas:
- Que outros dados eu poderia coletar para mostrar o quão incrível isso é?
- O que pode invalidar isso?"
Especialmente nos casos em que você está fazendo análises para alguém que realmente quer uma resposta específica (por exemplo, "Meu recurso é incrível!"), você precisa ser cético para evitar cometer erros.
Correlação != Causalidade
Ao criar teorias sobre dados, geralmente queremos declarar que "X causa Y", por exemplo, "a página ficando mais lenta fez com que os usuários cliquessem menos". Até o xkcd sabe que não é possível simplesmente estabelecer a causalidade devido à correlação. Ao considerar como você valida uma teoria da causalidade, geralmente é possível desenvolver uma boa noção de quão confiável é uma teoria causal.
Às vezes, as pessoas tentam manter uma correlação tão significativa, afirmando que, mesmo que não haja uma relação causal entre A e B, deve haver algo subjacente à coincidência, para que um sinal possa ser um bom indicador ou substituto do outro. Essa área é perigosa para vários problemas de teste de hipóteses. Como o xkcd também sabe, com experimentos e dimensões suficientes, alguns dos sinais vão se alinhar para um experimento específico. Isso não significa que os mesmos indicadores vão se alinhar no futuro. Portanto, você tem a mesma obrigação de considerar uma teoria causal, como "há um efeito oculto C que causa A e B", para que você possa tentar validar se isso é plausível.
Um analista de dados geralmente precisa responder a essas perguntas causais para as pessoas que querem consumir os dados. Você precisa deixar claro para esses consumidores o que pode ou não dizer sobre causalidade.
Compartilhe primeiro com os colegas e depois com os consumidores externos
Os pontos anteriores sugeriram algumas maneiras de você fazer os tipos certos de verificação e validação. Mas compartilhar com um colega é uma das melhores maneiras de se forçar a fazer todas essas coisas. Um colega qualificado pode fornecer feedback qualitativamente diferente do que os consumidores de seus dados podem, especialmente porque os consumidores geralmente têm um cronograma. Os pares são úteis em vários pontos durante a análise. Descubra logo no início sobre pegadinhas que seu colega conhece, sugestões de coisas para medir e pesquisas anteriores nessa área. No final, os colegas são muito bons em apontar peculiaridades, inconsistências ou outras confusões.
O ideal é receber feedback de um colega que saiba algo sobre os dados que você está analisando, mas mesmo um colega com apenas experiência geral em análise de dados é extremamente valioso.
Esperar e aceitar ignorância e erros
Há muitos limites para o que podemos aprender com os dados. Nate Silver defende fortemente o sinal e o ruído de que somente ao admitir os limites de nossa certeza podemos avançar em uma previsão melhor. Admitir a ignorância é uma força que geralmente não é recompensada de imediato. Parece ruim no momento, mas é um grande benefício para você e sua equipe a longo prazo. É ainda pior quando você comete um erro e descobre mais tarde (ou até tarde demais), mas reconhecer proativamente seus erros faz com que você seja respeitado. Esse respeito se traduz em credibilidade e impacto.
Considerações finais
Grande parte do trabalho de fazer uma boa análise de dados não fica imediatamente aparente para os consumidores de sua análise. O fato de você verificar cuidadosamente o tamanho das populações e validar que o efeito era consistente em todos os navegadores provavelmente não atingirá a consciência das pessoas que tentam tomar decisões com base nesses dados. Isso também explica por que uma boa análise de dados demora mais do que deveria para a maioria das pessoas (especialmente quando veem apenas o resultado final). Parte do nosso trabalho como analistas é instruir gradualmente os consumidores sobre os insights baseados em dados sobre o que são essas etapas e por que são importantes.
A necessidade de todas essas manipulações e explorações dos dados também define os requisitos de um bom ambiente e linguagem de análise de dados. Temos muitas ferramentas disponíveis para examinar dados. Diferentes ferramentas e idiomas são mais adequados para várias técnicas discutidas acima. Escolher a ferramenta certa é uma habilidade importante para um analista. Você não precisa se limitar aos recursos da ferramenta com que se sente mais confortável. Seu trabalho é fornecer insights verdadeiros, não aplicar uma ferramenta específica.
-
Isso às vezes é chamado de "análise de dados inicial". Consulte o artigo da Wikipédia sobre análise de dados ↩
-
Tecnicamente, ele só deve ser iterativo se você estiver fazendo análise exploratória, não confirmação. ↩