全部产品
云市场

数据埋点

更新时间:2019-08-27 11:24:59

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

使用业务场景

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

1

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

训练数据

内容表

为需要向用户推荐的具体的内容,用户需要将所有需要推荐的内容,输入到内容表中。智能推荐通过模型训练,返回给每一个具体用户最合适的item内容。我们建议您提供有效内容的内容表,这样尽量避免无效数据而形成的噪音,这对推荐效果的提升,有显著的帮助。
2

用户表

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

行为表

需要将推荐相关的行为,输入到behavior表中,这部分内容是智能推荐训练模型的核心要素,脏数据会严重影响模型训练结果。具体什么是推荐相关行为,如下图举例所示:

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

注:必须是推荐场景下的行为(eg:对于用户搜索出来的结果页的相关行为,不属于),否则会严重干扰模型

埋点数据

曝光行为埋点

什么是曝光行为

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

如何埋点

曝光行为主要在客户端进行埋点,举例如下:
4
如上图,用户浏览首页,产生了对itemA和itemB的曝光行为,需要埋点加以记录。

埋点注意事项

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

  1. 需要在客户端有展示透出的行为(也就是用户可以直观的看到)
  2. 需要有一定的停留时长(比如1s)
  3. 短时间内对同一个用户的反复曝光,不应累积,只算1次。

    埋点反例

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

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

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

6

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

点击行为埋点

什么是点击行为

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

如何埋点

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

7

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

埋点注意事项

一条数据定位曝行为,需要满足以下3个要素
1、需要在客户端,用户产生有效的点击行为。
2、点击行为对点击后阅读时长不做限制。
3、短时间内同一用户的多次点击,不应累积,只算1次。

场景ID埋点

什么是场景

场景对应的是内容(item)表和行为(behavior)表中scene_id字段,是指数据投放的不同场景,可以理解成是对数据的一个分类。用户如果只有一个场景需要投放,该字段可以不填(默认是1,页面测试查询的时候需要带上)。

如何埋点

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

如上图,用户有3个场景接入了推荐系统,分别定义三个场景的ID为1,2,3(可以是自定义)。则所有在对应场景下产生的行为以及数据,均需要埋点记录对应的scene_id,并回传到智能推荐系统中。

埋点注意事项

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

如何使用

在通过SDK查询推荐结果时,需要带上对应的scene_id,展示对应的场景下的结果。对于有些用户会有首页的推荐需求:1、首页没有自己的item数据。2、希望首页展示的是多个场景下聚合的item数据。如下图:
9

此时,对于首页推荐的结果,只需要查询时将scene_id置为*即可。

总结来说:
1、召回用什么场景ID,回传行为的时候就回传什么ID
2、希望召回所有场景的数据,将场景ID置为*

TAG埋点

什么是tag

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

如何埋点

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

如上图,可以对该item提炼出:NBA,篮球,哈登,热火等相关tag,并以逗号分隔方式,传入item表中。

类目层级埋点

什么是类目层级

类目层级对应的是内容(item)表中的category_path和category_level字段,主要作用是对相同主题和属性的内容(item)进行归类,在打散功能(见下文解释)中会使用到。

如何埋点

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

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

如何使用

类目分类在用户配置混排打散功能时,会出现按类目比例返回查询结果的效果。例如:对上文数据,如果配置打散层级是2,那么体育场景下查出来的推荐结果,itemA,itemB,itemC会在NBA,CBA,中超三类上混合展示。如果配置打散层级为1,那么推荐结果会是足球,篮球的混排结果。

失效时间埋点

什么是失效时间

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

如何埋点

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

埋点注意事项

1、如果本条内容(item)没有失效时间,则上传的对应字段置为空即可
2、失效时间需要以时间戳方式提供,单位为秒(s)
3、如果第一次上传的所有数据均过期,服务无法启动

STATUS埋点

什么是status

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

如何埋点

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

埋点注意事项

1、内容(item)表中的status字段为必填项,无法置为空。
2、第一次上传数据时,如果全部内容(item)的status埋点数据为0,则服务无法启动。

相关概念

  • feed流:是一种给用户持续提供内容的数据形式。
  • 浏览深度:在一个计算周期内,每个访问次数给统计对象所带来的页面浏览量和均值。
  • 停留时长:用户在某一个页面停留的时间。
  • 打散:一次推荐查询中,返回的推荐结果包含多类目数据。