文档

数据埋点指南

更新时间:

本文通过新闻行业举例说明,智能推荐适合什么样的场景,需要怎么样的埋点数据进行模型训练。

使用业务场景

以智能推荐的猜你喜欢新闻行业为例,适用于首页的feed流推荐,以优化用户的点击率为主。如下图所示:

1

目的为通过终端用户的浏览行为,引导终端用户点击阅读feed流中推荐的内容,并在浏览深度,停留时长等相关指标有一定的促进。

训练数据

内容表

是需要向终端用户推荐的具体的内容,购买了AIRec的企业客户需要将所有需要推荐的内容,上传到内容表中。智能推荐通过模型训练,返回给每一个具体终端用户最合适的item内容。我们建议您提供有效内容的数据,这样能尽量避免无效数据而形成的影响,这对推荐效果的提升,有显著的帮助。

image.png

用户表

需要将阅读新闻的每一个终端用户相关信息,上传到用户表中,智能推荐会训练不同终端用户的喜好行为,为其推荐出最感兴趣的内容。

行为表

需要将终端用户产生的行为数据,上传到behavior表中,这部分内容是智能推荐训练模型的核心要素,脏数据会严重影响模型训练结果。行为数据如下图举例所示:

step1:打开频道

image.png

step2:点击itemC,进入详情页

image.png

用户进行了如上操作后,产生了4条推荐相关的行为:对3条item的曝光行为,对itemA的点击行为。需要将此4条行为分别记录,并按要求上传到智能推荐系统中。

埋点数据

曝光行为埋点

什么是曝光行为

曝光对应的是行为(behavior)表的bhv_type字段,是上传用户行为的一种类型。一条数据展示给用户一次,就算做一条曝光行为。

如何埋点

曝光行为主要在客户端进行埋点,举例如下:

image.png

如上图,用户浏览首页,产生了对itemA、itemB和itemC的曝光行为,需要埋点加以记录。

埋点注意事项

一条数据定位曝光行为,需要满足以下3个要素:

  1. 需要是在客户端有展示透出的行为(也就是用户可以直观的看到);

  2. 需要有一定的停留时长(比如1s);

  3. 短时间内对同一个用户的反复曝光,不应累积,只算1次。

    埋点反例

    1、对于用户在客户端首页的上下滑动,不应累积曝光。—- 不满足上述的第3条要素,如下图

    image.png

    页面下滑后:

    image.png

    之后用户再次上滑:

    image.png

此时,所有的item(A-F)都应该分别只算做1次曝光行为(尤其是A-D,只算1次)。也就是说,只需要传给智能推荐系统6条曝光行为数据(每条数据对应1个item)。

2、对于用户从feed流点击进入详情页,再返回feed流首页,也不应累积曝光。—-不满足第3条要素。

如:

image.png

用户点击

image.png

之后返回上图1feed流。

此时,item(A-C)分别只产生了1次曝光(其中C还产生了一次点击)。需要传给智能推荐4条行为数据(A,B,C的曝光 + C的点击)

点击行为埋点

什么是点击行为

点击行为相对比较好理解,只要用户对某一个item点击阅读详情,均算作一次点击。

如何埋点

点击行为主要在客户端进行埋点,举例如下:

在feed流页面,点击C内容

image.png

进入详情页:

image.png

如上行为,用户对itemA的阅读,算是对itemA的一次点击行为。

埋点注意事项

一条数据定位点击行为,需要满足以下3个要素:

1、需要在客户端,用户产生有效的点击行为。

2、点击行为对点击后阅读时长不做限制。

3、短时间内同一用户的多次点击,不应累积,只算1次。

场景ID埋点

什么是场景

场景对应的是内容(item)表和行为(behavior)表中scene_id字段,是指数据投放的不同场景,可以理解成是对数据的一个分类。

如何埋点

场景的埋点内容(item)主要在客户的服务器端对item进行分类,行为(behavior)主要在客户端对指定投放场景的记录。举例如下:

image.png

如上图,假设有“思想”、“生活”、“体育”3个场景接入了推荐系统,我们分别定义三个场景的ID为1,2,3(可自定义)。则所有在对应场景下产生的行为以及数据,均需要埋点记录对应的scene_id,并回传到智能推荐系统中,数据区别大致如下。

item表数据为

A:

item_id:itemA, scene_id:2

B:

item_id: itemB, scene_id:2

C:

item_id: itemC, scene_id:2

behavior表数据为

type:expose,scene_id:2,item_id: itemA

type:expose,scene_id:2,item_id: itemB

type:expose,scene_id:2,item_id: itemC

埋点注意事项

场景ID只是用来区分item(内容)所投放到前端的产品场景,理论上只要能明确的区分不同场景即可,不体现场景的父子关系。如:体育频道下可能您会有最新比分、赛事预告、赛事点评等,针对这种情况,我们不建议使用场景ID区分,可以使用下文提到的类目进行划分。

如何使用

在通过服务端SDK获取推荐结果时,需要带上对应的scene_id,展示对应的场景下的结果。对于有些用户会有首页的推荐需求:

1、首页没有自己的item数据。

2、希望首页展示的是多个场景下聚合的item数据。如下图中每个tag页为一个不同场景:

image.png

总结来说:召回用什么场景ID,回传行为的时候就回传什么ID

TAGS埋点

什么是tags

TAGS对应的是user表和item表中的tags字段,是指您对内容(item)提炼的特征的文本描述,多个tags之间直接以英文逗号分隔。

如何埋点

tags的埋点主要在服务器端或者人工运营,算法团队,对内容(item)进行的提炼,举例如下:0

如上图,可以对该item提炼出:SUV,丰田,汉兰达等相关tag,并以英文逗号分隔方式,传入item表中。

类目层级埋点

什么是类目层级

类目层级对应的是内容(item)表中的category_path和category_level字段,主要作用是对相同主题和属性的内容(item)进行归类,在通过实例运营策略提升推荐结果多样性(见下文解释)中会使用到。

如何埋点

类目层级的埋点主要在服务器端,对内容(item)进行归类,举例如下:11

(仅对关键字段举例)

item_id

category_path(类目分类)

category_level

A

足球_中超

2

B

篮球_CBA

2

C

足球_恒大

2

对相关场景下的分类后,对应item的埋点数据填写如上所示。

失效时间埋点

什么是失效时间

失效时间对应的是内容(item)表中的expire_time字段,用来定义本条数据的过期时间。当服务器的时间大于该值时,本条数据将强制不被推荐。

如何埋点

失效时间的埋点主要在服务器端,按某一系统规则自动或者由人工设置。

埋点注意事项

1、如果本条内容(item)没有失效时间,则上传的对应字段置为空即可;

2、失效时间需要以时间戳方式提供,单位为秒(s);

3、如果第一次上传的所有数据均过期,服务无法启动。

STATUS埋点

什么是status

status对应的是内容(item)表中的status字段,用来定义本条数据是否可推荐(0:不可推荐,1:可推荐)。

如何埋点

status的埋点主要在服务器端,按某一系统规则自动或者由人工设置。

埋点注意事项

1、内容(item)表中的status字段为必填项,无法置为空;

2、第一次上传数据时,如果全部内容(item)的status埋点数据为0,则服务无法启动。

相关概念

  • feed流:是一种给用户持续提供内容的数据形式。

  • 浏览深度:在一个计算周期内,每个访问次数给统计对象所带来的页面浏览量和均值。

  • 停留时长:用户在某一个页面停留的时间。

  • 打散:一次推荐查询中,返回的推荐结果包含多类目数据。