首页 > 其他分享 >R语言使用马尔可夫链对营销中的渠道归因建模|附代码数据

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

时间:2023-10-25 23:44:50浏览次数:50  
标签:转换 NA 模型 建模 渠道 马尔可夫 归因 20

原文链接: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模型

标签:转换,NA,模型,建模,渠道,马尔可夫,归因,20
From: https://www.cnblogs.com/tecdat/p/17788405.html

相关文章

  • Maple—多领域系统级建模仿真和科学计算软件
    MapleSim—基于多学科数字孪生的虚拟调试应用服务    MapleSim是一个多学科系统级建模仿真环境,从数字孪生实现虚拟调试到车辆实时仿真、重型机械仿真分析等,MapleSim帮助企业降低开发风险、支持创新。产品介绍如下:建模    利用预制的建模元件库建模,专业模型库......
  • 设计模式(1) -- 创建模式
    创建模式一种封装创建对象的模式它包括:抽象工厂模式(AbstractFactory)构造者模式(Builder)工厂方法(FactoryMethod)原型对象(Prototype)单例模式(Singleton)AbstractFactory提供一个接口,用于创建一组相关或依赖的对象而无需指定它们的具体类型。从关键字"一组相关或依赖的对象"可知:......
  • Adobe Dimension CC2020 Mac「Dn 三维3D建模工具」汉化版下载
    AdobeDimension2020forMac汉化版是Macos上一款三维3D建模工具,操作非常简单,通过强大的3D工具创建产品模型,可视化品牌形像,包装设计,三维模型等。借助AdobeDimension,图形设计师可以在同一个应用程序中编写,调整和渲染逼真的图像。软件地址:看置顶贴AdobeDimensionCC2020Mac安装方......
  • Python随机波动性SV模型:贝叶斯推断马尔可夫链蒙特卡洛MCMC分析英镑/美元汇率时间序列
    全文链接:https://tecdat.cn/?p=33885原文出处:拓端数据部落公众号本文描述了帮助客户使用马尔可夫链蒙特卡洛(MCMC)方法通过贝叶斯方法估计基本的单变量随机波动模型,就像Kim等人(1998年)所做的那样。定义模型以及从条件后验中抽取样本的函数的代码也在Python脚本中提供。  ......
  • OpenCascade 开源的三维建模几何造型开发平台
    官方文档 https://dev.opencascade.org/doc/overview/html/index.htmlOpenCASCADE(简称OCC)平台是由法国MatraDatavision公司开发的CAD/CAE/CAM软件平台,可以说是世界上最重要的几何造型基础软件平台之一。OpenCASCADE是一套开放原始码的CAD/CAM/CAE几何模型核心,源自于法国......
  • 相机噪声建模研究
    一.相机噪声概述图像噪音由于拍摄设备、传输误差、数据压缩或其他外部因素引入的。它可以干扰图像的视觉质量,使图像失真,并可能影响后续的图像处理和分析。在我们分析噪音时,通常要对图像的生成全流程进行追溯1.1光子的产生和传播(Sceneradiance)光源的光子通过物体进行反射......
  • 《需求工程-软件建模与分析》读后感一
    在阅读《需求工程-软件建模与分析》这本书之后,我深感需求工程在软件开发过程中的重要性。本书详细地介绍了需求工程的基本概念、方法和实践,使我对需求工程有了更加全面和深入的了解。以下是我在阅读过程中的一些感悟。首先,需求工程是一门跨学科的工程,它涉及到软件开发的各个方面,......
  • Laravel artisan命令-make:model(创建模型类)
    描述创建新的Eloquent模型类命名规则驼峰命名,类文件名必须为数据库表名「单数」,如:app/Models/User.php用法模型通常位于app\Models目录中,如果app下没有Models目录,可以在模型前添加Models目录。有app\Models目录phpartisanmake:modelUsers无app\Models目录......
  • 基于知识图谱建模、全文检索的智能知识管理库(源码)
    一、项目介绍一款全源码,可二开,可基于云部署、私有部署的企业级知识库云平台,一款让企业知识变为实打实的数字财富的系统,应用在需要进行文档整理、分类、归集、检索、分析的场景。知识图谱提供了一种从海量文本和图像中抽取结构化知识的手段,让知识获取更便捷、知识整理更简单、知......
  • 如何落地业务建模初探
    领域模型对于业务系统是更好的选择我们都知道,软件开发的核心难度在于处理隐藏在业务知识中的复杂度,那么模型就是对这种复杂度的简化与精炼。所以从某种意义上说,Eric倡导的领域驱动设计是一种模型驱动的设计方法:通过领域模型(DomainModel)捕捉领域知识,使用领域模型构造更易维护的软......