作者:李阳  来源公众号:数据有毒

GrowingIO、神策、诸葛IO、TalkingData、友盟、Google Analytics for Firebase是数据分析领域广为人知的几家综合性平台,他们在用户行为研究与驱动业务增长等多个方面,都提供了丰富的分析工具和技术支持,成为许多知名企业的数据平台首选。

另一个特点是,我们都将移动场景下的用户行为分析作为重点之一,而非Web时代的行为分析(这也是Google Analytics for Firebase入选了,而没有选择Google Analytics 360的原因)。

在数据分析领域,“巧妇难为无米之炊”这句古话常被提起,用来比喻没有高质量的数据,就无法进行高质量的分析、得出高质量的结论。而这6家平台与单纯的数据可视化平台相比,其服务都覆盖了数据采集的部分,也就是从源头开始支撑整个数据分析。

因此,这个系列就从一个不太常见又十分重要的角度切入——数据模型,也就是讲解一些知名的数据分析平台究竟收集了哪些数据,以及为什么要收集它们。我将这类内容称为:数据分析平台的世界观。

至于数据分析“出彩”部分,各家也都有自己的侧重点——有偏重用户行为与画像的、有偏重广告与商业变现的、也有偏重营销工具的,各不相同。那么废话不多说,加下来我们就来探讨这几个数据平台的“世界观”。

本文中介绍的所有内容,都来自于这几家平台的帮助文档整理,链接如下:

  • GrowingIO:https://docs.growingio.com/docs/

  • 神策:https://www.sensorsdata.cn/manual/

  • 诸葛IO:https://docs.zhugeio.com/

  • TalkingData:http://doc.talkingdata.com/

  • 友盟:https://developer.umeng.com/docs

  • Google Firebase Analytics:https://firebase.google.com/docs/analytics/

如果你对其他平台感兴趣,也欢迎在评论里告诉我,它会加入我的to-do list。

一、这个世界是怎样的 for 数据分析平台

这是一个根本性的问题,直接决定了后续的所有内容。就像咱们中国古人,认为世界的基本就是阴和阳而已。阴阳的组合与生化,产生了世界万物。对于数据分析平台来说,也会有一些构成世界的基本元素。这些元素之间相互影响、相互作用,演化出了千变万化的数据分析。

首先,要对GrowingIO、神策和诸葛IO这三位同学加粗标红地提出表扬!!!

是因为他们仨都很贴心地在文档中提供了一个叫做“数据模型”的部分,极大的减少了爬API文档了解逻辑的时间。文档地址如下:

  • GrowingIO:https://docs.growingio.com/docs/data-model/

  • 神策:https://www.sensorsdata.cn/manual/data_model.html

  • 诸葛IO:https://docs.zhugeio.com/datamanager/data_model.html

另外三家就提供的比较隐晦了,不过多多少少还是能找到相关信息的——这6家平台都采用了“事件模型”来收集数据。(部分数据是自动收集的,没有特别明确的数据模型,后边会详细列举。)

在这几家平台看来,这个世界就是一大堆错综复杂“事件”(Event)而已。用户是事件的施动者,而每个事件有自己的一些独有的信息。用一句话概括:有人搞了一些事情,我们来分析一下吧。

这三层之间的关系,是这样定义的:

  • 统计模型基于事件模型

  • 事件模型基于用户模型

其中事件和用户,我们可以称之为两个“实体”(Entity)。他们之间的关系可以用E-R表示为:

二、事件(Event)

对于事件模型,理解事件(Event)这个概念当然是最重要的。那么什么叫一个事件呢?

那些在数据分析中耳熟能详的用户行为,都可以叫做一个事件。比如,启动App、注册、登陆、浏览、转化(创建订单、完成支付、发布内容等)、留存、分享、订阅、收藏等等。

当然,这就存在一个问题了——不同的业务形态,会产生不同的用户行为。有的关注交易,有的关注UGC内容,有的则只是看用户的点点划划。那么对于这几家第三方平台来说,如何给出一套模型能覆盖所有事件呢?

其实每家平台会把这些事件分为两类:那些已经确定的、不管什么业务类型都会需要的事件,当做了“预留事件”(每家的叫法略有差别,比如:在TalkingData指的就是“灵动分析”部分的数据)。比如:打开App、注册、登陆、浏览(PV/UV)等。也就是说,只要接入了这个平台(并将SDK进行了正确的初始化),就可以收集到这些事件的数据,进行监控和分析。

