R语言使用马尔可夫链对营销中的渠道归因建模

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

=网络

介绍

在这篇文章中,咱们看看什么是渠道归因,以及它如何与马尔可夫链的概念联系起来。咱们还将经过一个电子商务公司的案例研究来理解这个概念如何在理论上和实践上运做(使用R)。ide

什么是渠道归因?

Google Analytics为归因建模提供了一套标准规则。根据Google的说法,“归因模型是决定销售和转化如何分配给转化路径中的接触点的规则或一组规则。例如,Google Analytics中的最后一次互动模型会为紧接销售或转化以前的最终接触点(即,点击次数)分配100%的功劳。相比之下,第一个互动模型为启动转化路径的接触点分配100%的功劳。“网站

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

在上述状况下,客户能够经过渠道'C1'或渠道'C2'开始他们的旅程。以C1或C2开始的几率为50%(或0.5)。咱们首先计算转换的整体几率,而后进一步查看每一个渠道的影响。code

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

= 0.5 0.5 1 0.6 + 0.5 1 * 0.6图片

= 0.15 + 0.3element

= 0.45rem

马尔可夫链

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

状态空间 - 处理可能存在的全部状态的集合

转换操做 - 从一个状态转移到另外一个状态的几率

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

咱们知道咱们能够经过的阶段,从每条路径移动的几率以及咱们知道当前状态的可能性。这看起来与马尔可夫链类似。

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

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

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)

输出:

R05A.01    R05A.02    R05A.03    R05A.04    …..    R05A.18    R05A.19    R05A.20
16    4    3    5        NA    NA    NA
2    1    9    10        NA    NA    NA
9    13    20    16        NA    NA    NA
8    15    20    21        NA    NA    NA
16    9    13    20        NA    NA    NA
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

> channel_fin = ddply(channel_fin,~path,summarise, conversion= sum(convert))
> 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:

渠道名称

首次接触转换

…..

线性接触转换

线性接触值

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代码,让咱们合并这两个模型,并以可视化方式表示输出。

# 绘制总转换
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)) +

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

结束

在上面的图表中,咱们已经可以找出哪些是咱们关注的重要渠道,哪些能够被忽略或忽视。这种状况使咱们对客户分析领域马尔可夫链模型的应用有了很好的了解。电子商务公司如今能够更准确地建立他们的营销策略,并使用数据驱动的看法分配他们的营销预算。

相关文章
相关标签/搜索