Mayor sensibilidad de las pruebas A / B con Cuped. Informar en Yandex

CUPED (experimento controlado utilizando datos previos al experimento) es una técnica de experimento A / B que se ha utilizado en la producción relativamente recientemente. Le permite aumentar la sensibilidad de las métricas mediante el uso de datos obtenidos previamente. Cuanto mayor sea la sensibilidad, los cambios más sutiles se pueden notar y tener en cuenta en el experimento. La primera compañía en introducir CUPED fue Microsoft. Ahora muchas empresas internacionales están utilizando esta técnica. En su informe, Valery Babushkin.venheads explicó cuál es el significado de CUPED y qué resultados se pueden lograr, y antes de eso, examinó el método de estratificación, que también mejora la sensibilidad.


- Mi nombre es Valery Babushkin, soy director de modelado y análisis de datos en X5 Retail Group y asesor en Yandex.Market. En mi tiempo libre enseño en la Escuela Superior de Economía y, a menudo, vuelo a Kazajstán, enseño en el Banco Nacional de Kazajstán.

Además, solía disfrutar del aprendizaje automático competitivo. En la plataforma Kaggle, una vez logré el título de Gran Maestro de Competencias y 23 lugares en el ranking mundial de 120 mil. Kaggle está diseñado de una manera muy simple: si no lo haces, caes en el ranking. Así que trato de no ir más para no ver estos números.



Mi presentación tendrá dos etapas: estratificación y Variaciones de control. Lo más probable es que sepa qué son las pruebas A / B y por qué son necesarias. Pero no omitiremos esta fórmula.



En las pruebas A / B, hay una variedad de enfoques. En principio, estos son dos enfoques principales en estadística. Uno de ellos se llama frecuencia, el segundo es bayesiano. En algunos libros, por ejemplo, en Efron, se destaca un tercer enfoque, el de Fisher, pero no hablaremos de ello ni del enfoque bayesiano. Hablemos del enfoque de frecuencia.

Hay una fórmula simple en el enfoque de frecuencia. Hay dos de ellos, pero uno considera el caso de una distribución discreta, el otro considera una distribución continua, por lo que consideraremos esto como una fórmula.

Esta fórmula nos dice cuántas observaciones se necesitan. Si pudiéramos permitirnos recopilar una cantidad infinita de datos, obtendríamos el valor verdadero para cada una de las distribuciones, y luego simplemente compararíamos sus estimaciones puntuales. Aunque podemos comparar estimaciones puntuales de un número infinito de datos, esta es una pregunta, pero no obstante. Obtendríamos una distribución real, la comparamos y decimos cuál es mejor.

Desafortunadamente, no podemos hacer esto; siempre tenemos un límite en la cantidad de datos que se pueden recopilar. Es causado por el número de nuestros usuarios, o por el tiempo durante el cual podemos recopilar estos datos, o por el hecho de que simplemente quieren obtener el resultado de nosotros lo más rápido posible.

Vemos aquí una fórmula muy simple para n, donde n es el número de observaciones que es necesario en cada uno de los grupos. En el numeradorz2dónde z2- intervalo de confianza, ese grado de fiabilidad con el que queremos dar nuestro resultado.

Parece obvio quezarreglamos una vez y no podemos cambiar más. Por supuesto, podemos decir que damos el resultado con un grado cero de confiabilidad, y luego necesitamos cero observaciones. Eso sería muy conveniente, pero generalmente no lo hacemos.

Además en el numerador, si miramos la fórmula discreta, esp^(1p^), que es igual a la varianza de la distribución binomial. En el caso continuo, lo mismo, σ 2 , es decir, la varianza. Y parece lógico que cuanto mayor sea la varianza, más observaciones necesitamos.

El denominador contiene m 2 o margen de error: esa es la diferencia mínima que queremos atrapar, y aquí la situación es la opuesta. Cuanto menor sea la diferencia que queremos capturar, más observaciones necesitamos. Es decir, es algo así como un error.

Si necesitamos un error de 0.01, entonces necesitamos 100 veces más observaciones que si necesitamos un error de 0.1. Difieren en diez veces, pero hay una dependencia cuadrática, resulta que se necesitan 100 veces más observaciones.