另一类,就是“自定义事件”(同样每家的叫法略有差别)。这一类涵盖的就是与不同的业务类型高度相关的那些事件了,比如:单纯的UGC内容平台,就没有订单和支付这些事件;而对于纯粹的电商平台,其关注的核心也不会是超大篇幅的内容产出。这些就应当作为自定义事件。

其中自定义事件是需要在收集之前,先在平台上“注册”这些事件的,这也是为了方便对事件进行管理。

但不管是预留事件还是自定义事件,都保留了基本的事件数据结构,一个事件主要包含四部分信息,称作事件的属性(E-R图中与事件连线的椭圆形):

  • 时间信息:这将是时间序列分析中的关键,这个信息代表了这个事件是什么时候发生的;

  • 用户信息:这部分主要是为了关联事情的发动者是谁,以便支持后续从用户角度开展的分析;

  • 事件类型:这也是每个事件的一个基本属性,比如:App启动是一个类型,用户登陆也是一个类型。

  • 事件属性:这部分的定义比较宽泛,所以也留了较大的自由度。比如:我们前面讲到的两个例子,如果是创建订单的事件,则会包括订单号、订单金额、商品编号等等;如果是UGC类型的事件,则可能包括内容发布的板块、是否原创、引用链接等等。

至此,我们可以简单的理解,所谓“事件”,其实可以就按表面意思理解,就是发生了一些事的概念。而后续在进行分析的时候,就得根据分析的需要,重新整理事件的数据。

三、用户模型

用户模型是第二大概念,也是最爱分析的第二大主题。上一段说到在数据收集之后,进行分析的时候,需要重新对数据进行整理,面向用户的数据汇总就是主要方式之一。通过这样的汇总,我们得到的是用户画像、用户偏好等这些初步的结论,再进行深入分析。

下面先搞清楚两类用户:访问用户与登录用户。

在用户模型中,用户分为两类:登录用户与访问用户。

所谓登录用户,就是已经注册并取得了注册账号的用户,比如:我们注册了QQ就有QQ号,注册了淘宝有淘宝账号等等。对于这样的用户,正因为他们已经有了一个几乎不可能改变的账号,之后所有的行为和属性信息,都会尽可能地与这个不变的账号关联起来。

这引出一个题外话——账户体系的重要性。在互联网社交刚崛起的阶段,有很多平台致力于做统一账户。关键在于这个跨平台的账户ID关联了用户的所有行为,这种方式对于渴望降低CAC、实现交叉引流的平台有很大帮助。

但对于那些大平台,就是流量的“净输出”方,而且那些初期需要引流的平台,一定是把第三方账号关联到自己的账户体系上,这就凸显了同一账号的信息中介作用。在大厂开始外推自己的账户体系、信息逐渐开始“对称”起来的时候,统一账号就没有存在空间了。

说到用户注册和登录,这就产生了另一个问题:当用户没有登陆,甚至还未注册,那怎么办呢?

这个时候,ta就是一位访问用户了。

那么访问用户又是谁呢?

问题就在这——我们不知道TA是谁,TA没有登陆,我们已经掌握的历史数据却都是与注册账号相关的。也就是说,这些数据都无法跟这个访问用户对应上。

在应用中主要是这两方面具体问题:

  1. 历史数据关联问题,特别是与业务有关的数据(比如:订单),一般都是与注册账号ID关联的,而这个访问用户的ID很不稳定,会频繁变动。

  2. 访问用户ID的产生依赖于平台。也就是说,用户使用同一家的App,在没登录的情况下,在iOS、Android和其他平台上上会被当做是两个人,这对于数据分析显然是个灾难。

这就好像,我们用身份证买了一张机票,如果你不出示身份证,人家自然不会给你办理手续,即使用护照或者其他证件也不行。(惨痛的真实经历…)

当然,在互联网的领域中从不会“坐以待毙”。对于这样的“无名氏”用户,许多平台已经开始支持记录和管理历史访问设备,也就是你用的手机、平板电脑等设备有自己的ID(比如网卡的MAC地址)。如果某位访问用户使用同一部手机打开了App,我们也可以通过手机的设备号近似的关联到登录用户身上。

