Introducción
En un recorrido típico del cliente ‘desde pensar hasta comprar’, un cliente pasa por múltiples puntos de contacto antes de concentrarse en el producto final para comprar. Esto es aún más prominente en el caso de las ventas de comercio electrónico. Es relativamente más fácil rastrear cuáles son los diferentes puntos de contacto que ha encontrado el cliente antes de realizar la compra final.
Fuente: MarTech Today
A medidaLa "medida" es un concepto fundamental en diversas disciplinas, que se refiere al proceso de cuantificar características o magnitudes de objetos, fenómenos o situaciones. En matemáticas, se utiliza para determinar longitudes, áreas y volúmenes, mientras que en ciencias sociales puede referirse a la evaluación de variables cualitativas y cuantitativas. La precisión en la medición es crucial para obtener resultados confiables y válidos en cualquier investigación o aplicación práctica.... que el marketing se mueve cada vez más hacia el lado de las cosas impulsado por el consumidor, identificar los canales correctos para los clientes objetivo se ha vuelto fundamental para las empresas. Esto ayuda a las empresas a optimizar su inversión en marketing y dirigirse a los clientes adecuados en los lugares adecuados.
La mayoría de las veces, las empresas suelen invertir en el último canal que encuentran los clientes antes de realizar la compra final. Sin embargo, este puede no ser siempre el enfoque correcto. Hay varios canales que preceden a ese canal que eventualmente impulsan la conversión del cliente. El concepto subyacente para estudiar este comportamiento se conoce como «modelo de atribución multicanal».
En este artículo, analizamos qué es la atribución de canal y cómo se relaciona con el concepto de cadenas de Markov. También tomaremos un estudio de caso de una empresa de comercio electrónico para comprender cómo funciona este concepto, tanto teórica como prácticamente (usando R).
Tabla de contenido
- ¿Qué es la atribución de canal?
- Cadenas de Markov
- Efecto de eliminación
- Estudio de caso de una empresa de comercio electrónico
- Implementación en R
¿Qué es la atribución de canal?
Google Analytics ofrece un conjunto estándar de reglas para el modelado de atribuciones. Según Google, “Un modelo de atribución es la regla, o conjunto de reglas, que determina cómo se asigna el crédito por las ventas y las conversiones a los puntos de contacto en las rutas de conversión. Por ejemplo, el modelo Última interacción en Analytics asigna el 100% de crédito a los puntos de contacto finales (es decir, los clics) que preceden inmediatamente a las ventas o conversiones. Por el contrario, el modelo de Primera interacción asigna el 100% del crédito a los puntos de contacto que inician las rutas de conversión «.
Veremos el último modelo de interacción y el primer modelo de interacción más adelante en este artículo. Antes de eso, tomemos un pequeño ejemplo y comprendamos un poco más la atribución del canal. Digamos que tenemos un diagrama de transición como se muestra a continuación:
En el escenario anterior, un cliente puede comenzar su viaje a través del canal ‘C1’ o el canal ‘C2’. La probabilidad de comenzar con C1 o C2 es del 50% (o 0.5) cada uno. Calculemos primero la probabilidad general de conversión y luego vayamos más allá para ver el efecto de cada uno de los canales.
P (conversión) = P (C1 -> C2 -> C3 -> Conversión) + P (C2 -> C3 -> Conversión)
= 0,5 * 0,5 * 1 * 0,6 + 0,5 * 1 * 0,6
= 0,15 + 0,3
= 0,45
Cadenas de Markov
Las cadenas de Markov son un proceso que mapea el movimiento y proporciona una distribución de probabilidad para pasar de un estado a otro. Una cadena de Markov se define por tres propiedades:
- Espacio de Estados – conjunto de todos los estados en los que el proceso podría existir potencialmente
- Operador de transición –La probabilidad de pasar de un estado a otro
- Distribución de probabilidad del estado actual – distribución de probabilidad de estar en cualquiera de los estados al inicio del proceso
Conocemos las etapas por las que podemos pasar, la probabilidad de movernos de cada uno de los caminos y conocemos el estado actual. Esto se parece a las cadenas de Markov, ¿no?
Efecto de eliminación
Esta es, de hecho, una aplicación de cadenas de Markov. Vamos a volver a esto más adelante; sigamos nuestro ejemplo por ahora. Si tuviéramos que averiguar cuál es la contribución del canal 1 en el viaje de nuestro cliente desde el principio hasta el final de la conversión, utilizaremos el principio de efecto de eliminación. El principio del efecto de eliminación dice que si queremos encontrar la contribución de cada canal en el recorrido del cliente, podemos hacerlo eliminando cada canal y ver cuántas conversiones están ocurriendo sin que ese canal esté en su lugar.
Por ejemplo, supongamos que tenemos que calcular la contribución del canal C1. Eliminaremos el canal C1 del modelo y veremos cuántas conversiones están sucediendo sin C1 en la imagen, es decir, conversión total cuando todos los canales están intactos. Calculemos para el canal C1:
P (Conversión después de eliminar C1) = P (C2 -> C3 -> Convertir)
= 0,5 * 1 * 0,6
= 0,3
El 30% de las interacciones con el cliente se pueden convertir sin que el canal C1 esté en su lugar; mientras que con C1 intacto, se pueden convertir el 45% de interacciones. Entonces, el efecto de eliminación de C1 es
0,3 / 0,45 = 0,666.
El efecto de eliminación de C2 y C3 es 1 (puede intentar calcularlo, pero piense intuitivamente. Si elimináramos C2 o C3, ¿podríamos completar alguna conversión?).
Esta es una aplicación muy útil de las cadenas de Markov. En el caso anterior, todos los canales – C1, C2, C3 (en diferentes etapas) – se denominan estados de transición; mientras que la probabilidad de pasar de un canal a otro se llama probabilidad de transición.
El viaje del cliente, que es una secuencia de canales, se puede considerar como una cadena en un gráfico de Markov dirigido donde cada vértice es un estado (canal / punto de contacto), y cada borde representa la probabilidad de transición de pasar de un estado a otro. Dado que la probabilidad de alcanzar un estado depende solo del estado anterior, se puede considerar como una cadena de Markov sin memoria.
Estudio de caso de una empresa de comercio electrónico
Tomemos un caso de estudio de la vida real y veamos cómo podemos implementar el modelo de atribución de canal.
Una empresa de comercio electrónico realizó una encuesta y recopiló datos de sus clientes. Esto puede considerarse como población representativa. En la encuesta, la empresa recopiló datos sobre los distintos puntos de contacto que visitan los clientes antes de comprar finalmente el producto en su sitio web.
En total, hay 19 canales donde los clientes pueden encontrar el producto o la publicidad del producto. Después de los 19 canales, hay tres casos más:
- # 20 – el cliente ha decidido qué dispositivo comprar;
- # 21 – el cliente ha realizado la compra final y;
- # 22 – el cliente aún no se ha decidido.
Las categorías generales de canales son las siguientes:
Categoría | Canal |
Sitio web (1,2,3) | Sitio web de la empresa o sitio web de la competencia |
Informes de investigación (4,5,6,7,8) | Informes de investigación de asesoramiento de la industria |
Online / Reseñas (9,10) | Búsquedas orgánicas, foros |
Comparación de precios (11) | Agregadores |
Amigos (12,13) | Red social |
Experto (14) | Experto en línea o fuera de línea |
Comercios (15,16,17) | Tiendas físicas |
Misc. (18,19) | Otros, como campañas promocionales en varias ubicaciones. |
Ahora, necesitamos ayudar a la empresa de comercio electrónico a identificar la estrategia adecuada para invertir en canales de marketing. ¿En qué canales debería centrarse? ¿En qué canales debería invertir la empresa? Resolveremos esto usando R en la siguiente sección.
Implementación usando R
Sigamos adelante e intentemos la implementación en R y verifiquemos los resultados. Puede descargar el conjunto de datos aquí y seguir a medida que avanzamos.
#Install the libraries install.packages("ChannelAttribution") install.packages("ggplot2") install.packages("reshape") install.packages("dplyr") install.packages("plyr") install.packages("reshape2") install.packages("markovchain") install.packages("plotly") #Load the libraries library("ChannelAttribution") library("ggplot2") library("reshape") library("dplyr") library("plyr") library("reshape2") library("markovchain") library("plotly") #Read the data into R > channel = read.csv("Channel_attribution.csv", header = T) > head(channel)
Producción:
R05A.01 | R05A.02 | R05A.03 | R05A.04 | … .. | R05A.18 | R05A.19 | R05A.20 |
dieciséis | 4 | 3 | 5 | N / A | N / A | N / A | |
2 | 1 | 9 | 10 | N / A | N / A | N / A | |
9 | 13 | 20 | dieciséis | N / A | N / A | N / A | |
8 | 15 | 20 | 21 | N / A | N / A | N / A | |
dieciséis | 9 | 13 | 20 | N / A | N / A | N / A | |
1 | 11 | 8 | 4 | N / A | N / A | N / A |
Haremos un poco de procesamiento de datos para llevarlos a una etapa en la que podamos usarlos como entrada en el modelo. Luego, identificaremos qué recorridos del cliente han pasado a la conversión final (en nuestro caso, todos los recorridos han alcanzado el estado de conversión final).
Crearemos una ‘ruta’ variableEn estadística y matemáticas, una "variable" es un símbolo que representa un valor que puede cambiar o variar. Existen diferentes tipos de variables, como las cualitativas, que describen características no numéricas, y las cuantitativas, que representan cantidades numéricas. Las variables son fundamentales en experimentos y estudios, ya que permiten analizar relaciones y patrones entre diferentes elementos, facilitando la comprensión de fenómenos complejos.... en un formato específico que se puede alimentar como entrada al modelo. Además, averiguaremos las ocurrencias totales de cada ruta usando el paquete ‘dplyr’.
> for(row in 1:nrow(channel)) { if(21 %in% channel[row,]){channel$convert[row] = 1} } > column = colnames(channel) > channel$path = do.call(paste, c(channel[column], sep = " > ")) > head(channel$path) [1] "16 > 4 > 3 > 5 > 10 > 8 > 6 > 8 > 13 > 20 > 21 > NA > NA > NA > NA > NA > NA > NA > NA > NA > NA > 1" [2] "2 > 1 > 9 > 10 > 1 > 4 > 3 > 21 > NA > NA > NA > NA > NA > NA > NA > NA > NA > NA > NA > NA > NA > 1" [3] "9 > 13 > 20 > 16 > 15 > 21 > NA > NA > NA > NA > NA > NA > NA > NA > NA > NA > NA > NA > NA > NA > NA > 1" [4] "8 > 15 > 20 > 21 > NA > NA > NA > NA > NA > NA > NA > NA > NA > NA > NA > NA > NA > NA > NA > NA > NA > 1" [5] "16 > 9 > 13 > 20 > 21 > NA > NA > NA > NA > NA > NA > NA > NA > NA > NA > NA > NA > NA > NA > NA > NA > 1" [6] "1 > 11 > 8 > 4 > 9 > 21 > NA > NA > NA > NA > NA > NA > NA > NA > NA > NA > NA > NA > NA > NA > NA > 1"
> for(row in 1:nrow(channel)) { channel$path[row] = strsplit(channel$path[row], " > 21")[[1]][1] } > channel_fin = channel[,c(23,22)] > channel_fin = ddply(channel_fin,~path,summarise, conversion= sum(convert)) > head(channel_fin)
Producción:
sendero | conversión |
1> 1> 1> 20 | 1 |
1> 1> 12> 12 | 1 |
1> 1> 14> 13> 12> 20 | 1 |
1> 1> 3> 13> 3> 20 | 1 |
1> 1> 3> 17> 17 | 1 |
> 1> 6> 1> 12> 20> 12 | 1 |
> Data = channel_fin > head(Data)
Producción:
sendero | conversión |
1> 1> 1> 20 | 1 |
1> 1> 12> 12 | 1 |
1> 1> 14> 13> 12> 20 | 1 |
1> 1> 3> 13> 3> 20 | 1 |
1> 1> 3> 17> 17 | 1 |
1> 1> 6> 1> 12> 20> 12 | 1 |
Ahora, crearemos un modelo heurístico y un modelo de Markov, combinaremos los dos y luego comprobaremos los resultados finales.
> H <- heuristic_models(Data, 'path', 'conversion', var_value="conversion") > H
Producción:
Nombre del Canal | first_touch_conversions | … .. | conversiones_touch_lineales | linear_touch_value |
1 | 130 | 73.773661 | 73.773661 | |
20 | 0 | 473.998171 | 473.998171 | |
12 | 75 | 76.127863 | 76.127863 | |
14 | 34 | 56.335744 | 56.335744 | |
13 | 320 | 204.039552 | 204.039552 | |
3 | 168 | 117.609677 | 117.609677 | |
17 | 31 | 76.583847 | 76.583847 | |
6 | 50 | 54.707124 | 54.707124 | |
8 | 56 | 53.677862 | 53.677862 | |
10 | 547 | 211.822393 | 211.822393 | |
11 | 66 | 107.109048 | 107.109048 | |
dieciséis | 111 | 156.049086 | 156.049086 | |
2 | 199 | 94.111668 | 94.111668 | |
4 | 231 | 250.784033 | 250.784033 | |
7 | 26 | 33.435991 | 33.435991 | |
5 | 62 | 74.900402 | 74.900402 | |
9 | 250 | 194.07169 | 194.07169 | |
15 | 22 | 65.159225 | 65.159225 | |
18 | 4 | 5.026587 | 5.026587 | |
19 | 10 | 12.676375 | 12.676375 |
> M <- markov_model(Data, 'path', 'conversion', var_value="conversion", order = 1)> M
Producción:
Nombre del Canal | conversión_total | total_conversion_value |
1 | 82.482961 | 82.482961 |
20 | 432.40615 | 432.40615 |
12 | 83,942587 | 83,942587 |
14 | 63.08676 | 63.08676 |
13 | 195.751556 | 195.751556 |
3 | 122.973752 | 122.973752 |
17 | 83.866724 | 83.866724 |
6 | 63.280828 | 63.280828 |
8 | 61.016115 | 61.016115 |
10 | 209.035208 | 209.035208 |
11 | 118.563707 | 118.563707 |
dieciséis | 158.692238 | 158.692238 |
2 | 98.067199 | 98.067199 |
4 | 223.709091 | 223.709091 |
7 | 41.919248 | 41.919248 |
5 | 81.865473 | 81.865473 |
9 | 179.483376 | 179.483376 |
15 | 70.360777 | 70.360777 |
18 | 5.950827 | 5.950827 |
19 | 15.545424 | 15.545424 |
Antes de seguir adelante, comprendamos primero qué significan algunos de los términos que hemos visto anteriormente.
Conversión de primer toque: La conversión que ocurre a través del canal cuando ese canal es el primer punto de contacto para un cliente. Se otorga el 100% de crédito al primer punto de contacto.
Conversión de último toque: La conversión que ocurre a través del canal cuando ese canal es el último punto de contacto para un cliente. Se otorga el 100% de crédito al último punto de contacto.
Conversión táctil lineal: Todos los canales / puntos de contacto reciben el mismo crédito en la conversión.
Volviendo al código R, fusionemos los dos modelos y representemos el resultado de una manera visualmente atractiva que sea más fácil de entender.
# Merges the two data frames on the "channel_name" column. R <- merge(H, M, by='channel_name') # Select only relevant columns R1 <- R[, (colnames(R) %in %c('channel_name', 'first_touch_conversions', 'last_touch_conversions', 'linear_touch_conversions', 'total_conversion'))] # Transforms the dataset into a data frame that ggplot2 can use to plot the outcomes R1 <- melt(R1, id='channel_name')
# Plot the total conversions ggplot(R1, aes(channel_name, value, fill = variable)) + geom_bar(stat="identity", position='dodge') + ggtitle('TOTAL CONVERSIONS') + theme(axis.title.x = element_text(vjust = -2)) + theme(axis.title.y = element_text(vjust = +2)) + theme(title = element_text(size = 16)) + theme(plot.title=element_text(size = 20)) + ylab("")
El escenario es claramente visible en el gráfico anterior. Desde la perspectiva de la primera conversión táctil, el canal 10, el canal 13, el canal 2, el canal 4 y el canal 9 son bastante importantes; mientras que desde la perspectiva del último toque, el canal 20 es el más importante (en nuestro caso, debería ser porque el cliente ha decidido qué producto comprar). En términos de conversión táctil lineal, el canal 20, el canal 4 y el canal 9 están resultando importantes. Desde la perspectiva de las conversiones totales, los canales 10, 13, 20, 4 y 9 son bastante importantes.
Notas finales
En el gráfico anterior hemos podido averiguar cuáles son los canales importantes en los que debemos centrarnos y cuáles pueden descartarse o ignorarse. Este caso nos da una muy buena idea de la aplicación de los modelos de cadena de Markov en el espacio de análisis de clientes. Las empresas de comercio electrónico ahora pueden crear con confianza su estrategia de marketing y distribuir su presupuesto de marketing utilizando información basada en datos.
Biografía del autor:
Este artículo fue contribuido por Analítica perceptiva. Chaitanya Sagar, Prudhvi Potuganti y Saneesh Veetil desarrollaron este artículo.
Perceptive Analytics proporciona análisis de datos, visualización de datos, inteligencia empresarial y servicios de informes para las industrias de comercio electrónico, venta minorista, atención médica y farmacéutica. Nuestra lista de clientes incluye compañías que cotizan en Fortune 500 y NYSE en EE. UU. E India.