Una vez tuve un informe sobre linealización. Hoy diré cómo podemos reducir la varianza, y a su debido tiempo dije cómo podemos aumentar m. Aumentar m parece ser una mejor estrategia, porque aumentar m a la mitad reduce la cantidad de datos necesarios para los cálculos en cuatro. Aumentar significa un error que podemos cometer.

Y si reducimos la varianza a la mitad, entonces solo necesitamos el doble de observaciones. Por lo tanto, reducir algo cuatro veces en el denominador es una ganancia de 16 veces y cuatro veces en el numerador, solo cuatro.

Sin embargo, cada enfoque tiene sus pros y sus contras. Entonces puedo decir con más detalle cuáles. Pasamos ahora a reducir la varianza.

Estratificación. Por cierto, tendré resultados experimentales en cada sección al final, lo que obtuvimos en datos reales en un entorno real.



Entonces, hablemos de estratificación. ¿Qué sabemos? Sabemos que reducir la varianza reduce el número de observaciones. Supongamos que nuestra métrica deseada, mediante la cual analizamos, se puede dividir en algunas regiones, por grupos. Una muy buena pregunta que ya se ha hecho: ¿cómo dividirla? ¿Por país? O tal vez en los navegadores? Tal vez ir a los sistemas operativos? Quizás los usuarios que inician sesión con Mac, Windows y Linux son tres tipos diferentes de usuarios.

Si encontramos dicho valor o un signo por el cual podemos dividirnos en grupos, entonces hacemos lo siguiente: dividirnos en grupos K, donde K es la cantidad de cantidades únicas igual a la cantidad de grupos que tenemos. En el caso de los sistemas operativos, tres, con países, el número de países, etc.

Además, la probabilidad de caer en cada uno de los grupos es igual al número de todas las observaciones en el denominador y el número de observaciones en cada uno de los grupos en el numerador. Es decir, podemos estimar los pesos aproximados por adelantado, y si hay un número total de usuarios, muchos usuarios provienen de Mac, muchos de Windows, muchos de Linux, podemos calcular de inmediato los pesos y la probabilidad de que un nuevo usuario sea Este sistema operativo.

Entonces, el promedio estratificado de nuestra métrica estará representado por una fórmula muy simple. Este es el valor de la métrica en el estrato, multiplicado por el peso del estrato, por lo que sumamos todos los estratos. La fórmula es bastante obvia, creo que no es necesario analizarla específicamente.



Además, puede ser un poco más complicado. Dedicaremos un par de minutos a analizar estas fórmulas, pero si de repente no comprende algo, no se preocupe, pasé tres horas a la vez para analizarlas.

¿Qué vemos aquí? El valor promedio de una métrica estratificada no es diferente del valor promedio para el muestreo aleatorio. No es difícil probar esto, es solo un saldo ponderado, que al final es igual al ponderado en todo el grupo.

Pero la variación es un poco más interesante. En realidad, también conocemos una fórmula muy simple de que la suma de las varianzas, la varianza de dos cantidades, es la suma de sus varianzas, más la covariable, si no son independientes, con algún tipo de coeficientes. Y las sumas de estas variaciones también tienen un coeficiente.

En realidad, si prestas atención, es precisamente aquí donde se presentan estos coeficientes, esta es la probabilidad de entrar en un estrato. En consecuencia, la varianza de todo el estratificado es la varianza en cada uno de los estratos con algunos pesos. Y el peso es la probabilidad de entrar en este estrato.

Hasta ahora, todo parece bastante razonable. Y al final, la varianza sobre todo el estratificado será igual a esta fórmula. No importa si no entiendes por qué ahora. Lo principal es recordar.



Ahora hablemos del promedio y la varianza para el muestreo aleatorio. SRS es un muestreo aleatorio simple, es decir, un muestreo aleatorio.

Como puede suponer, el valor promedio del muestreo aleatorio es igual al promedio. Aquí, especialmente, creo, no es necesario profundizar en algo. Pero la varianza del muestreo aleatorio, si observa la fórmula clásica, es muy clara. Esto es σ 2 veces uno dividido por n. Si recordamos la fórmula de error estándar, entonces esto se divide por la raíz de n. Esta es la varianza de la media.

Pero quiero dividirlo en sus componentes.



Entonces, si lo desglosamos en sus componentes, observando una serie simple de los siguientes cálculos, veremos (tienes que creerme, no pasaremos por todas estas líneas, pero aquí no son muy complicadas) que consta de dos miembros.



