Teste Bayesiano: por que mudamos nossa forma de análise

Quero Educação
Tech at Quero
Published in
7 min readNov 20, 2019

Como fomos do teste de significância ao teste A/B Bayesiano

Testes A/B constituem um importante método quantitativo para melhorias em features de forma geral. Para um marketplace, eles podem se traduzir em melhorias em páginas, botões, imagens ou mesmo no atendimento ao cliente.

Anteriormente, o time de Data Science utilizava o tradicional teste de significância, porém, percebemos que essa prática não atendia tão bem nossas necessidades. Assim, mudamos nossa abordagem para o Teste A/B Bayesiano, baseado em um artigo da VWO [1], uma companhia especialista em otimização de websites.

Mesmo que ambas as abordagens possam obter o mesmo resultado final, o Teste Bayesiano foi escolhido por atender melhor às necessidades do nosso dia a dia, como mostraremos a seguir. Além disso, o método de Bayes é o primeiro passo para experimentos baseados em algoritmos de Multi-Armed Bandit, já citados no artigo do Murilo Cassiano, Product Manager da Quero Educação.

Problemas com teste de significância

O teste de significância (também chamado de frequentista) requer um critério de parada (confiança) para que possamos tomar uma decisão, além de demandar um número de amostras mínima para que o teste seja confiável.

Ambos trazem problemas para o teste: demoram muito tempo para serem atingidos e, como citado em alguns artigos aqui, os experimentos têm um custo e nem sempre é ideal seguir a significância estatística à risca, pois isso pode gerar prejuízos exacerbados à empresa.

Entretanto, escolher um resultado antes de atingir o ponto ideal pode nos gerar erros significativos do tipo I (rejeitar a hipótese nula sendo que ela é verdadeira) ou do tipo II (aceitar a hipótese nula sendo que ela é falsa).

Outro problema desse método é a alta variação na confiança quando calculado diariamente. A variação acaba por confundir stakeholders e gerentes de produto durante o acompanhamento dos testes, já que o valor se aproximar ou se distanciar do critério de parada de forma quase caótica, e sem uma quantidade mínima de amostras não é recomendado finalizar o teste. Porém, não podemos abandonar o acompanhamento diário, já que é importante para termos insights de melhoria no produto e acompanhamento da performance do teste.

Exemplo de variação do p-value sobre o tempo

O último problema, mas não menos importante, é a modelagem da principal métrica que utilizamos nos testes, ARPU (Average Revenue per User, ou Receita média por usuário). A distribuição de ARPU não é próxima à distribuição t de Student para justificar o uso de testes como o T-Test.

Além disso, o teste não-paramétrico Wilcoxon-Mann-Whitney também não teria um resultado bom, pois utiliza a mediana para realizar os cálculos. Enquanto isso, em muitas páginas do site, a mediana não representa muito bem a distribuição de ARPU, pois não consideraríamos as vendas com maior receita do site, já que é uma distribuição com uma cauda longa.

Enfim, o teste Bayesiano

A Inferência Bayesiana interpreta a probabilidade como um medida de de credibilidade em um evento, ou seja, o quão confiante estamos do evento ocorrer [2]. No nosso caso, o evento que estamos tentando medir é se a alternativa B (ex: feature nova que queremos testar) é melhor que a alternativa A (feature existente) em termos de ARPU.

Medimos a credibilidade a priori p(A) de evento a partir de uma crença que já possuímos sobre o ele, e, em seguida, atualizamos nossa crença adicionando os dados adquiridos (X) no teste para obter nossa crença a posteriori p(A| X) utilizando o Teorema de Bayes, que pode ser ilustrado da seguinte forma:

Sendo p(A) a distribuição de probabilidade a priori do evento, p(X|A) é o likelihood, ou seja, a distribuição de probabilidade de observar os dados adquiridos X assumindo que o evento A foi observado, e p(A|X) a distribuição de probabilidade a posteriori do evento, atualizado com o nossa observação dos dados X.

Outra métrica importante para ser observada é a perda esperada, muito raramente há um teste no qual temos 100% de certeza que uma alternativa é melhor que a outra, e é neste momento que essa métrica é útil, já que podemos cair na probabilidade de erro, por menor que ele seja. Podemos definir a perda esperada como o risco de prejuízo se por o acaso escolhermos a alternativa errada.

