乐趣区

关于数据挖掘:R语言使用马尔可夫链对营销中的渠道归因建模附代码数据

原文链接:http://tecdat.cn/?p=5383

最近咱们被客户要求撰写对于马尔可夫链的钻研报告,包含一些图形和统计输入。

在这篇文章中,咱们看看什么是渠道归因,以及它如何与马尔可夫链的概念分割起来

咱们还将通过一个电子商务公司的案例钻研来了解这个概念如何在实践上和实际上运作(应用 R)。

什么是渠道归因?

Google Analytics 为归因建模提供了一套规范规定。依据 Google 的说法,“归因模型是决定销售和转化如何调配给转化门路中的接触点的规定或一组规定。例如,Google Analytics 中的最初一次互动模型会为紧接销售或转化之前的最终接触点(即,点击次数)调配 100%的功绩。相比之下,第一个互动模型为启动转化门路的接触点调配 100%的功绩。“

咱们将在本文前面看到最初一个交互模型和第一个交互模型。在此之前,让咱们举一个小例子,进一步理解渠道归因。假如咱们有一个转换图,如下所示:

在上述情况下,客户能够通过渠道 ’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

马尔可夫链

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

状态空间 – 解决可能存在的所有状态的汇合

转换操作 – 从一个状态转移到另一个状态的概率

以后状态概率分布 – 在过程开始时处于任何一个状态的概率分布

咱们晓得咱们能够通过的阶段,从每条门路挪动的概率以及咱们晓得以后状态的可能性。这看起来与马尔可夫链类似。

事实上,这是一个马尔可夫链的利用。如果咱们要弄清楚渠道 1 在咱们的客户从始至终转换的过程中的奉献,咱们将应用去除成果的准则。去除成果准则说,如果咱们想要在客户过程中找到每个渠道的奉献,咱们能够通过删除每个渠道并查看在没有该渠道的状况下产生了多少次转化。

例如,咱们假如咱们必须计算通道 C1 的奉献。咱们将从模型中删除通道 C1,并查看图片中没有 C1 的状况下产生了多少次转换,即所有渠道完整无缺时的总转换次数。咱们计算渠道 C1:


点击题目查阅往期内容

matlab 贝叶斯隐马尔可夫 hmm 模型实现

左右滑动查看更多

01

02

03

04

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

= 0.5 1 0.6

= 0.3

30%的客户互动能够在没有 C1 渠道的状况下进行转换; 而 C1 完整无缺,45%的互动能够转换。所以,C1 的去除成果是

0.3 / 0.45 = 0.666。

C2 和 C3 的去除成果为 1(您能够尝试计算,但直觉地认为,如果咱们要删除或者 C2 或 C3,咱们将可能实现任何转换?)。

这是马尔可夫链的一个十分有用的利用。在上述情况下,所有渠道 –C1,C2,C3(在不同阶段)被称为转换状态 ; 而从一个渠道挪动到另一个渠道的概率称为转移概率。

客户旅程是一系列渠道,能够看作是一个有向马尔可夫图中的一个链,其中每个顶点都是一个状态(渠道 / 接触点),每条边示意从一个状态挪动到另一个状态的转移概率。因为达到状态的概率仅取决于之前的状态,因而能够将其视为无记忆马尔可夫链。

电子商务公司案例钻研

让咱们进行实在案例钻研,看看咱们如何施行渠道归因建模。

一家电子商务公司进行了一项考察并收集了客户的数据。这能够被认为是具备代表性的人群。在考察中,公司收集了无关客户拜访各种触点的数据,最终在其网站上购买该产品。

总共有 19 个渠道,客户能够遇到产品或产品广告。在 19 个渠道之后,还有三种状况:

#20 – 客户决定购买哪种设施;

#21 – 客户曾经做出最终购买;

#22 – 客户尚未决定。

渠道的总体分类如下:

类别 渠道
网站(1,2,3) 公司的网站或竞争对手的网站
钻研报告(4,5,6,7,8) 行业征询钻研报告
在线 / 评论(9,10) 天然搜寻,论坛
价格比拟(11) 聚合渠道
敌人(12,13) 社交网络
专家(14) 在线或离线专家
零售店(15,16,17) 实体店
其余(18,19) 其余,例如在各地的促销流动

当初,咱们须要帮忙电子商务公司确定投资营销渠道的正确策略。应该关注哪些渠道?公司应该投资哪些渠道?咱们将在下一节中应用 R 来解决这个问题。

应用 R 的实现

咱们读取数据,尝试在 R 中实现并查看后果。

> head(channel)

输入:


1.  R05A.01    R05A.02    R05A.03    R05A.04    …..    R05A.18    R05A.19    R05A.20

2.  16    4    3    5        NA    NA    NA

3.  2    1    9    10        NA    NA    NA

