Introdução
Em uma típica jornada do cliente de “pensar para comprar”, um cliente passa por vários pontos de contato antes de se concentrar no produto final para comprar. Isso é ainda mais proeminente no caso de vendas de e-commerce.. É relativamente mais fácil rastrear quais são os diferentes pontos de contato que o cliente encontrou antes de fazer a compra final..
Fonte: MarTech hoje
UMA mediro "medir" É um conceito fundamental em várias disciplinas, que se refere ao processo de quantificação de características ou magnitudes de objetos, Fenômenos ou situações. Na matemática, Usado para determinar comprimentos, Áreas e volumes, enquanto nas ciências sociais pode se referir à avaliação de variáveis qualitativas e quantitativas. A precisão da medição é crucial para obter resultados confiáveis e válidos em qualquer pesquisa ou aplicação prática.... que el marketing se mueve cada vez más hacia el lado de las cosas impulsado por el consumidor, Identificar os canais certos para os clientes-alvo tornou-se fundamental para as empresas. Isso ajuda as empresas a otimizar seus gastos com marketing e segmentar os clientes certos nos lugares certos..
A maioria das vezes, as empresas costumam investir no último canal que os clientes encontram antes de fazer a compra final. Porém, isso pode nem sempre ser a abordagem certa. Existem vários canais que precedem esse canal que eventualmente impulsionam a conversão do cliente.. O conceito subjacente para estudar este comportamento é conhecido como “modelo de atribuição multicanal”.
Neste artigo, discutimos o que é atribuição de canal e como ela se relaciona com o conceito de cadeias de Markov. Também faremos um estudo de caso de uma empresa de e-commerce para entender como funciona esse conceito., tanto teoricamente quanto praticamente (usando R).
Tabela de conteúdo
- O que é atribuição de canal?
- Cadeias de Markov
- efeito de remoção
- Estudo de caso de uma empresa de comércio eletrônico
- Implementação em R
O que é atribuição de canal?
O Google Analytics oferece um conjunto padrão de regras para modelagem de atribuição.. De acordo com o Google, “Um modelo de atribuição é a regra, ou conjunto de regras, que determina como o crédito para vendas e conversões é atribuído aos pontos de contato nos caminhos de conversão. Por exemplo, o modelo Última interação no Analytics atribui o 100% crédito aos pontos de contacto finais (quer dizer, os cliques) que precedem imediatamente as vendas ou conversões. Pelo contrário, o modelo de Primeira Interação atribui o 100% crédito para pontos de contato que iniciam caminhos de conversão “.
Veremos o último modelo de interação e o primeiro modelo de interação posteriormente neste artigo.. Antes disso, Vamos dar um pequeno exemplo e entender um pouco mais a atribuição de canal. Digamos que temos um diagrama de transição como mostrado abaixo:
No cenário acima, um cliente pode iniciar sua jornada pelo canal 'C1’ ou canal 'C2'. A probabilidade de começar com C1 ou C2 é 50% (o 0.5) as fórmulas que geram os conceitos de negócios a partir dos dados brutos. Vamos primeiro calcular a probabilidade geral de conversão e depois ir mais longe para ver o efeito de cada um dos canais.
P (conversão) = P (C1 -> C2 -> C3 -> Conversão) + P (C2 -> C3 -> Conversão)
= 0,5 * 0,5 * 1 * 0,6 + 0,5 * 1 * 0,6
= 0,15 + 0,3
= 0,45
Cadeias de Markov
As cadeias de Markov são um processo que mapeia o movimento e fornece uma distribuição de probabilidade para passar de um estado para outro.. Uma cadeia de Markov é definida por três propriedades:
- Espaço de Estados – conjunto de todos os estados em que o processo poderia existir potencialmente
- operador de transição –A probabilidade de passar de um estado para outro
- Distribuição de probabilidade do estado atual – distribuição de probabilidade de estar em qualquer um dos estados no início do processo
Conhecemos as fases pelas quais podemos passar, a probabilidade de se mover de cada um dos caminhos e sabemos o estado atual. Isso parece cadeias de Markov, não?
efeito de remoção
Esta é, de fato, uma aplicação de cadeias de Markov. Voltaremos a isso mais tarde; vamos seguir nosso exemplo por enquanto. Se descobrirmos qual é a contribuição do canal 1 na jornada do nosso cliente do início ao fim da conversão, Usaremos o princípio de efeito de remoção. O princípio do efeito de eliminação diz que se quisermos encontrar a contribuição de cada canal na jornada do cliente, podemos fazer isso removendo cada canal e ver quantas conversões estão acontecendo sem que esse canal esteja em vigor.
Por exemplo, suponha que temos que calcular a contribuição do canal C1. Vamos remover o canal C1 do modelo e ver quantas conversões estão acontecendo sem C1 na imagem, quer dizer, conversão total quando todos os canais estão intactos. Vamos calcular para o canal C1:
P (Conversão após remover C1) = P (C2 -> C3 -> Transformar-se em)
= 0,5 * 1 * 0,6
= 0,3
o 30% das interações com o cliente podem ser convertidas sem que o canal C1 esteja em vigor; enquanto com C1 intacto, pode ser convertido em 45% de interações. Então, o efeito de remoção de C1 é
0,3 / 0,45 = 0,666.
O efeito de remoção de C2 e C3 é 1 (você pode tentar calcular, mas pense intuitivamente. Eliminamos C2 ou C3, poderíamos concluir alguma conversão?).
Esta é uma aplicação muito útil das cadeias de Markov.. No caso acima, todos os canais – C1, C2, C3 (em diferentes estágios) – são chamados estados de transição; enquanto a probabilidade de passar de um canal para outro é chamada probabilidade de transição.
A jornada do cliente, o que é uma sequência de canais, pode ser pensado como uma cadeia em um grafo de Markov dirigido onde cada vértice é um estado (canal / Ponto de contacto), e cada aresta representa a probabilidade de transição de um estado para outro. Como a probabilidade de atingir um estado depende apenas do estado anterior, pode ser pensado como uma cadeia de Markov sem memória.
Estudo de caso de uma empresa de comércio eletrônico
Vamos fazer um estudo de caso real e ver como podemos implementar o modelo de atribuição de canal.
Uma empresa de comércio eletrônico realizou uma pesquisa e coletou dados de seus clientes. Esta pode ser considerada como uma população representativa.. Na pesquisa, a empresa coletou dados sobre os vários pontos de contato que os clientes visitam antes de comprar o produto em seu site.
No total, existem 19 canais onde os clientes podem encontrar o produto ou publicidade do produto. Depois de 19 canais, há mais três casos:
- # 20 – o cliente decidiu qual dispositivo comprar;
- # 21 – o cliente fez a compra final e;
- # 22 – o cliente ainda não decidiu.
As categorias gerais de canais são as seguintes:
Categoria | Canal |
Site web (1,2,3) | Site da empresa ou site do concorrente |
relatórios de investigação (4,5,6,7,8) | Relatórios de pesquisa consultiva da indústria |
Conectados / Avaliações (9,10) | buscas orgânicas, fóruns |
comparação de preços (11) | Agregadores |
Amigos (12,13) | Vermelho social |
Especialista (14) | Especialista online ou offline |
Lojas (15,16,17) | lojas físicas |
Diversos. (18,19) | Outros, como campañas promocionales en varias ubicaciones. |
Agora, 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. Você pode baixar o conjunto de dados aqui y seguir a medida que avanzamos.
#Install the libraries install.packages("ChannelAttribution") install.packages("ggplot2") install.packages("remodelar") install.packages("dplyr") install.packages("plyr |") install.packages("remodelar2") install.packages("markovchain") install.packages("conspirar") #Load the libraries library("ChannelAttribution") biblioteca("ggplot2") biblioteca("remodelar") biblioteca("dplyr") biblioteca("plyr |") biblioteca("remodelar2") biblioteca("markovchain") biblioteca("conspirar") #Read the data into R > channel = read.csv("Channel_attribution.csv", cabeçalho = T) > cabeça(channel)
Produção:
R05A.01 | R05A.02 | R05A.03 | R05A.04 | … .. | R05A.18 | R05A.19 | R05A.20 |
dezesseis | 4 | 3 | 5 | N / UMA | N / UMA | N / UMA | |
2 | 1 | 9 | 10 | N / UMA | N / UMA | N / UMA | |
9 | 13 | 20 | dezesseis | N / UMA | N / UMA | N / UMA | |
8 | 15 | 20 | 21 | N / UMA | N / UMA | N / UMA | |
dezesseis | 9 | 13 | 20 | N / UMA | N / UMA | N / UMA | |
1 | 11 | 8 | 4 | N / UMA | N / UMA | N / UMA |
Haremos un poco de procesamiento de datos para llevarlos a una etapa en la que podamos usarlos como entrada en el modelo. Mais tarde, identificaremos quais jornadas do cliente passaram para a conversão final (no nosso caso, todas as travessias atingiram o estado de conversão final).
Vamos criar uma 'rota’ variávelEm estatística e matemática, uma "variável" é um símbolo que representa um valor que pode mudar ou variar. Existem diferentes tipos de variáveis, e qualitativo, que descrevem características não numéricas, e quantitativo, representando quantidades numéricas. Variáveis são fundamentais em experimentos e estudos, uma vez que permitem a análise de relações e padrões entre diferentes elementos, facilitando a compreensão de fenômenos complexos.... en un formato específico que se puede alimentar como entrada al modelo. O que mais, vamos descobrir o total de ocorrências de cada rota usando o pacote 'dplyr'.
> para(enfileirar 1:agora(channel)) { E se(21 %em% canal[fileira,]){canal$converter[fileira] = 1} } > coluna = nomes das colunas(channel) > canal$caminho = do.call(colar, c(channel[coluna], set = " > ")) > cabeça(canal$caminho) [1] "16 > 4 > 3 > 5 > 10 > 8 > 6 > 8 > 13 > 20 > 21 > N / D > N / D > N / D > N / D > N / D > N / D > N / D > N / D > N / D > N / D > 1" [2] "2 > 1 > 9 > 10 > 1 > 4 > 3 > 21 > N / D > N / D > N / D > N / D > N / D > N / D > N / D > N / D > N / D > N / D > N / D > N / D > N / D > 1" [3] "9 > 13 > 20 > 16 > 15 > 21 > N / D > N / D > N / D > N / D > N / D > N / D > N / D > N / D > N / D > N / D > N / D > N / D > N / D > N / D > N / D > 1" [4] "8 > 15 > 20 > 21 > N / D > N / D > N / D > N / D > N / D > N / D > N / D > N / D > N / D > N / D > N / D > N / D > N / D > N / D > N / D > N / D > N / D > 1" [5] "16 > 9 > 13 > 20 > 21 > N / D > N / D > N / D > N / D > N / D > N / D > N / D > N / D > N / D > N / D > N / D > N / D > N / D > N / D > N / D > N / D > 1" [6] "1 > 11 > 8 > 4 > 9 > 21 > N / D > N / D > N / D > N / D > N / D > N / D > N / D > N / D > N / D > N / D > N / D > N / D > N / D > N / D > N / D > 1"
> para(enfileirar 1:agora(channel))
{
canal$caminho[fileira] = strsplit(canal$caminho[fileira], " > 21")[[1]][1]
}
> canal_fin = canal[,c(23,22)]
> channel_fin = ddply(fin_canal,~caminho,resumir, conversão= soma(converter))
> cabeça(fin_canal)
Produção:
caminho | conversão |
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 |
> Dados = channel_fin > cabeça(Dados)
Produção:
caminho | conversão |
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 |
Agora, vamos criar um modelo heurístico e um modelo de Markov, vamos combinar os dois e depois verificar os resultados finais.
> H <- heuristic_models(Dados, 'caminho', 'conversão', valor_var ="conversão") > H
Produção:
nome do canal | first_touch_conversions | … .. | linear_touch_conversions | 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 | |
dezesseis | 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(Dados, 'caminho', 'conversão', valor_var ="conversão", ordem = 1)> M
Produção:
nome do canal | total_conversion | valor_conversão_total |
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 |
dezesseis | 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 em frente, Vamos primeiro entender o que significam alguns dos termos que vimos acima..
Conversão de primeiro toque: A conversão que ocorre em todo o canal quando esse canal é o primeiro ponto de contato para um cliente. é concedido o 100% crédito ao primeiro contato.
Conversão de último toque: A conversão que ocorre em todo o canal quando esse canal é o último ponto de contato para um cliente. é concedido o 100% crédito ao último ponto de contato.
Conversão de toque linear: Todos os canais / pontos de contato recebem o mesmo crédito na conversão.
Voltando ao 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" coluna. R <- fundir(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 <- Derreter(R1, id='channel_name')
# Plot the total conversions ggplot(R1, aes(channel_name, valor, fill = variable)) + geom_bar(stat="identidade", position='dodge') + ggtitle('TOTAL CONVERSIONS') + tema(axis.title.x = element_text(vjust = -2)) + tema(axis.title.y = element_text(vjust = +2)) + tema(title = element_text(tamanho = 16)) + tema(plot.title=element_text(tamanho = 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 são bastante importantes; enquanto da perspectiva do último toque, el canal 20 é o mais importante (no nosso caso, deve ser porque o cliente decidiu qual produto comprar). Em termos de conversão de toque linear, el canal 20, el canal 4 y el canal 9 estão se mostrando importantes. Do ponto de vista do total de conversões, os canais 10, 13, 20, 4 e 9 são bastante importantes.
Notas finais
No gráfico acima conseguimos descobrir quais são os canais importantes que devemos focar e quais podem ser descartados ou ignorados.. Este caso nos dá uma ideia muito boa da aplicação dos modelos de cadeia de Markov no espaço de análise do cliente.. As empresas de comércio eletrônico agora podem criar com confiança sua estratégia de marketing e alocar seu orçamento de marketing usando insights orientados por dados.
biografia do autor:
Este artigo foi contribuído por análise perceptiva. Chaitanya Sagar, Prudhvi Potuganti y Saneesh Veetil desarrollaron esteculo.
Perceptive Analytics fornece análise de dados, Visualização de dados, serviços de inteligência de negócios e relatórios para indústrias de comércio eletrônico, Venda a retalho, assistência médica e farmacêutica. Nossa lista de clientes inclui empresas listadas na Fortune 500 e NYSE nos EUA. UU. E Índia.