Exemplo:

Imagine um teste A/B rodando para aplicarmos uma nova feature em uma página, como um novo botão. A é a versão atual da página, enquanto B denomina uma nova versão a ser testada. O experimento mostra que B está com 70% de chance de ser melhor que a alternativa A e tem uma perda esperada de R$ 3,00 e a alternativa B tem uma perda esperada de R$ 1,00, ambas em termos de ARPU.

Claramente, B parece melhor que A, porém ainda há 30% de chance de A ser melhor. Caso a alternativa escolhida como vencedora seja B e caiamos nessa probabilidade de 30%, perderíamos R$ 1,00 na nossa métrica de ARPU atual. Se escolhermos a alternativa A, temos 70% de chance de deixarmos de ganhar R$ 3,00 por usuário na página (pode-se entender essa perda esperada como um risco de perda para cada alternativa).

Exemplo da perda esperada das alternativas ao longo do tempo (alternativas A e B em azul e laranja, respectivamente).

Exemplo da perda esperada das alternativas ao longo do tempo (alternativas A e B em azul e laranja, respectivamente).

Como pode ser observado no exemplo, a perda esperada é tão importante de ser acompanhada quanto a probabilidade de uma alternativa vencer a outra, portanto que é utilizada como condição de parada para o teste. Para finalizar um teste, devemos observar, para uma das variantes A ou B, uma perda esperada tão pequena quanto uma tolerância (𝜺).

Apesar de existirem outras condições de parada como no caso do Teste de Significância, o Teste Bayesiano costuma demorar menos para atingir resultados, pois não demanda de um tamanho de amostra mínima. Ainda assim, o time de Data Science está deixando o teste rodar no mínimo duas semanas para termos certeza de que a amostra coletada realmente represente a população do site, evitando decisões precipitadas.

A principal vantagem é termos uma modelagem (baseada na modelagem da VWO em [1]) mais próxima à distribuição de ARPU na qual utilizamos duas distribuições: Bernoulli (𝜷) e Exponencial (𝛤). Dessa forma para cada indivíduo i no teste temos as modelagens ao lado.

Nessas relações, λ é a conversão real do teste (pagantes/participantes do teste) e é a receita por venda real (receita total/pagantes). A distribuição de Bernoulli modela a nossa conversão e a distribuição Exponencial modela o valor da compra. Retiramos amostras aleatórias das duas distribuições e as multiplicamos para obter o ARPU ai. Assim, se houver uma compra ci será 1 e ri será o valor da compra, enquanto que, se não houver compra, ci será 0 e o valor de ri não irá importar, pois o resultado será ai =0. ri = 0.

Desta forma temos um método de teste de ARPU no qual não desrespeitamos condições para teste como acontecia no T-Test, já que a distribuição não era próxima à distribuição t de Student, e assim temos um teste que representa o comportamento real da nossa métrica.

Resultados do Teste

Os membros do time de Data Science vêm usando de forma recorrente a nova engine Bayesiana no dia a dia. A título de exemplo, a engine foi utilizada para medir o impacto das recomendações na nossa página de oferta, bem como para medição de diferentes estratégias de otimização da fila de ticket do time de atendimento. Em síntese, o método bayesiano aumentou a velocidade, interpretabilidade e veracidade das nossas análises.

Os próximos passos para nosso método de Testes A/B são melhorar a nossa distribuição a priori para refletir mais a nossa realidade. usando, por exemplo, uma distribuição Gamma em vez de uma exponencial para a receita por venda, e melhorar nossa framework para que possa suportar algoritmos como o de interleaving, que será bem útil quando formos testar novos algoritmos de recomendação.

Quer saber mais sobre o assunto? É só ler algumas referências que usei para escrever o texto e algumas outras recomendações:

[1] Bayesian A/B Testing at VWO

[2] Probabilistic Programming and Bayesian Methods for Hackers

[3] The power of Bayesian A/B Testing

[4] Bayesian vs. Frequentist A/B Testing — What’s the difference?

Quer fazer parte deste e de outros desafios? Conheça nossas vagas.

Thiago Sato @ Analista de Dados — Luan Fernandes @ Cientista de Dados

--

--

Quero Educação
Tech at Quero

Queremos encurtar distâncias na educação. Unimos quem quer aprender com os especialistas em ensinar. Vamos juntos?