数据运营36计:马尔可夫链对营销渠道归因建模,R语言实现

1. 马尔可夫链

马尔可夫链是一个过程,它映射运动并给出概率分布,从一个状态转移到另一个状态。马尔可夫链由三个属性定义:

  • 状态空间:处理可能存在的所有状态的集合

  • 转移概率:从一个状态转移到另一个状态的概率

  • 当前状态分布 - 在过程开始时处于任何一个状态的概率分布

那么用户行为路径中的每个渠道可以看作这里的每个状态。在知道状态空间的情况下,所求的渠道贡献率就是每条路径的转移概率。所以马尔可夫链模型可以用来做归因分析。

2. 基于马尔可夫链的归因分析原理

在任何完成转化的路径中,客户可能会进行多次搜索,与同一广告客户的多个广告渠道进行互动,那么每个广告渠道应该为每次点击或购买等行为归功获得多少利益,这里借助归因分析方法来求解,以便更好地了解广告渠道质量和优化投放渠道。在谷歌分析GA中对多渠道营销归因的分析中,理解用户行为的一种流行方法是使用简单的启发式方法(如用户第一次点击、最后一次点击和线性归因)。

“首次点击”、“最终点击”、“首次点击”这三种归因方法将所有的转化贡献归属到N个渠道中的某一个,忽略的其他渠道对转化的贡献。比如“首次点击”即最终转化的用户归功为用户第一次接触的渠道。“线性归因”认为所有的渠道贡献都一样,强调广告的提醒功能,不适合长转化路径,这明显会对低估和高估某些渠道的真实贡献。

上面提到的启发式归因则是主观方法。当广告商清楚你归因计算的方法,那么可以轻易流量作弊。而算法归因更客观的使用统计方法或者机器学习方法来确定转化贡献度。这里介绍Markov建模探究每个渠道的贡献程度。

马尔科夫模型确定用户从序列A转换到序列B的概率。这些序列的内容由马尔科夫阶数决定,马尔科夫阶数从0到4。以下面的例子为例:

0阶:不知道用户来自哪里,也不知道用户的步骤,只知道访问任何页面的概率。

1阶:返回0步。用户现在在A。去任何地方的概率基于在那个步骤。

2阶:向后一个阶段。用户来自A,目前处于B。去任何地方的概率取决于用户在哪个阶段。

3阶:向后两个阶段。用户来自A > B,目前处于C。去任何地方的概率取决于用户在哪个阶段。

4阶:返回三个阶段。用户来自于A > B > C,现在是D。

假设用户X的步骤如下:A > B > C > D > E > F > G. 4阶马尔可夫模型会显示用户X来自A(A> B > C > D),然后经过序列B (B > C > D > E),再到序列C (C > D > E > F),等等,直到用户X退出或转换。马尔可夫模型这里的阶数参数决定了用户现在的状态或所处阶段是由过去几个阶段决定的。但是这里决定阶数比较困难,一种方法是通过将设置多个阶数模型来绘制训练模型的误差,选取误差小的模型,从而确定模型的阶数。

在上述情况下,客户可以通过渠道'C1'或渠道'C2'开始他们的路径。以C1或C2开始的概率为50%(或0.5)。我们首先计算转换的总体概率,然后进一步查看每个渠道的影响。

P(转换)= P(C1→C2→C3→转换)+ P(C2→C3→转换)

= 0.5 * 0.5 * 1 * 0.6 + 0.5 * 1 * 0.6

= 0.15 + 0.3

= 0.45

如果要弄清楚渠道C1在用户转化路径中的贡献,使用移除效应原则。即如果想要在用户路径中找到某个渠道的贡献,可以通过删除该渠道并查看在没有该渠道的情况下发生了多少次转化。

P(去除C1后的转换)= P(C2→C3→转换)

= 0.5 * 1 * 0.6

= 0.3

30%的用户互动可以在没有渠道C1的情况下进行转换; 而C1完好无损,45%的互动可以转换。所以,C1的移除效应是0.3 /0.45= 0.67。C2和C3的移除效应可以直接得出为1。那么渠道C1贡献度为0.67/(0.67+1+1)=25%, 同理C2=C3=37.5%。

这是马尔可夫链的一个非常有用的应用。在上述情况下,所有渠道C1,C2,C3(在不同阶段)被称为转换状态 ; 而从一个渠道转移到另一个渠道的概率称为转移概率。用户路径是由一系列渠道组成的,可以看作是一个有向马尔可夫图中的一个链,其中每个顶点都是一个状态(渠道),每条边表示从一个状态移动到另一个状态的转移概率(渠道转化率)。由于到达状态的概率仅取决于以前的k阶状态,因此可以将其视为无记忆马尔可夫链。