4.  9    13    20    16        NA    NA    NA

5.  8    15    20    21        NA    NA    NA

6.  16    9    13    20        NA    NA    NA

7.  1    11    8    4        NA    NA    NA

咱们将进行一些数据处理,将其带入一个阶段,咱们能够将其用作模型中的输出。而后,咱们将确定哪些客户已进行最终转换。

创立一个特定格局的变量 ’ 门路 ’,能够作为模型的输出。另外,咱们将应用“dplyr”包找出每条门路的总产生次数。

门路转变

 

 

门路 转换
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

 


1.  > channel_fin = ddply(channel_fin,~path,summarise, conversion= sum(convert))

2.  > head(channel_fin)

输入:

门路转变

 

门路 转换
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

 

 

当初,咱们将创立一个启发式模型和一个马尔科夫模型,将两者联合起来,而后查看最终后果。

输入:

Output:

Output:

渠道名称 首次接触转换 ….. 线性接触转换 线性接触值
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
16 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

 

输入:

:

:

渠道名称 总体转换 总体转换值
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
16 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

 

在进一步探讨之前,咱们先来理解一下咱们下面看到的一些术语的含意。

第一次接触转换:当该渠道是客户的第一个触点时,通过渠道进行的转换。第一个触点取得 100%的功绩。

上次接触转换:当该渠道是客户的最初一个接触点时,通过渠道产生的转化。100%功绩给予最初的接触点。

回到 R 代码,让咱们合并这两个模型,并以可视化形式示意输入。


1.  # 绘制总转换

2.  ggplot(R1, aes(channel_name, value, fill = variable)) +

3.    geom_bar(stat='identity', position='dodge') 

从上图中能够分明地看到后果。从第一次接触转换角度来看,渠道 10,渠道 13,渠道 2,渠道 4 和渠道 9 十分重要; 而从最初接触的角度来看,第 20 渠道是最重要的(因为在咱们的例子中客户决定购买哪种产品)。就线性接触转换而言,渠道 20、渠道 4 和渠道 9 是重要的。从总转换角度来看,渠道 10,13,20,4 和 9 十分重要。

完结

在下面的图表中,咱们曾经可能找出哪些是咱们关注的重要渠道,哪些能够被疏忽或漠视。这种状况使咱们对客户剖析畛域马尔可夫链模型的利用有了很好的理解。电子商务公司当初能够更精确地创立他们的营销策略,并应用数据驱动的见解调配他们的营销估算。


点击文末 “浏览原文”

获取全文残缺代码数据资料。

本文选自《R 语言应用马尔可夫链对营销中的渠道归因建模》。

点击题目查阅往期内容

隐马尔可夫模型 (HMM) 辨认一直变动的股市情况股票指数预测实战
马尔可夫 Markov 区制转移模型剖析基金利率
马尔可夫区制转移模型 Markov regime switching
时变马尔可夫区制转换 MRS 自回归模型剖析经济工夫序列
马尔可夫转换模型钻研交通伤亡人数事变工夫序列预测
如何实现马尔可夫链蒙特卡罗 MCMC 模型、Metropolis 算法?
Matlab 用 BUGS 马尔可夫区制转换 Markov switching 随机稳定率模型、序列蒙特卡罗 SMC、M H 采样剖析工夫序列
R 语言 BUGS 序列蒙特卡罗 SMC、马尔可夫转换随机稳定率 SV 模型、粒子滤波、Metropolis Hasting 采样工夫序列剖析
matlab 用马尔可夫链蒙特卡罗 (MCMC) 的 Logistic 逻辑回归模型剖析汽车试验数据
stata 马尔可夫 Markov 区制转移模型剖析基金利率
PYTHON 用时变马尔可夫区制转换(MRS)自回归模型剖析经济工夫序列
R 语言应用马尔可夫链对营销中的渠道归因建模
matlab 实现 MCMC 的马尔可夫转换 ARMA – GARCH 模型预计
R 语言隐马尔可夫模型 HMM 辨认一直变动的股票市场条件
R 语言中的隐马尔可夫 HMM 模型实例
用机器学习辨认一直变动的股市情况—隐马尔科夫模型 (HMM)
Matlab 马尔可夫链蒙特卡罗法(MCMC)预计随机稳定率(SV,Stochastic Volatility)模型
MATLAB 中的马尔可夫区制转移(Markov regime switching) 模型
Matlab 马尔可夫区制转换动静回归模型预计 GDP 增长率
R 语言马尔可夫区制转移模型 Markov regime switching
stata 马尔可夫 Markov 区制转移模型剖析基金利率
R 语言如何做马尔可夫转换模型 markov switching model
R 语言隐马尔可夫模型 HMM 辨认股市变动剖析报告
R 语言中实现马尔可夫链蒙特卡罗 MCMC 模型

退出移动版