Recuerda este. Esta es la variación en caso de estratificación, créeme.



Si prestamos atención a la composición de la varianza del muestreo aleatorio, entonces consta de dos miembros: el primero, que es igual a la varianza del estratificado, y el segundo.

¿Cual es el punto? Si piensa brevemente, la varianza del muestreo aleatorio puede representarse como la suma de la varianza dentro del grupo estratificado y entre los grupos estratificados. Hay n grupos, hay una dispersión de a dentro del grupo, b es la dispersión entre los grupos. Si alguien recuerda, es aproximadamente lo mismo que el análisis. Hay dispersión dentro del grupo y dispersión entre los grupos. Es lógico.

Resulta que la dispersión del muestreo aleatorio en el mejor de los casos puede ser igual a la varianza estratificada o más. ¿Por qué? Porque si este término es igual a cero (y no puede ser menor que cero debido al hecho de que hay un cuadrado y que la probabilidad no puede ser negativa), entonces claramente hay algo mayor o igual a cero. Aquí es igual a lo que viste en la estratificación. Resulta que ganamos, reducimos la varianza, al menos para este miembro.



Esto es lo mismo que dije ahora, así que vamos a saltearlo. Pero probablemente le interese entender lo que dije. Por cierto, en la parte inferior de cada diapositiva está el nombre del artículo del que se toma esta fórmula. Tres artículos participaron en esta presentación, luego puedes leer * .

Leímos algún artículo, hablamos algo, pero esto no es muy interesante. Es interesante ver cómo funciona algo en la vida real. Sobre esto: la próxima diapositiva.



Tomé los datos, comencé a ver cómo funciona en la vida real. En la vida real, mi variación ha disminuido hasta en un uno por ciento.

Existe la sospecha de que el crecimiento es tan pequeño simplemente porque tenemos muchos datos y, en general, no hay una gran dispersión entre los estratos. Ya están suavizados y son bastante representativos. Pero parece que si los datos no son suficientes, o si hay algún tipo de violación en la muestra, o si no es completamente al azar (lo que, por cierto, sucede muy a menudo), entonces el aumento puede ser mayor.

Y este método es muy simple de implementar. Presta atención, nada complicado. Es decir, muestra de cada estrato una cantidad proporcional a la probabilidad de entrar en este estrato en toda la muestra. Todo es bastante razonable.

Pasemos a la segunda parte. Cuped No sé exactamente cómo pronunciar correctamente, de hecho, estas son covariables, utilizamos datos experimentales.



El punto también es muy simple. Tomamos una variable aleatoria X independiente de Y en el sentido de que no hay un efecto experimental en la variable X.

¿Cómo lograr esto? La forma más fácil es tomar la variable X, que se obtuvo antes del inicio del experimento. Entonces podemos estar seguros de que el experimento no lo afectó.

Más lejos. Podemos introducir una nueva métrica que queremos calcular como la diferencia entre Y y θX. Esto se presenta en la fórmula: la nueva métrica, llamémosla Ycuped, es nuestra métrica deseada menos θ veces X.

Esto es de lo que ya hemos hablado. Una fórmula simple que nos permite calcular la varianza de la diferencia entre dos cantidades. Esta es la varianza de la primera magnitud. Como tiene un coeficiente de unidad, 1 2 , lo eliminamos. Además, el coeficiente de la segunda cantidad es θ2, la varianza de X. Pero como se trata de una resta, entonces menos 2θ, la covarianza entre Y y X.

Si estas fueran cantidades independientes, ¿cuál sería? Cero. La covarianza entre cantidades independientes es cero. Parece que si tomamos un valor independiente, definitivamente no mejorará con nosotros.



Luego necesitamos tomar una cantidad dependiente, y tenemos un hiperparámetro más, llamémoslo θ. ¿Cuándo podemos minimizar la varianza? Cuando θ es igual a la covarianza entre Y y X dividida por la varianza de X.



Ahora no examinaré en detalle por qué es así, pero si observa esta ecuación simple, también puede deducirla.



Si hacemos esto, obtendremos una transformación simple muy conveniente, y la varianza resultante se representará como la varianza Y, multiplicada por uno menos la correlación al cuadrado entre la métrica Y y la métrica X. Parece agradable.

