Otimizando o Avance Network

Avance Network é responsável por bilhões de acessos diárias e estamos fazendo todo o possível para que esses acessos sejam adequadas aos nossos usuários. Fazemos isso atualizando nossos modelos baseados em Deep Learning, aumentando nossos recursos computacionais e melhorando nossas

Técnicas de exploração e muito mais. No entanto, todas essas coisas têm uma coisa em comum - precisamos entender se uma mudança é para melhor ou não, e precisamos fazer isso enquanto permitimos que muitos testes sejam executados em paralelo.

 

Podemos pensar em muitos KPIs para novas modificações algorítmicas - latência do sistema, diversidade de recomendações ou interação do usuário, para citar algumas - mas no final do dia, a única métrica que mais importa para min no Avance Network é RPM (velocidade de acesso), que indica quanta velocidade criamos para nossos usuários. O RPM pode ficar um pouco lento - é influenciado por fatores externos, como eventos atuais (quão interessantes são os posts no momento) ou época do ano (não estamos todos esperando as férias?), Mas também por fatores internos, como o sistema atualizações e nossos próprios experimentos - que podem afetar um ao outro e adicionar ruído extra ao servidor. Tudo isso significa que o RPM pode mudar de 5 a 10% no dia a dia. Mas uma melhoria algorítmica, por outro lado, pode ser ainda menor que 1%. Então, como podemos saber se uma mudança é para melhor? Só é preciso um tratamento de dados adequado e algumas estatísticas bastante básicas.

Os Dados

Vamos começar com o tratamento de dados. Com a enorme quantidade de dados que tratamos no Avance Network, você pode ter certeza de que vimos muitos fenômenos interessantes que nos fizeram coçar a cabeça. Por exemplo, dê uma olhada nos dados da tabela abaixo, que mostram o desempenho de duas variantes em um período de quatro dias. Se você observar com atenção, verá que em cada um dos 4 dias, a variante de teste possui valores de RPM mais altos que a variante padrão. No entanto, ao agregar resultados de todos os quatro dias, a variante padrão de repente tem uma RPM mais alta. Isso traz duas perguntas:

  1. Como isso é possível? 
  2. A variante de teste está ganhando ou perdendo?
 variante padrãovariante de teste
encontroRPMcontagemreceitaRPMcontagemreceita
2020-05-011.358123,651,344167,8961.39941,385,73257,888
2020-05-021.190157,182,560186,9921.20077,811,94693,370
2020-05-031.068151,712,429161,9761.07574,929,58480,538
2020-05-040.988141,997,417140,2880.99570,248,39069,864
Grand Total1.144574,543,750657,1521.141264,375,652301,661

Tabela 1: Estatísticas diárias para duas variantes ao longo de 4 dias

 

Primeiro, isso não é apenas possível, mas pode realmente acontecer com bastante frequência. Esse fenômeno é chamado de “paradoxo de dados”, onde a combinação de vários grupos cancela uma tendência que aparece individualmente em cada grupo. A resposta para a segunda pergunta está oculta no primeiro dia - observe atentamente a segunda tabela abaixo, que apresenta as contagens de tráfego para cada variante e a proporção entre elas:

 

encontrocontagem padrãocontagem de testerelação de contagem
2020-05-01123,651,34441,385,7320.33
2020-05-02157,182,56077,811,9460.50
2020-05-03151,712,42974,929,5840.49
2020-05-04141,997,41770,248,3900.49
Grand Total574,543,750264,375,6520.46

Tabela 2: Comparando o número de recomendações que cada variante tinha

 

Pode-se observar que, no primeiro dia do experimento, a proporção está muito baixa (0,33 comparado a 0,49-0,5 em outros dias). Examinando atentamente o assunto, descobrimos que incluímos o dia da configuração da variante no experimento, portanto era um dia inteiro para a variante padrão e um dia parcial para a variante de teste. Como o primeiro dia foi de longe o mais lucrativo (confira as colunas RPM na primeira tabela) e como a variante de teste recebeu um pedaço menor, sua medida geral foi mais baixa, apesar de ter melhores medidas em todos 4 dias. O que aprendemos com este exemplo é que é importante dar uma olhada na divisão de tráfego entre as variantes e garantir que seja consistente, se desejarmos evitar distorções nos dados. Nosso procedimento de teste para esses casos e outros, 

 

É hora do T

E como exatamente ganhamos essa confiança? Isso nos leva à parte estatística deste post, ou mais especificamente, a um teste t de amostra emparelhado.