这种从设备到人的映射关系,有些是在账号体系中“强管理”的——关联设备数量有限制,而且需要明确授权。比如:Apple ID。也有“弱管理”的,只是在App中展示一下。更低效的做法,是把关联的工作放到数据分析阶段,再耗费大量计算资源做这个层次的关联。

至此,简单理解,登录用户=认识,访问用户=不认识。

用户也会有自己的属性,这些是人们喜闻乐见,喜欢分析的内容。对于一位用户,属性包括以下两种:

  1. 基本固定不变的属性,典型是人口统计学属性,如性别、年龄段、地理位置等。

  2. 通过一定的业务含义加工出来的用户属性,典型是用户分群、用户标签属性。

四、分析

上边还剩一个“端”的实体,但是其自身的分析价值更偏向技术层面,我们暂时忽略。

分析这部分可能是整篇文章比较吸引人的地方,但其实,说完了前面几方面的内容,才可以开始将分析。这个时候,能分析什么、怎么分析这类问题,才能落到具体的东西上。

我们回到前面的这张E-R图:

图中的实体(用矩形表示)和实体关系(用连线表示)概括了我们要分析的内容。这张图里有三个主体:端、用户和事件。这也就意味着,我们的分析过程有三个切入点:产品(内容)自身、用户自身以及用户行为。

当然,我们最常分析的,还是产品与用户关系,以及用户自身的行为这两个大主题。而这两个行为的数据,主要来源于“用户触发事件”这个过程。(下边那些就不是正统的E-R图了哈,能传达含义就行。)

1. 统计分析

统计分析是最基本的分析手法了。

要做的基本就是指定一些属性的值,然后对实体进行计数。比如:我们要求用户的性别=男性,然后对满足要求的实体计数。再或者,我们要求事件类型=新增,然后统计事件实体的数量,算出来的就是今日的新增用户数DNU(隐含一个去重的过程)。

另一类统计分析是分析用户的行为路径,比如:用户从打开App,到最终支付成功,经历了怎样的路径呢?

这就是通过关联事件实体,并对事件进行统计而得出的,比如下图这个关系:

2. 归因分析

归因分析需要给发生的事情找到原因,一般的最终目的是通过这种挖掘出来的因果关系,对未来进行预测。比如:如果我们发现了女性用户更可能购买我们的产品,那么在资源有限的情况下,我们就应当着重向平台上的女性用户推广我们的产品。

另一类例子,就是关于事件和事件之间的,比如经典的“LinkedIn 魔法数字”案例——1周内增加5个社交好友的用户更容易留存。

针对第一类案例,我们实际上是通过关联事件实体和用户实体来实现的:

而对于第二类行为之间的归因分析,使用过行为之间的交叉来过滤用户,最终仍旧是通过统计用户数量来得出结论的:

如果你经手过大数据量,可能已经想到了,这样的事件统计计算量会非常非常大!在实战中,更多情况是将这种行为的数量当做用户的一种属性,这也就是前面提到的第二类用户属性。

修改之后的逻辑如下图:

但不管哪种分析,都会面临一个问题——用户属性很不稳定,会改变的。比如:用户的年龄段。在用户第一次加好友的时候,其年龄段属性为“21-25岁”,真实年龄为25岁,正处在年龄段交替的时间点;当再次加好友的时候,真实年龄已经变成了26岁,其年龄段属性也随之变成了“26-30岁”。

这就产生问题了:当用户完成了5次社交好友之后,这5次的社交好友应当归因到“21-25岁”呢?还是归因到“26-30岁”年龄段呢?

这会直接对我们的分析结论产生影响。

类似的问题也出现在一些其他分析上,比如:用户的浏览行为。当用户启动App之后,可能在所有内容之间穿梭很久,最终才决定购买或者其他转化。

那么,这次转化究竟应当归属于哪些页面或按钮呢?

为了避免这种问题,有些平台(如:GrowingIO)在配置自定义事件时提供了明显的配置项(称为“埋点事件”的“归因方式”);也有的平台讲这件事的决定权交给了使用者,可以在代码或者事件定义的过程中给出;更有如Google Analytics for Firebase这样的平台,会提供一套专门的“归因模型”,来处理这类转化归因的问题。

