推荐诊断功能

推荐接口完成后,算法同学希望可以可视化的看到推荐结果,能把相关的 itemid 内容展示出来,这个可以对推荐结果有效的诊断,分析判断当前的推荐结果是否可靠。

目前实验工具提供了三种诊断方式,来从不同的角度分析推荐结果。

  • 推荐结果诊断, 用于模拟调用推荐接口,对返回的数据进行扩充,比如针对 itemid 可以增加更多的内容,比如图片、视频、标题、描述等等,方便直观的感知推荐结果是否可靠

  • 召回ID串诊断,主要用于召回层的分析。可以分析某一路或者某几路召回,查询一批 itemid 的信息

  • 用户行为分析 , 用于查看某个用户的历史行为,比如曝光,点击,收藏,分享等等,可以看到历史行为相关的 item 信息。

数据表管理

我们需要额外的数据来展示 item 信息。实际上会有额外的表来存储 item 信息,当通过推荐结果获取到 itemid 之后,可以通过 itemid 与 item 信息关联起来。

image-20210825112256304

我们可以设置元数据的名称,选择数据源类型(mysql, hologres), 选择已经配置好的数据源, 表名称以及表的详细字段。这里表的字段可以是整个表字段的子集,如果想展示哪些字段,就列出来就可以了。

推荐结果诊断

image-20210825113535664

这里需要选择一下在【元数据管理/数据源管理】中已经配置好的 eas 类型的数据源

这里需要注意一点,推荐接口返回的数据格式是有约定的,返回的数据是 json 格式,有 items 列表,items 每个元素有 item_id 的字段。如果推荐接口里没有这些字段,可以用 debug 方式去调用接口,debug 模式下可以加上这些信息。下面红框里的字段是必须的,也必须按照这个结构来。其余字段都不是必要的。

image-20210825114114370

召回ID串诊断

这里主要是分析召回的 ID 列表是不是可靠的。这里逻辑相对简单,根据 itemId 获取到 item 的基本信息。在展现形式上,与推荐结果诊断也是一致的。

recall_i2i_demo

用户行为分析

根据用户的行为找出 itemId 列表,然后展现出来。这里需要用到用户的行为表。在这里,行为表我们也是约定好的。

主要字段包括如下。这里列出的是主要字段,下面的表可以扩充更多的字段,只要包含下面的字段即可。

BEGIN;
DROP TABLE IF EXISTS "sv_rec"."user_behavior";
CREATE TABLE "sv_rec"."user_behavior" (
 "uid" text NOT NULL,
 "itemid" text NOT NULL,
 "event" text NOT NULL,
 "timestamp" timestamptz NOT NULL
);
CALL SET_TABLE_PROPERTY('"sv_rec"."user_behavior"', 'orientation', 'row');
CALL SET_TABLE_PROPERTY('"sv_rec"."user_behavior"', 'clustering_key', '"uid","timestamp:desc"');
CALL SET_TABLE_PROPERTY('"sv_rec"."user_behavior"', 'time_to_live_in_seconds', '2592000');
comment on column "sv_rec"."user_behavior"."uid" is '用户ID';
comment on column "sv_rec"."user_behavior"."itemid" is 'itemID';
comment on column "sv_rec"."user_behavior"."event" is '用户的行为事件,包括点击,收藏,分享等';
comment on column "sv_rec"."user_behavior"."timestamp" is '事件发生时间';
COMMIT;

元数据可以如下定义。这里 user 表信息不需要完全列出来,需要把 uid 当成主键记录即可。

image-20210825142621224

这里需要关联两个表,用户的行为表和item信息表。这里选择任意的维度,实际上是过滤字段。比如维度可以设成 event=exposure, 或者 page=p_svhome , 还可以添加任意多个维度。

image-20210825142917802