一、引言
在数据分析和用户行为研究领域,事件模型和SPM(Sequence Pattern Mining,序列模式挖掘)模型是两种重要的方法论,广泛应用于产品优化、用户行为分析和市场营销等方面。以下是对这两种模型的简述
二、事件模型
事件模型是一种关注于用户在特定时间点上所执行操作的方法,主要用于捕捉和分析用户行为中的“事件”。事件可以是用户与产品的互动,如点击按钮、浏览页面、提交表单或完成购买等。事件模型的核心目标是识别和理解用户行为背后的意图和模式,以便优化用户体验和提升产品性能。
所谓的【事件模型】,其实是【事件 – 用户模型】,简单理解,我们把用户的行为记录为事件和用户,分别存在事件表和用户表中,事件表中记录 Who、When、Where、What、How,即谁在什么时间,什么地点,以什么样的方式,做了一件什么样的事,用户表里面记录了某个用户有什么样的属性特征,比如年龄、性别等。
一个完整的事件( Event ),包含如下的几个关键因素:
Who:即参与这个事件的用户是谁。
When:即这个事件发生的实际时间。
Where:即事件发生的地点。
How:即用户从事这个事件的方式。这个概念就比较广了,包括用户使用的设备、使用的浏览器、使用的 App 版本、操作系统版本、进入的渠道、跳转过来时的 referer 等。
What:以字段的方式记录用户所做的事件的具体内容。
不同的事件需要记录的信息不同,下面给出一些典型的例子:
对于一个“购买”类型的事件,则可能需要记录的字段有:商品名称、商品类型、购买数量、购买金额、付款方式等;
对于一个“搜索”类型的事件,则可能需要记录的字段有:搜索关键词、搜索类型等;
对于一个“点击”类型的事件,则可能需要记录的字段有:点击 URL、点击 title、点击位置等;
对于一个“用户注册”类型的事件,则可能需要记录的字段有:注册渠道、注册邀请码等;
对于一个“用户投诉”类型的事件,则可能需要记录的字段有:投诉内容、投诉对象、投诉渠道、投诉方式等;
对于一个“申请退货”类型的事件,则可能需要记录的字段有:退货金额、退货原因、退货方式等。
描述事件的任意一个字段,都是一个事件属性。应该采集哪些事件,以及每个事件采集哪些事件属性,完全取决于产品形态以及分析需求。
事件模型优点
经过作者团队对事件模型调研和长时间的实践,总结如下三点:
1) 抽象能力强,能全面、精细地描述的用户行为
相比于 PC 时代的页面模型,事件模型表达能力更强,能刻画更多类型的用户行为;因为,对于页面模型的埋点,在最开始的时候已经固定好了采集哪几种类型的行为,比如页面浏览、按钮点击、push点击等等,不同类型的埋点也确定了其中会采集哪些字段,如果后续业务同学想在某个埋点中新增个性化的字段是比较麻烦的。
针对添加个性化字段的需求,一种解决方式是,我们在每类埋点中都预留一个 valvus 字段,以 k-v 的形式来记录此类埋点下所有个性化的字段,这样是可以解决问题,但成本比较高:
一个字段中存了多个信息,埋点元数据的管理成本增加;这样的字段非常灵活,难以约束业务方按照约定上报数据,有可能会出现一个 values 字段包含了上千个k-v,数据质量难以把控;在后期处理数据时,需要做额外的解析工作。另外,对于页面模型,如果后面要再采集一类埋点,需要重新设计一类埋点,后面的表、查询模型都要重新开发,非常的不灵活。
2)可打通业务数据和行为数据,实现更精细的用户行为分析
要把业务数据放入页面模型中是比较困难的,而对于事件模型,只要这个业务过程是有用户参与,就可以把业务数据表示为谁在什么时间、什么地点、以什么样的方式、做了一件什么样的事;随着用户行为分析越来精细,越来越深入业务,打通业务数据和行为数据已经是一件必要的事了,而事件模型在数据采集阶段就解决了这个问题。
3)容易理解,埋点设计起来相对容易
事件模型把用户和用户行为描述为「谁在什么时间,什么地点,以什么样的方式,做了一件什么样的事,这个用户有什么样的属性特征」,非常贴近自然语言,在很大程度上降低了模型的理解难度。
三、SPM模型
(一)什么是SPM
SPM,全称超级位置模型(Super Position Model),是大数据中 Web 端和 APP 端采集用户在界面具体位置上的行为日志数据。同时,由 SCM (Super Content Model,超级内容模型)配合来获取位置中的内容,它们一起来完成用户行为细节的数据收集。
SPM 和 SCM 范式最早由阿里巴巴提出并应用,现已成为大数据采集中数据埋点的重要规范。
阿里在使用时spm时,通过spm-pre来标识上级来源页面的上级页面,通过spm-url来标识上级来源页面,通过spm-cnt来标识当前页面,其关系见下图,使用该逻辑在不进行join的情况下可以追踪用户当前行为的前2级页面具体点击位置,通常而言,追踪前一级页面就能够满足绝大多数的使用场景。
(二)SPM的应用场景
因为spm编码本身是有层次的,因此,我们可以:
单独统计spm的a部分,我们可以知道某一类站点的访问和点击情况,以及后续引导和成交情况。
单独统计spm的a.b部分,我们可以用来评估某一个站点的访问和点击效果,以及后续引导和成交情况。
单独统计spm的a.b.c部分,我们可以用来评估某一个站点上某一频道的访问和点击效果,以及后续引导和成交情况。
单独统计spm的a.b.c.d部分,我们可以用来评估某一个频道上某一具体页面的点击效果,以及后续引导和成交情况。
(三)设计思路
阿里的设计应用:
SPM核心包含如下几个等级的信息:
一是事件标记、二是事件类型、三是跳转关系、四是流量通道、五是其他参数。
1、事件标记
我们用a.b.c.d用来标记某个页面中的某个事件。
a位:代表用户端层级,举例来说,手机淘宝App的a位,可以用tbapp标记,淘宝PC端可以用tbpc来标记,支付宝App端可以用alipayapp标记。
b位:代表端内的某个页面,如homepage则可以代表首页,cartpage可以代表购物车。
c位:代表某个页面中的某个区块,如购物车中,每个商品前面会有单选框,我们可以用S
singlebox标记,或者在淘宝首页有个聚划算区块,我们则可以用superdeal标记。
d位:代表某个区块中的某个具体的点击位置。拿上面的购物车中单选框举例,页面中有多个商品,每个商品前面都有单选框,这是后我们可以用1、2、3、4…直接标记勾选框的位置,或者是superdeal模块中,点击标题、商品都可以进入聚划算的页面,则可以用title表示点击了标题,用1、2表示点击了第几个商品模块。
例子总结:
spm=tbapp.homepage.searchbar.camera代表淘宝app中,首页顶部搜索栏中的相机按钮点击。
spm=tbapp.cartpage.product.1代表的是购物车中最上方第一个产品位的点击。
总体来说,d位置的定义相对来说会比较灵活,甚至还可以基于这个模型,扩展e的位置用来标记每一次请求,只要和数据团队约定好,不需要循规蹈矩。
2、事件类型
abcd位仅能标记一个具体的位置,而区分不同的事件类型,基于特定事件类型记录不同的通用参数信息,才能覆盖到所有的统计需求,同时也有助于降低数据加工的难度和资源消耗,而以下三种类型基本够用。
页面类型:为了统计页面颗粒度的用户行为,当进入和退出页面时,需要记录用户id、设备id、时间戳、进入还是退出等参数,则可以统计每个页面的UV、PV、用户停留时长等数据。
点击类型:长按、滑动等我们都算作点击类型,无需其他解释。
曝光类型:指的是对于某个特定模块级别的曝光,比如说商品的曝光、视频的曝光,结合点击类型的事件一起来看,则可以计算出某个商品、帖子、视频的点击率。
3、跳转关系
在跳转关系上,我们一般来说,只要在URL中,记录上一跳和上两跳的关系即可。
举例来说,我在购物车页面点击了第一个商品,则可以上报一次点击事件:spm=tbapp.cartpage.product.1
但上一跳我们可能是从某个商品详情过来的,那可以记录为:spm-pre=tbapp.detail.bottombar.addcart
上二跳我们可能是从首页的猜你喜欢信息流的第五个商品过来的,那可以记录为:
spm-pre2=tbapp.homepage.youmaylike.5
如此,用户的动线就被串联起来了。
4、流量通道
那很有可能的是,我们要观察的颗粒度并不是一个页面,而是一组页面作为的一个大的功能模块,比如说首页的某一个频道,包含了多个页面,那如何去统计呢?这时候就要引入流量通道的概念。
比如说,我们把一个秒杀频道包含的3张页面,都标记为一个流量通道flashdeal,那只要将这三张页面的UV进行去重,则得到了这个频道的总UV,其他的点击、PV等也是同理在统计逻辑上处理即可。
5、其他参数
其他参数相对来说自定义性比较高,但主要是针对不同的事件类型,我们要做一些规范通用的参数,比如点击商品或者视频的时候,必须要记录商品及视频的ID。这样才能在数据统计逻辑上知道商品颗粒度的分析。
四、总结
事件模型和SPM模型在用户行为分析中相辅相成,前者能够提供实时的用户交互数据,帮助快速响应用户需求;而后者则注重深入挖掘数据中的潜在模式,为长期的产品策略和市场决策提供支持。将这两种模型结合使用,可以更全面地理解用户行为,提高产品的竞争力。