关于归因的问题会单独整理一部分内容。这部分整理还会衍生出一些其它的思考,比如:你的业务增长,真的应该归因给社群裂变吗?

——–[UPDATE 2018-11-21]——–

经评论的同学提醒,关于 GrowingIO 平台的归因,这里补充一些详细信息:

登录用户的归因模型:

【归因目的】随着用户行为的产生,用户自身的属性也会跟着改变(比如年龄、地域等),两个时间段是无法严格对齐的,导致一个行为可能对应了多个属性值(随时间延续而产生),所以才需要用归因模型来约定,每个行为具体对应哪个属性值。官方例子是用户从银卡升级为金卡,那么从现在看,用户在银卡阶段的交易应当归属银卡阶段还是金卡阶段呢?

【备选方案】两种方案:最近(只时间间隔最小,归银卡);最终(归金卡);

【参考文档】https://docs.growingio.com/docs/data-definition/user-variable/loginuserid#gui-yin-mo-xing

转化归因方式:

【归因目的】当用户实际转化之后,我们会追溯促成转化的原因。在这个分析过程中,用户可能历经了多个活动、多个按钮和页面、反复搜索了多个商品等。应当如何认定是哪个事物促成了用户转化呢?因此这里还有归因的逻辑。一个重要的区别在于,“转化”与单纯的“事件”不同,“转化”通常会对应价值的产生,比如用户支付。所以这种归因,不仅仅是建立关系,还要将这种产生的价值,按照一定的分配方式分给所有相关方。

【备选方案】最近(依然是时间间隔最小的含义)、最终和线性(平均分)归因。同时,官方给出了三种备选方案的应用场景:

  • 使用最初归因模型,某个内部活动带来了多少注册,多少订单。

  • 使用线性归因模型,内部搜索的效果怎样,某个具体的搜索词带来了多少订单,营业收入。

  • 使用最近归因模型,同一个内部活动的不同入口分别带来了多少内部活动详情页面的浏览。

【参考文档】https://docs.growingio.com/docs/data-definition/custom-event/convert-variable#gui-yin-fang-shi

广告监测中的归因逻辑:

【归因目的】广告投放与利益绑定的更紧密,但同样面临如前所说的“1对多”的困境,而且同样需要有一定的规则来分配产生的价值。从GrowingIO平台提供归因方式判定,更偏重于比较独立的纯粹广告,而不适用于与业务流程或产品形态深度结合的类推荐流程。如果是深度结合的流程,可以想象Last Click会直接忽略在转化路径上的其他影响因素,把转化归功于“立即支付”这样的按钮。

【备选方案】Last Click(最近点击)规则 + 反作弊 + 15天时间窗

【参考文档】https://docs.growingio.com/docs/ads-tracking/app-marketing#4-gui-yin-luo-ji

把此篇文章转发到朋友圈或产品/运营微信群的小伙伴可以找微信:chanpin628 领取一份WMS原型素材。

此外我们的官方网站也上线了,每日分享高质量的文章、原型素材和行业报告,小伙伴可自行前往索取,支持搜索,需要的小伙伴可点击底部的阅读原文直接查看,或者复制网址www.dadaghp.com 打开。

更多干货可关注微信公众号:产品刘

想学习更多关于产品、职场、心理、认知等干货,可长按右边二维码,关注我们。

··················END··················

RECOMMEND

推荐阅读

我年轻的时候通过跳槽涨工资

面试题,你的兴趣爱好是什么?

那些年我得到的职场教训

线下实战2.0

点击“阅读原文”

查看更多干货