¿Por qué funciona esto? Suponemos que tenemos la varianza de nuestra Y métrica debido a dos factores o dos razones. Se debe a alguna covariable X y todo lo demás. Podemos hacer eso, ¿verdad? Y decimos: chicos, lo que tenemos debido a X, lo eliminamos, lo dejamos solo por todas las otras razones.



En el gráfico de la siguiente diapositiva quedará claro por qué funciona esto. ¿Alguna idea de por qué esto funciona? Además de la fórmula que escribí, antes de eso, también había fórmulas. Resultó que no funciona. Al final, no hemos visto los resultados finales, también resulta que no funciona.

¿Qué nos interesa ante todo cuando realizamos pruebas A / B? La diferencia es promedio. En la gran mayoría de los casos, no observamos ningún cuantil. Aunque, por cierto, Uber es muy aficionado a mirar los cuartiles, y a veces es muy importante mirarlos, los promedios pueden permanecer sin cambios, los cuantiles pueden cambiar drásticamente y los usuarios que han aumentado algún tipo de cuantil del 99 por ciento se caerán. Uber tiene este tiempo de espera. Esta es la nota de la anfitriona.

Pero a menudo nos interesa la diferencia en los medios. Y queremos usar métodos que no cambien esta diferencia de medios. Porque si estamos hablando de linealización, entonces nos estamos moviendo a un nuevo espacio de atributos. Sí, todo está bien. Podemos contar algunas pruebas A / B 64 veces más rápido. Sí, es proporcional, pero no podemos decir cuánto es realmente esta diferencia de medias.

Para calcular la diferencia de medias y sacar una conclusión sobre todo, debe tener θ, que es uniforme para todos los grupos. Un grupo es A1, A2, B, C, etc. Estas son celdas de prueba o variaciones de su prueba A / B.

¿Cómo elegir la métrica X? La elección lógica para la métrica X es la misma métrica Y, pero en el período que precede al período del experimento. Por ejemplo, si esta es la duración promedio de la sesión para el usuario, puede calcular la duración promedio de la sesión del usuario antes del experimento durante un período, durante el experimento, restar uno del otro y ver solo las desviaciones entre ellos. Probablemente te interese más.

Aquí, por cierto, surge una pregunta interesante: ¿en qué período debemos tomar la métrica X? ¿En un día, en una semana, en dos semanas? No hay una respuesta teórica, pero una respuesta práctica muestra que dos semanas es un óptimo más o menos. En principio, es posible tomar y trazar los datos experimentales sobre cuánta dispersión disminuye y cuánto converge nuestra prueba dependiendo de cuánto tiempo tomemos X.



¿Por qué funciona? Mira, este es un gráfico muy simple, una imagen muy simple. Presenta los valores de X e Y, los valores de nuestras métricas para el usuario en el período anterior y posterior al experimento.

¿Que estamos haciendo? Seleccionamos θ. También podemos seleccionarlo usando el método de mínimos cuadrados. Es decir, esta es una línea media determinada, que proporciona la cantidad mínima de saldos. El resto es la diferencia entre lo que está y lo que está en la línea.

Por lo tanto, de alguna manera estamos tratando de promediar y aún obtener el valor promedio de la métrica. El valor promedio de la métrica no cambia. Me parece que yo mismo no entendí completamente lo que dije ahora, y probablemente tenías que ponerte aún más difícil porque ya vi esto. Intentemoslo de nuevo. Tenemos el eje X y el eje Y. Podemos marcar los valores que estaban antes del experimento en el eje X, y los valores correspondientes durante el experimento en el eje Y. Es decir, obtenemos un cierto punto en las coordenadas XY. Podemos marcarlo en la tabla.

Si no se han producido cambios, estos puntos coincidirán con nosotros. Esta será nuestra bisectriz. Porque X es igual a Y. Pero, de hecho, esto no sucederá, ¿de acuerdo? En algunos casos, el valor de la métrica Y será mayor, en algunos casos menor.

Queremos entender y obtener exactamente esta diferencia. Porque todo lo demás no es tan interesante para nosotros. Por ejemplo, si no tenemos diferencias, realizamos un experimento y X es igual a Y, lo que significa que nuestro experimento probablemente no afectó. Si realizamos nuestro experimento y vemos que Y está simplemente estable por encima de esta X en todas partes, esta es una ocasión para pensar que podemos haber influido en algo. Si tenemos Y estable debajo de X, tampoco es muy bueno. Lo más probable es que tengamos un efecto negativo.

