自定义场景(热度推荐)
RES提供了推荐算法,让用户能够根据场景自定义推荐策略,可以基于RES提供的多种召回、排序算法等进行自定义的推荐场景创建。
本章节介绍热度推荐场景的搭建样例,该场景常见于电商或者视频网站首页的排行榜或者畅销榜等。
上述推荐场景在RES的自定义场景通过简单配置和计算,即可完成典型的热度推荐功能,通过RES内置综合行为热度排序算法,使用户能够快速够获取到时下最流行的信息。
开始使用样例前,请仔细阅读准备工作罗列的要求,提前完成准备工作。
使用自定义场景获取推荐结果的步骤如下所示:
步骤1:准备数据
RES在公共OBS桶中提供了猜你喜欢的示例数据集,命名为“test-data”,因此,本文的操作示例使用此数据集进行构建。您需要执行如下操作,将数据集上传至您的OBS目录下,即准备工作中您创建的OBS目录。
- 单击下载样例数据,将“test-data”数据集下载至本地。
- 在本地,将“test-data”压缩包解压。例如,解压至本地“test-data”文件夹下。
- 在“test-data”文件夹下,将behavior.txt中的每条数据的actionTime字段的值修改到当前时间附近。将item.txt中的每条数据的publishTime字段的值修改到当前时间附近,将item.txt中的每条数据的expireTime字段的值修改成大于当前时间的值,避免数据因为过期被过滤掉。
- 查询当前时间戳,网址https://tool.lu/timestamp。
图1 查询当前时间戳
- 将behavior.txt中的每条数据的actionTime字段的值修改到当前时间附近。
图2 修改behavior.txt文件
- 将item.txt中的每条数据的publishTime字段的值修改到当前时间附近,将item.txt中的每条数据的expireTime字段的值修改成大于当前时间的值。
图3 修改item.txt文件
- 查询当前时间戳,网址https://tool.lu/timestamp。
- 将“test-data”文件夹下的所有文件上传至准备工作中您创建的OBS路径下。
步骤2:创建离线数据源
数据下载并上传至OBS后,您需要创建一个数据源用于后续的计算。具体操作步骤如下:
- 登录RES管理控制台,在左侧菜单栏中选择“数据源”,进入“数据源”列表页面。
- 单击“创建”,在创建数据源页面,输入数据源名称,选择离线计算规格,然后单击选择数据的OBS存储路径。
图4 创建离线数据源
- 数据路径选择完成后单击“立即创建”。
- 离线数据源创建完成后,在数据源列表页面单击目标数据源名称进行数据质量管理,具体操作请参见推荐系统用户指南>数据源质量管理,完成数据探索并生成数据质量报告,此步骤完成后创建的数据源才可用。
步骤3:创建自定义场景
- 在RES管理控制台,在左侧导航栏中选择“推荐业务 > 自定义场景”,然后单击“创建”进行场景的配置。
- 在“基本信息”页面,配置“基本信息”、“数据区间”和“场景规格”信息。完成参数配置后单击“创建并下一步:召回策略”,进入召回策略的配置。
- “场景名称”:自定义您的场景名称,自定义样例为“hot-scene”。
- “场景类型”:选择基于用户推荐物品。
- “服务类型”:选择推荐引擎。
- “数据源”:选择步骤2中创建完成的数据源。
- “数据区间”:选取离线数据中最近N天的数据(从数据中最近的有效时间之前30天)。
- “场景规格”:由于此样例中使用的测试数据量较小,此处场景规格均默认选最小配置,“在线并发规格”是指在线服务获得推荐的最高调用次数,单位为次每秒,取值范围为5-500。
图5 自定义场景基本信息
- 在“召回策略”页面,单击“添加召回策略”选择“基于综合行为热度推荐”,进入策略详情页进行参数配置。
- “名称”:自定义您的作业名称,自定义样例为“hot-recall”。
- “行为次数统计方法”:选择“uv”,即相同的行为记录会进行去重。“pv”的意思是同样行为记录不会去重。
- “用户分群”:数据源类型包括用户特征和物品特征,根据数据源筛选数据, 选出需要的属性。只能选择进行用户分组还是物品分组,分组内可配置多个特征。默认关闭。
- “最大推荐数结果数”:指定召回的结果数量。
- “开启时间跨度”:不开启取全部数据,开启则指定从数据源中取最近天数或小时数的行为数据计算相似度。默认关闭。
- “开启调度”:开启调度,按照指定的调度策略定期执行作业。默认关闭。
图6 创建召回策略
- 配置完成召回策略参数之后单击“确认”,创建召回策略成功,继续单击“下一步”,跳过可选步骤过滤策略和排序策略,进入“在线服务”页面,进行在线服务的配置。
- 在“在线服务”配置页面,进行在线流程配置,配置完成后单击“创建并完成”。
- “在线流程”:自定义在线流程名称,此样例命名为“hot-flow”。
- “推荐候选集”:选择步骤3配置的召回策略生成的召回结果集“hot-recall-DIREC”。
- “过滤”:非必选,此样例进行黑名单过滤配置来完成在线的推荐结果过滤。
- “行为过滤”:配置“时间区间”为“3”,“行为类型”选择“物品曝光”即为在线服务生成的结果会过滤近三天内用户浏览过的物品,可以提高结果集的丰富度,尤其是在短视频领域,达到推荐的视频列表不包含近期看过的视频,避免重复推送。
图7 添加在线流程
步骤4:发布自定义场景
- 自定义场景创建完成,在自定义场景列表,选择目标场景,即步骤3:创建自定义场景创建的“hot-scene”。
- 单击目标场景“操作”列的“发布”即可以启动场景的运行。
- 待自定义场景列表,目标场景状态为“运行中”时,代表发布成功。
图8 发布服务
步骤5:获取预测结果
在线服务发布执行成功后,您可以进入在线服务,发起预测请求进行测试。
- 在“自定义场景”列表页面,单击目标场景名称,进入“自定义场景详情”页面。
- 单击“预测”页签,进入预测页面。
- 预测方式选择“代码”,在“预测代码”部分输入预测代码。单击“预测”,右侧出现排序后的预测结果。
由于此处是测试服务,为保证测试效果,此处选用测试数据中的用户ID进行预测,建议为user894。
图9 预测结果
- 预测代码
{ "id":"user894", "rec_num": 10 }
- 预测结果
{ "flow_id": "hot-flow", "rec_num": 10, "candidates": [ { "id": "item332", "score": 1, "source": "hot-recall-DIREC" }, { "id": "item709", "score": 0.995, "source": "hot-recall-DIREC" }, { "id": "item338", "score": 0.99, "source": "hot-recall-DIREC" }, { "id": "item960", "score": 0.98499995, "source": "hot-recall-DIREC" }, { "id": "item469", "score": 0.97999996, "source": "hot-recall-DIREC" }, { "id": "item236", "score": 0.97499996, "source": "hot-recall-DIREC" } ] }
- 预测代码