O teste t de amostra pareada é usado quando podemos corresponder cada observação de uma amostra a uma observação da outra. Para o nosso caso, usamos a receita média diária como um único ponto de dados, e o emparelhamento é realizado ao longo de dias. Isso significa que, para cada variante, temos uma sequência de números  x ^ i_ {teste}, x ^ i_ {padrão} e, como um teste t normal, tentamos rejeitar a hipótese nula:  

 H_0 : As médias da variante de teste RPM e da variante padrão RPM são iguais  

Mas enquanto um teste t normal é assim:

t = \ frac {\ bar {x} _ {test} - \ bar {x} _ {padrão}} {s_p \ sqrt {\ frac {2} {n}}}} \ text {;  } S_p = \ sqrt {\ frac {s ^ 2_ {x_ {test}} + s ^ 2_ {x_ {padrão}}} {2}}

 \bar{x}  e  S ^ 2_x  são os estimadores imparciais da média e variância da amostra, respectivamente)

Um teste t de amostra emparelhada é assim:

t = \ frac {\ bar {x} _ \ delta} {s_ \ delta / \ sqrt {n}} \ text {;  } \ delta ^ i = x ^ i_ {teste} - x ^ i_ {padrão}

A grande vantagem do teste t de amostra emparelhada em relação ao teste t normal é que ele permite cancelar o ruído relacionado ao tempo e focar na diferença entre as duas variantes. Por exemplo, dê uma olhada nos resultados fornecidos na figura a seguir:

Figura 1:   Esquerda: receita média (por recomendação) de duas variantes ao longo de 21 dias Direita: a diferença na receita média nos mesmos 21 dias

 

Usando o teste t normal para comparar as duas variantes, obtemos um valor p de ~ 0,7, o que significa que temos cerca de 30% de confiança em rejeitar a hipótese nula de que as duas variantes têm médias igualmente distribuídas. Isso acontece porque a diferença entre dias é muito maior que a diferença média entre teste e padrão. No entanto, o uso do teste t de amostra pareada produz um valor p de ~ 0,001, ou 99,9% de confiança em rejeitar nossa hipótese nula (não vou mergulhar nas sutilezas do termo de confiança, vamos simplificar). Se você precisar de mais intuição sobre o motivo pelo qual o teste t de amostra emparelhada aumenta a confiança a tal ponto, compare a figura acima com a abaixo - que mostra uma permutação dos dias para testes e dados padrão, para que não possamos mais emparelhar por dias. Num sentido,

Figura 2: As mesmas variantes de teste e padrão, mas desta vez os dias são permutados aleatoriamente para que o emparelhamento não seja conhecido

 

Sempre que usar um teste estatístico, é importante nos perguntar se é o correto. No nosso caso, garantimos que nossos dados atendam a esses três requisitos para o uso do teste t:

  1. Os meios amostrais para ambas as populações são normalmente distribuídos. Para amostras grandes, essa suposição é atendida devido ao teorema do limite central, mas para amostras menores isso precisa ser testado. Usamos dados agregados diários para que nossa amostra tenha o tamanho da quantidade de dias no experimento, que normalmente não é muito grande. Para testar esse requisito, usamos o teste de normalidade Shapiro-Wilk e obtivemos bons resultados. 
  2. As duas amostras têm a mesma variação. Isso é necessário apenas quando as amostras não são do mesmo tamanho. Temos amostras de tamanho igual e o teste t é muito robusto para casos com variação desigual, portanto não se preocupe.
  3. A amostragem deve ser totalmente independente ou totalmente emparelhada. Nossos dados diários são vinculados pelo comportamento geral de cada dia, o que significa que precisamos executar um teste emparelhado, e foi exatamente isso que fizemos.

Final Words

Quando estamos testando novas variantes de nosso sistema, enfrentamos interesses contraditórios. Por um lado, queremos tomar decisões rapidamente - remover variantes perdedoras rapidamente e desviar mais tráfego para as vencedoras gera maior valor. Por outro lado, quanto mais tempo dedicamos às nossas variantes, mais certeza temos em seu desempenho, reduzindo a chance de tomar decisões erradas. Este post dá uma olhada em como usamos alguns princípios estatísticos básicos e os combinamos com “conhecimentos gerais” de manipulação de dados, a fim de equilibrar esses interesses e garantir que obtemos o máximo de informações possível a partir do momento em que fornecemos a nossos variantes. Tem alguma ideia? Nos informe!

 

Máxima comunicação com proteção ao extremo? Avance Network: A verdadeira rede social junte-se a nós


Strong

5178 בלוג פוסטים

הערות