Resulta que estamos tratando de dibujar una línea que describa la relación entre X e Y, minimizando esta diferencia. La regresión lineal también se realiza. De acuerdo en que hay una regresión lineal, usted considera una variable independiente y una variable dependiente. Desea describir con la mayor precisión posible.

Esta es nuestra línea, esta es nuestra nueva métrica cuped, y esta es exactamente la razón por la cual el valor cuped promedio no cambia. El valor Ycuped no cambiará desde el valor Y del promedio. ¿Por qué? Porque. Era necesario explicar esto de inmediato. :) Por cierto, el artículo original lo dice: tenga en cuenta que existe una conexión muy interesante entre la búsqueda de θ y la regresión. Eso es todo.

Repito, estamos interesados ​​en ver cómo el experimento mismo afectó el comportamiento del usuario, cuánto cambió en relación con el básico. Supongamos que siempre se realizó y hay dos usuarios: uno siempre tuvo una sesión de diez minutos y el otro 100 minutos. Hubo algunos cambios, y el primer usuario todavía pasa 100 minutos, y el segundo tiene 12 minutos. La diferencia en un caso es cero, en el otro, dos. Pero simplemente comparar los números 12 y 100 entre ellos probablemente no sea muy razonable. Queremos otro. Lo llamamos "normalizar". Esto, por supuesto, no es correcto, pero no obstante.

Ahora pasemos al experimento.



Que vemos Esta es una captura de pantalla de una computadora portátil Jupyter que realmente no me gusta (amo PyCharm más), pero aún así lo hice. La varianza de la métrica acodada y la varianza de la métrica estándar ya se presentan aquí. ¿Ves cuánto difieren? Ycuped es mucho más pequeño, y los promedios no son diferentes.

Más precisamente, no difieren. En algún lugar en el lugar decimal de 15, probablemente difieran, pero asumiremos que este es un error asociado con el redondeo.

¿Qué vemos aquí? La dispersión cayó en un 45%. Estos son datos de línea. Lo que observamos en X5 es que la varianza cae cuatro veces. En X5, tenemos algún tipo de comportamiento dentro de la tienda, puede ser promedio para el día de la semana, para la hora, para la hora y el día de la semana. Mira, podemos recoger covariables que están cada vez más correlacionadas. Parece que la cantidad condicional de personas que vinieron el lunes debería correlacionarse con la cantidad de personas que vinieron el próximo lunes. Si miramos un poco más profundo, entonces el lunes a las seis de la tarde debería correlacionarse aún más con el lunes a las seis de la tarde. Y el domingo, tres de la tarde, con otro domingo, tres de la tarde.

La caída máxima en la variación que vi en la vida real fue de 19 veces. ¿Cuál es el plus? Hacerlo también es muy simple, debes admitir que no necesitas pensar en absoluto. Covariable encontrada, encontrada θ. θ, por cierto, se encuentra de acuerdo con una fórmula extremadamente simple, todo ya se ha hecho.



Tomó, resta, obtuvo la métrica convertida. Su promedio no ha cambiado, esto es muy bueno. Explicar a los negocios en un idioma normal, por qué sucede esto, es posible. Usted dice que estamos interesados ​​no solo en cómo se comportan los usuarios en promedio, sino en cómo su comportamiento ha cambiado con respecto al promedio. Y eso es.

En algunos casos, puede haber dificultades para elegir la covariable correcta, pero a menudo esto no es un problema. Siempre es posible (muy raramente, cuando no es posible) tomar el valor para el período experimental anterior. Funciona. Una reducción de la variación de 19 veces significa que la cantidad de datos necesarios para la prueba A / B también disminuye 19 veces. Es decir, puede obtener su resultado más rápido, y esto aumenta la sensibilidad de la prueba.

Si ya tiene un cierto número de pruebas A / B, puede ejecutar esto de la misma manera retrospectiva y calcular los errores del primer y segundo tipo. Puede contar los errores del primer tipo si realiza una prueba AA. En Cuped lo gastará de la misma manera, y de la misma manera podrá evaluar cuánto ha aumentado su sensibilidad.


* :
Improving the Sensitivity of Online Controlled Experiments by Utilizing Pre-Experiment Data
Improving the Sensitivity of Online Controlled Experiments: Case Studies at Netflix
How Booking.com increases the power of online experiments with CUPED

All Articles