数据产品经理:6大数据分析平台的“世界观”相关推荐

  1. 大数据产品经理python_大数据岗位要求之数据产品经理

    继上篇介绍了数据分析师岗位的要求,这篇介绍数据产品经理的岗位要求(距上篇的更新时间有点久),还是先从几个大厂数据产品经理原始的岗位要求看起. 滴滴 1.本科以上学历: 2.2年以上数据分析.数据产品等 ...

  2. 数据产品经理修炼手册(从零基础到大数据产品实践)

    一.初识数据产品经理 大数据4V特性 ①体量巨大(Volume)②处理速度快(Velocity)③类型多种多样(Variety)④价值大(Value) 数据产品分类 ①企业内部使用的产品,如BI数据分 ...

  3. 大数据产品经理极速撰写PRD的5个步骤

    时下和未来TB级以上的大数据场景下的产品将是主流产品,时下这类PRD的应用场景主要代表产品有阿里云产品.腾讯云产品.第四范式产品.VIVO/OPPO产品的大数据平台部门等等,以大数据治理和大数据计算为 ...

  4. 读书笔记丨《数据产品经理修炼手册:从零基础到大数据产品实践》丨DAY5

    内容:第5章 大数据分析平台实践 时间:2022年8月7日 5.1 大数据分析平台的前世今生 5.1.1 大数据分析平台构建的背景         构建一个大数据分析平台,结合多个业务系统,从中抽取海 ...

  5. 读书笔记// 《数据产品经理》

    书名:写给数据产品经理新人的工作笔记 出版时间:2020年10月 本书以数据产品经理角色的定位和合作关系为切入点,站在整个数据体系的视角,从工作流程的角度剖析数据需求沟通和判断的过程.指标体系搭建的过 ...

  6. jpa 自定义sql if_数据产品经理必备之SQL基础

    SQL语言是用于访问和处理数据库的标准的计算机语言,本文将从基本语法和高级语法两方面来介绍SQL语言. 数据产品经理从字面上看包含"数据"和"产品经理"两方面, ...

  7. 数据产品经理基础技能:数据需求说明文档怎么写?

    公众号后台回复"图书",了解更多号主新书内容作者:草帽小子来源:一个数据人的自留地 作者介绍 @草帽小子 数据产品经理一枚~ 用户画像.埋点.指标体系.BI.广告投放等系列文章作者 ...

  8. 大数据分析平台由哪些部分组成

    在搭建大数据分析平台之前,要先明确业务需求场景以及用户的需求,通过大数据分析平台,想要得到哪些有价值的信息,需要接入的数据有哪些,明确基于场景业务需求的大数据平台要具备的基本功能,来决定平台搭建过程中 ...

  9. 如何构建大数据分析平台

    大数据是以互联网为基础的.数据仓库.数据挖掘.云计算等互联网技术的发展为大数据的应用奠定了基础.对于任何一个大数据从业者来说,新的接触,或者会有一种共同的感觉:大数据是非常有用的!那么如何构建大数据分 ...

最新文章

  1. C#事件-使用事件需要的步骤
  2. Batch Normalization的作用及原理
  3. 哥德巴赫猜想(洛谷P1304题题解,Java语言描述)
  4. 研发管理(2)---技术总监的三板斧
  5. 安装DotNetCore.1.0.0-VS2015Tools.Preview2.exe 错误Error 0x81f40001 解决方法
  6. 关于MemoryBarrier
  7. web开发与设计,这些网站为你提供大量的开发资源与设计灵感
  8. 故障树FTA(fault tree analysis)工具链
  9. 智慧经营误区为何很多人还在执迷不悟?
  10. 小程序用户协议页面实现
  11. 【ES】1318- 这些 ES7-ES12 的知识点你都掌握了吗?
  12. 你真的了解重排和重绘吗?
  13. On ne change pas 做梦的fille
  14. 如何打造极速F1赛事?乐视云用六路信号还原比赛现场
  15. java读取文本文件从第二行_Java:我不明白为什么文本阅读器开始从第二行读取文本...
  16. 学术会议报告PPT设计及内容注意事项
  17. Vue、Html前端页面引入live2dw 使用看板娘
  18. ObjAuto.pas单元补完 delphi7反射
  19. 暗黑破坏神3怎么修改服务器,暗黑破坏神3设定档更新中解决办法
  20. 如何用 GPU 硬件层加速优化 Android 系统的游戏流畅度

热门文章

  1. ubuntu安装python3.6_Ubuntu上安装python3.6以及多版本python管理 | SQN
  2. python 生成字符串_Python字符串生成器,按照特定的顺序
  3. java 文件与base64_java之文件与base64字符之间的相互转换
  4. 如何销毁一个实例化对象_JAVA中如何创建和销毁对象
  5. 数据结构-队列1-顺序存储
  6. 【Python】pysnooper模块对代码进行调试
  7. JS关键字和保留字汇总(小记)
  8. 学习笔记(十一)——数据库的索引碎片、计划缓存、统计信息
  9. 中值滤波去除图像噪声的matlab程序
  10. c语言中'.'与'-'的区别