Modelos de atribución en marketing. Shapley (4/6)
En esta serie de notas vamos a ver qué son y cómo se usan en marketing los modelos de atribución. La pregunta que buscamos responder es: de las ventas que tuvimos, ¿cuántas corresponden a cada campaña publicitaria que hicimos? Para eso analizamos las 2 familias principales de modelos: MMM (Marketing Mix Modelling) y MTA (Multi Touch Attribution).
Índice
- ¿Qué es la atribución?
- Modelos MMM
- Modelos MTA: heurísticos
- Modelos MTA: data-driven (Shapley)
- Modelos MTA: data-driven (Markov)
- Resumen
Shapley
El primer enfoque que vamos a analizar es el de Shapley (como dijimos, “Sheipli” o “Shapli”, según tu nivel de latte macchiato en sangre). Si tuviera que resumirlo, diría que este problema es la forma perfecta de resolver otro problema que podemos haber vivido muchas veces en nuestra vida cotidiana.
El problema del taxi
Supongamos que salís de una fiesta, tenés que volver a tu casa y hay 2 o 3 amigos y amigas que vuelven para el mismo lado. Deciden tomar un taxi y le pasan al taxista las 3 direcciones. Se duermen en el camino. De repente el taxista dice “chicos, acá se baja alguien”. Aun en el tránsito entre sueño y vigilia decís “sí, yo me bajo, ¿cuánto les dejo”.
Supongamos que no es fin de semana y no estás volviendo de una fiesta. Tampoco es tan fácil contestar esa pregunta. Bueno, para resolverlo le vamos a pedir una mano a nuestro amigo Lord Shapley.
Así como lo ves, Lord Shapley fue un matemático estadounidense y geminiano, ganador de un premio Nobel en economía y mundialmente reconocido por sus aportes a la teoría de juegos. ¿Qué es la teoría de juegos? Es una rama en la frontera de la matemática y la economía que modela la realidad como si las decisiones que tomamos fueran parte de un juego y de esa manera consigue representar matemáticamente los resultados de esas decisiones. Ok, ponele, pero vamos a verlo con un ejemplo.
Para poder abordar el problema que planteamos antes (el del taxi), vamos a usar una rama particular de la teoría de juegos que son los juegos cooperativos. Es decir, juegos donde hay jugadores que contribuyen para lograr un resultado y luego tienen que dividir el premio. Sé que en este caso tomar un taxi no es un juego y pagar la tarifa no es un premio, pero se entiende, ¿no? Nuestro amigo Shapley planteó una solución para distribuir el valor de un juego cooperativo (“… de n jugadores”, así tituló su paper).
Supongamos que saliendo de la fiesta quienes suben al taxi son A, B y C. Tanto A como B como C son habitués del bar por lo que ya saben por experiencia cuánto sale tomarse un taxi a su casa desde ese lugar. Supongamos, además, que tanto A como B están en el camino de C así que no hay desvíos ni pérdida de tiempo en que viajen en el mismo taxi.
¿Cómo dividimos entonces? Pensemos en posibles soluciones.
- Un sábado al salir del bar A se despierta primero y dice “ya está, les dejo $100 total los hubiera pagado de cualquier manera”. En ese caso, los restantes $300 habría que dividirlos entre B y C. Más allá de como se divida eso, es claramente injusto para A porque estaría pagando el precio completo mientras que los beneficios de compartir se los llevan B y C.
- Al sábado siguiente C antes de subir al taxi dice “ya fue, yo vivo lejos y siempre vuelvo en taxi así que les invito”. En ese caso, C paga los $400 y tanto A como B viajan gratis. También parece injusto.
- La próxima intentan algo diferente. Dicen “pongamos cada quien lo que hubiera puesto si viajara en soledad”. En ese caso juntarían $750, con lo cual sobrarían $350 y estamos de vuelta en el problema de cómo dividirlo. Si dividimos en partes iguales, de vuelta A tendría no solo subsidiado el viaje sino que se llevaría un premio por viajar en taxi a costa de B y C.
Esto no está llevando a ningún lado. Veamos qué dice Lord Shapley.
Shapley y el taxi
Shapley quiere poner su conocimiento al servicio de la causa y ayudar a estos jóvenes. Entonces, les propone un juego mental. El taxista Shapley dice: “acá hay una caja. Yo voy a ir nombrando una persona a la vez y esa persona tiene que agarrar la caja y poner lo que falte ahí para completar un viaje hasta su casa”.
Empieza entonces. El taxista Shapley dice A y A pone sus $100 en la caja. Luego nombra a B. B agarra la caja, ve que hay $100 así que agrega $150 (porque ir hasta su casa desde el bar sale $250). A continuación le pasa la caja a C y C pone otros $150 (para llegar a los $400 del viaje total).
¿Qué pasa? A lógicamente se empieza a quejar. Nuestro amigo taxista Shapley dice que espere, que este fue el primer round. Que van a jugar al mismo juego 5 veces más. Y de paso les alcanza un papel y les pide que cada vez que jueguen, vayan anotando cuánta plata pusieron en cada ronda.
A continuación Lord taxista Shapley dice: “Vamos a jugar de vuelta. A”. A de muy mal humor agarra la caja y pone $100. Luego el taxista sorprende y dice “C”. Entonces C revisa, calcula y pone $300 en la caja. Cuando el taxista nombra a “B”, agarra la caja y dice “ya está, esto alcanza para que yo llegue a mi casa”. A vuelve a quejarse porque otra vez pagó los 100 mientras que B y C obtuvieron los beneficios.
El juego continúa y el taxista Shapley va jugando con todas las combinaciones posibles:
- A, B, C
- A, C, B
- B, A, C
- B, C, A
- C, A, B
- C, B, A
Una vez que termina, les pide a A, B y C que muestren sus papeles con los valores que fueron anotando. El resultado final es este:
Ante la sorpresa de A, B y C, el taxista Shapley remata la función diciendo que lo que cada persona tiene que poner es el monto total de los 6 juegos dividido 6.
¡Voilá! Ahí tenemos una forma de repartir los costos del taxi habiendo calculado la contribución marginal de cada persona / jugador al resultado total. Parece dentro de todo bastante justo, ¿no?
Sin embargo, como ya dijimos en las notas anteriores sobre MMM, todo modelo tiene características que lo hacen representar muy bien determinados aspectos de la realidad pero a costa de abstraer determinados otros.
Por ejemplo en este caso vemos que la solución es igual si el orden del viaje es A-> B-> C o si es C-> B-> A o cualquier otra combinación ya que siempre se hace el mismo cálculo. Esto es porque la solución de Shapley está pensada para juegos cooperativos donde no hay una noción de orden (yo juego primero, vos jugás después) sino que son coaliciones de cooperación (es decir jugamos en conjunto o no). Así que la primera conclusión es que Shapley es indiferente al orden en el que sucedan las cosas.
Pero además, esto tiene otras consecuencias. La más inmediata es que en este caso estamos calculando un viaje en taxi entre 3 personas. Supongamos que en vez de eso, tenemos que repartir los costos de un transporte que lleva 10 productos a diferentes puntos en un mismo recorrido. Si para 3 jugadores tuvimos que calcular 6 “combinaciones” distintas, ¿cuántas vamos a tener que calcular para 10?
La respuesta se denomina en términos estadísticos permutación sin repetición y se calcula con el factorial (el símbolo !) que es igual a la multiplicación de todos los números hasta el que estamos calculando. En el primer caso teníamos 3 jugadores así que la cantidad de permutaciones que había que calcular eran 3! = 1x2x3 = 6. Ahora, para 10 productos en un recorrido tenemos que calcular… ¡¡3.628.800 permutaciones!!
Vemos cómo esto escala muy rápidamente. Bueno, eso va a implicar que para trasladar esta metodología a atribución vamos a tener que adoptar una definición de qué es un canal que sea lo suficientemente limitada para que podamos calcular el valor de Shapley sin que explote nuestra máquina (y el mundo).
Shapley y el marketing
Una vez introducida la metodología que propone Shapley para solucionar juegos cooperativos, vamos a ver cómo podemos aplicar ese enfoque al problema de atribución en marketing digital que veníamos tratando en las notas anteriores.
Habíamos dicho que los modelos MTA surgen en el momento en que podemos tener información trazable de cada usuario sobre las campañas publicitarias por las que fue impactado. El resultado es algo parecido a esto:
Para modelar estos datos según la teoría de juegos cooperativos y la solución propuesta a ese problema por Lord Shapley, vamos a suponer que cada canal es un jugador y que el resultado de cada cooperación es la cantidad de conversiones de esa combinación de canales.
A partir de ahora vamos a usar los siguientes términos para referirnos a lo mismo de lo que veníamos hablando:
- Jugador = persona (A, B. C) = canal de marketing
- Coalición = conjunto de personas que viajan juntas en taxi = canales que están presentes en conjunto en el recorrido de un usuario
- Gran coalición = el viaje completo (A-> B-> C) = el recorrido en el que están presentes todos los canales de marketing posibles
- Sub coaliciones = todas las combinaciones de viajes que no son el viaje completo (A->B, B->C, C->A, etcétera) = todas las combinaciones de canales que no son la gran coalición
Caso 1
Como el ejemplo que presentamos antes no es muy interesante, mejor vamos a suponer que tenemos datos de 3 canales y su tabla de frecuencias (es decir, la cantidad de conversiones para cada combinación de canales) es la siguiente. Recordemos que el orden no importa así que acá decir C1,C2 o C2,C1 es lo mismo ya que en ambos casos presenciamos una colaboración de ambos canales.
Para calcular la solución de Shapley, armamos una tabla con las permutaciones de la gran coalición, es decir la coalición donde participan todos los canales.
Luego, vamos calculando paso a paso la contribución marginal de cada canal a la gran coalición. Para eso, calculamos la diferencia entre las conversiones con ese canal presente y ausente.
Vamos con un ejemplo. En el primer caso lo que aporta C1 por ser el primer canal es la diferencia entre la coalición que tiene a C1 y la coalición nula o vacía. Es decir, 1 conversión. Luego calculamos la diferencia entre esta coalición que solo tiene a C1 y la que tiene a C1 y a C2. Esa diferencia es la contribución marginal de C2. Y por último, la diferencia entre la coalición con C1 y C2 y la que tiene a los 3 canales. Esa es la contribución marginal de C3. Así sucesivamente para cada permutación. Esto es lo mismo que hacíamos cuando el taxista Shapley pedía que cada persona agarrara la caja y pusiera lo que faltaba para completar el viaje hasta su casa.
Una vez que tenemos estos resultados, solo queda sumar cada columna y dividir por 6 para obtener la contribución de cada canal a la suma total de conversiones de la gran coalición (que en este caso es 12).
Si sumamos, las conversiones atribuidas a C1, C2 y C3 nos da 12, que es la cantidad de conversiones de la gran coalición (cuando están todos los canales juntos) Sin embargo, acá tenemos un tema. Cuando hicimos el cálculo de cómo dividir el taxi, tenía sentido que el resultado final que cada persona pagara sumara al total del viaje hasta el último punto (los $400 que salía ir a lo de C). Sin embargo, cuando estamos hablando de conversiones, no tiene sentido que solo atribuyamos las conversiones de la gran coalición ya que las intermedias también nos importan. Esperamos un modelo que nos atribuya las 28 conversiones que tuvimos y no solo las 12 de la gran coalición.
Esto nos da pie al próximo punto que es cómo flexibilizar este modelo para adaptarlo a unos supuestos más acorde al marketing digital.
Variaciones en el modelo
Repasando, hasta el momento dijimos:
- Los canales son jugadores
- Colaboran para obtener conversiones
- No importa el orden en que colaboran ya que solo medimos la presencia o no de un canal en la ruta de conversión de un usuario
- Asumimos implícitamente que sólo nos interesan los caminos que terminan en conversiones (los otros los podemos descartar).
Además, lo último que planteamos es que hay una diferencia en cómo se concibe a la gran coalición en el planteo original de Shapley y cómo la concebimos en marketing. Esta diferencia en realidad tiene que ver con una diferencia conceptual en lo que representa la gran coalición.
Para ponerlo en palabras simples: en los juegos cooperativos tradicionales que Shapley busca resolver, el todo es la suma de las partes. Es decir, la gran coalición es la suma de las sub coaliciones anteriores. O sea, el viaje en taxi hasta la casa de C, es la suma de los viajes hasta las casas de A y B.
Sin embargo, en marketing digital, muy frecuentemente la suma de las partes es más que el todo. Es decir, la gran coalición solo es un caso más de las posibles combinaciones de canales de un usuario antes de convertir y generalmente es la menos frecuente.
Esto nos lleva a tener que hacer ligeras modificaciones al modelo y su forma de resolución que las vamos a ver a continuación separadas en 2 problemas: conversiones completas y la pirámide inversa.
Conversiones completas
Siguiendo con lo que planteamos antes, a la hora de calcular las conversiones obtuvimos un total por canal pero que al dividirlo por 6 solo nos atribuye las conversiones de la gran coalición, es decir de los recorridos donde están presentes todos los canales mientras que nuestro interés es atribuir todas las conversiones, hayan pasado por 1, 2 o 3 canales.
Para eso, lo que podemos hacer es obtener de esa tabla la proporción que corresponde a cada canal y luego multiplicar esa proporción por la cantidad de conversiones totales del período.
Otra solución posible sería en vez de hacer este ejercicio solo para la gran coalición, realizarlo para toda las combinatorias posibles de canales. Vamos a ver un ejemplo directamente que se entiende fácil.
Ahora bien, vemos que los resultados no son exactamente iguales ya que en el segundo caso estamos dando un poco más de peso a las diferencias que hay en la importancia de cada canal en las sub coaliciones (es decir las coaliciones que no son la gran coalición y, particularmente, las que tienen 2 canales).
Esta última solución sería más apropiada para marketing y para la consideración que hacemos de las sub coaliciones y la gran coalición pero muchas veces para simplificar los cálculos se utiliza el otro método ya que las diferencias no son la gran cosa y las cuentas son mucho más fáciles (¡recordemos una vez más que acá solo tenemos 3 canales!).
Pirámide inversa
Antes planteamos una diferencia significativa entre Shapley aplicado a los problemas tradicionales de juegos cooperativos y Shapley aplicado a marketing digital. Tiene que ver con la forma de la pirámide de valores. Tradicionalmente (podemos tomar como ejemplo el problema del taxi), el valor más alto siempre está en la punta de la pirámide, es decir en la gran coalición, ya que esta es la suma de las sub coaliciones precedentes.
Sin embargo, en marketing esto no sucede así. Dijimos que la gran coalición no es más que una posibilidad entre muchas y en general la menos frecuente. De ahí la inversión de la pirámide. En marketing digital es mucho más probable que tengamos datos parecidos a estos:
Veamos qué sucede cuando seguimos la misma metodología para estos datos. El proceso es el mismo (podés hacerlo en casa si te animás). Agarramos la gran coalición, calculamos todas sus permutaciones (hacelo en orden así no te morfás ninguna) y luego vamos calculando el aporte de cada jugador (o canal) en orden como la diferencia entre el valor si está el canal o si no está.
¿Y ahora? ¿Qué hacemos con la atribución -5?
Al aplicar Shapley a datos con forma de pirámide inversa, puede ocurrir que el resultado que obtengamos sea negativo. Tenemos 3 formas de resolver este problema. Vamos a ver cada una de las soluciones y cuál sería la recomendada.
1. Gran coalición como suma de sub coaliciones
La primera solución sería transformar los datos de entrada para que el problema deje de ser una pirámide inversa y pase a tener la forma clásica de los juegos cooperativos de Shapley. ¿Cómo hacemos esto? Fácil, haciendo que el todo sea la suma de las partes. Es decir, que cada gran coalición sea la suma de las sub coaliciones que la conforman.
Si antes teníamos esto:
Lo transformamos así:
Y obtenemos lo siguiente:
Ahora sí, tenemos la forma de pirámide que buscábamos. Con esto podemos calcular Shapley sin miedo a los valores negativos.
¿Qué pensás de este resultado? Parece un poco desproporcionado lo que se lleva C3, ¿no?
Este enfoque tiene el problema de que para mantener la forma de la pirámide la gran coalición tiene mucho peso y eso hace que la iteración donde cada canal es el último se lleve una gran cantidad de conversiones. Por ende, incluso un canal como C3 que debería ser irrelevante se lleva una proporción grande de las conversiones porque esas 2 iteraciones lo tiran para arriba. En definitiva, termina siendo muy pareja la distribución entre los canales, lo cual puede no reflejar realmente la importancia de cada uno.
Pasemos a otra posible solución.
2. Maximizar con 0
La segunda solución que vamos a ver es la que a priori parece más sencilla. En vez de soportar valores negativos de atribución a cada canal, maximizamos entre el resultado de Shapley y 0. Es decir, si hay un valor negativo lo reemplazamos por 0.
Esta solución parece un poco más justa con respecto a C3 pero también un poco extrema. Sobre todo teniendo en cuenta que C3 tiene por lo menos 2 conversiones que seguro le corresponden porque no hubo ningún otro canal en el recorrido del usuario.
Vamos a ver la última solución a ver si nos convence más.
3. Maximizar en cada permutación
La tercera solución es maximizar con 0 pero en vez de hacerlo al final, hacerlo en cada permutación de la gran coalición. De esta manera, nos aseguramos que en vez de plantear que un canal tiene una contribución negativa, simplemente decimos que no contribuye a esa permutación. Deberíamos llegar a un equilibrio entre ser muy “bondadosos” con C3 y castigarlo totalmente sin siquiera reconocerle las conversiones propias.
Probemos:
Esto parece tener un poco más de sentido, ¿no? Al canal 3 le reconocemos las 2 conversiones cuando solo está presente ese canal y poco más ya que su aporte parece ser bastante escaso en el resto de los recorridos.
Recapitulando
Vimos muchas cosas así que es momento de mirar para atrás. Arrancamos diciendo que el valor de Shapley es una solución a juegos cooperativos donde determinados jugadores (que en nuestro caso son canales) contribuyen a un objetivo y se reparten el premio (en nuestro caso, las conversiones en el sitio web).
Vimos cómo esta solución parte de algunos supuestos. Por ejemplo, que el orden no importa ya que solo tomamos en cuenta la presencia de un canal en un recorrido. También vimos que la manera de resolver el problema era calculando la contribución marginal de cada canal en todas las permutaciones de la gran coalición (es decir, cuando están todos los canales juntos). Además, vimos que hay que tener cuidado con la cantidad de jugadores / canales porque muy rápidamente se nos puede ir de escala.
Lo primero que señalamos es el problema de las conversiones completas: que el resultado solamente nos arroja una proporción entre los canales y después tenemos que multiplicar esa proporción por las conversiones totales para saber el resultado para cada canal.
Aparte de eso vimos el problema de la pirámide inversa. Es decir, que en marketing las parte son más que el todo, o sea que la gran coalición suele tener muchas menos conversiones que las sub coaliciones. Vimos 3 maneras de lidiar con ese problema y llegamos a la conclusión (espero que vos también) que la mejor manera de resolverlo es la tercera. En cada permutación de la gran coalición cuando calculamos la contribución marginal de un canal maximizamos con 0 para eliminar los valores negativos.
Espero que esto te haya dado un buen panorama de como se utiliza Shapley en atribución para marketing digital y que me acompañes a la próxima parada: Markov.