上面每条路径中的具体转化率怎么通过由用户路径和转化数据计算得到的呢?比如有以下的用户转化路径,那么在这个马尔可夫链中,START、A、B和CONVERSION为状态空间。

通过统计每个状态之间的转移次数,即可画出上一个例子中的转化图(下图左图)。计算移除效应,当去除渠道A时,无法转化,因此渠道A的移除效应为1,而B的移除效应为0.5(由下图左图简化为右图得出),因此3次转化结果中,渠道A贡献为2次转化,渠道B贡献转化1次。


3. R语言实现营销渠道归因分析

这里直接用R语言里面的ChannelAttribution库来进行例子解释,Demo里面的数据包括4列,每行为每个用户的行为路径,“path”列为用户转化路径,“total_conversions”列为转化的次数,“total_conversions_value”列为营销渠道的收益价值,“total_null”列为用户没有转化的路径数量。数据展示如下:

## markov_model attribution
library(ChannelAttribution)
library(reshape)
library(ggplot2)


# This loads the demo data.
data(PathData)


# 启发式模型
H <- heuristic_models(Data, 'path', 'total_conversions'
                      , var_value='total_conversion_value')
# 马尔可夫模型
M <- markov_model(Data, 'path', 'total_conversions'
                  , var_value='total_conversion_value', order = 1)


R <- merge(H, M, by='channel_name') 
# Selects only relevant columns
R1 <- R[, (colnames(R)%in%c('channel_name'
          , 'first_touch_conversions'
          , 'last_touch_conversions'
          , 'linear_touch_conversions'
          , 'total_conversion'))]
          
# Renames the columns
colnames(R1) <- c('channel_name', 'first_touch'
                , 'last_touch', 'linear_touch', 'markov_model') 


R1 <- melt(R1, id='channel_name')


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("")

将启发式模型和马尔可夫模型进行建模并对比分析,“总转化次数”条形图展示了每个模型的每个渠道的转化次数,紫色条形图为markov model,其他三个为启发式算法模型。分析图形可以发现markov model得到的结果中alpha渠道的转化次数贡献上并没有像启发式算法分析得那么重要。而epsilon、lambda、theta和zeta比简单的启发式有更重要的转化贡献。

图1 各模型总转化次数各渠道贡献情况

R2 <- R[, (colnames(R)%in%c('channel_name'
                            , 'first_touch_value'
                            , 'last_touch_value'
                            , 'linear_touch_value'
                            , 'total_conversion_value'))]
colnames(R2) <- c('channel_name', 'first_touch'
                  , 'last_touch', 'linear_touch', 'markov_model')
R2 <- melt(R2, id='channel_name')


ggplot(R2, aes(channel_name, value, fill = variable)) +
  geom_bar(stat='identity', position='dodge') +
  ggtitle('TOTAL VALUE') + 
  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("")

“转化价值”条形图展示了每个模型的每个渠道的转化价值收益(比如货币),紫色条形图为markov model,其他三个为启发式算法模型。分析图形可以发现markov model得到的结果中alpha渠道的价值贡献上并没有像启发式算法分析得那么重要。而epsilon、lambda、theta和zeta比简单的启发式有更重要的价值贡献。

图2 各模型转化价值各渠道贡献情况

最后得到转移矩阵,即第二点例子中的转化路径图,每个渠道的转化率即为转移概率,比如第一条路径从开始状态到渠道1(eta)的转化率为0.157。将得到的转移矩阵再用来计算每个渠道的移除效应,也可得到每个渠道的贡献度。

# 转移概率矩阵
T <- transition_matrix(Data, 'path', 'total_conversions'
        , 'total_conversion_value', order=1, sep=">",flg_equal=TRUE)

4. 学习资料

论文推荐:《Mapping the Customer Journey: A Graph-Based Framework for Online Attribution Modeling》一文直接全面清晰地讲解了马尔可夫链对营销渠道归因建模的原理和求解的过程。

R语言ChannelAttribution库:

https://cran.r-project.org/web/packages/ChannelAttribution/ChannelAttribution.pdf

参考博客:https://blog.csdn.net/qq_19600291/java/article/details/79531623

https://www.slideshare.net/adavide1982/markov-model-for-the-multichannel-attribution-problem

●数据哪里找?200个源数据网站全给你!●12000+字超详细 SQL 语法速成!后台回复“入群”即可加入小z干货交流群
棒!????
  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值