原文链接: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.202. 16 4 3 5 NA NA NA3. 2 1 9 10 NA NA NA4. 9 13 20 16 NA NA NA5. 8 15 20 21 NA NA NA6. 16 9 13 20 NA NA NA7. 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模型