文档首页> 推荐系统 RES> 快速入门> 自定义场景(热度推荐)
更新时间:2023-06-20 GMT+08:00
分享

自定义场景(热度推荐)

RES提供了推荐算法,让用户能够根据场景自定义推荐策略,可以基于RES提供的多种召回、排序算法等进行自定义的推荐场景创建。

本章节介绍热度推荐场景的搭建样例,该场景常见于电商或者视频网站首页的排行榜或者畅销榜等。

上述推荐场景在RES的自定义场景通过简单配置和计算,即可完成典型的热度推荐功能,通过RES内置综合行为热度排序算法,使用户能够快速够获取到时下最流行的信息。

开始使用样例前,请仔细阅读准备工作罗列的要求,提前完成准备工作。

准备工作

  • 已注册华为帐号并开通华为云,且在使用RES前检查账号状态,账号不能处于欠费或冻结状态。
  • 已在OBS服务中创建桶和文件夹,用于存放样例数据。

    创建OBS桶和文件夹的操作指导请参见创建桶新建文件夹。确保您使用的OBS目录与RES在同一区域。

使用自定义场景获取推荐结果的步骤如下所示:

步骤1:准备数据

RES在公共OBS桶中提供了猜你喜欢的示例数据集,命名为“test-data”,因此,本文的操作示例使用此数据集进行构建。您需要执行如下操作,将数据集上传至您的OBS目录下,即准备工作中您创建的OBS目录。

  1. 单击下载样例数据,将“test-data”数据集下载至本地。
  2. 在本地,将“test-data”压缩包解压。例如,解压至本地“test-data”文件夹下。
  3. “test-data”文件夹下,将behavior.txt中的每条数据的actionTime字段的值修改到当前时间附近。将item.txt中的每条数据的publishTime字段的值修改到当前时间附近,将item.txt中的每条数据的expireTime字段的值修改成大于当前时间的值,避免数据因为过期被过滤掉。
    1. 查询当前时间戳,网址https://tool.lu/timestamp。
      图1 查询当前时间戳
    2. 将behavior.txt中的每条数据的actionTime字段的值修改到当前时间附近。
      图2 修改behavior.txt文件
    3. 将item.txt中的每条数据的publishTime字段的值修改到当前时间附近,将item.txt中的每条数据的expireTime字段的值修改成大于当前时间的值。
      图3 修改item.txt文件
  4. 参考上传文件,将“test-data”文件夹下的所有文件上传至准备工作中您创建的OBS路径下。

步骤2:创建离线数据源

数据下载并上传至OBS后,您需要创建一个数据源用于后续的计算。具体操作步骤如下:

  1. 登录RES管理控制台,在左侧菜单栏中选择“数据源”,进入“数据源”列表页面。
  2. 单击“创建”,在创建数据源页面,输入数据源名称,选择离线计算规格,然后单击选择数据的OBS存储路径。
    图4 创建离线数据源
  3. 数据路径选择完成后单击“立即创建”
  4. 离线数据源创建完成后,在数据源列表页面单击目标数据源名称进行数据质量管理,具体操作请参见推荐系统用户指南>数据源质量管理,完成数据探索并生成数据质量报告,此步骤完成后创建的数据源才可用。

步骤3:创建自定义场景

  1. 在RES管理控制台,在左侧导航栏中选择“推荐业务 > 自定义场景”,然后单击“创建”进行场景的配置。
  2. “基本信息”页面,配置“基本信息”“数据区间”“场景规格”信息。完成参数配置后单击“创建并下一步:召回策略”,进入召回策略的配置。
    • “场景名称”:自定义您的场景名称,自定义样例为“hot-scene”
    • “场景类型”:选择基于用户推荐物品。
    • “服务类型”:选择推荐引擎。
    • “数据源”:选择步骤2中创建完成的数据源。
    • “数据区间”:选取离线数据中最近N天的数据(从数据中最近的有效时间之前30天)。
    • “场景规格”:由于此样例中使用的测试数据量较小,此处场景规格均默认选最小配置,“在线并发规格”是指在线服务获得推荐的最高调用次数,单位为次每秒,取值范围为5-500。
      图5 自定义场景基本信息
  3. “召回策略”页面,单击“添加召回策略”选择“基于综合行为热度推荐”,进入策略详情页进行参数配置。
    • “名称”:自定义您的作业名称,自定义样例为“hot-recall”
    • “行为次数统计方法”:选择“uv”,即相同的行为记录会进行去重。“pv”的意思是同样行为记录不会去重。
    • “用户分群”:数据源类型包括用户特征和物品特征,根据数据源筛选数据, 选出需要的属性。只能选择进行用户分组还是物品分组,分组内可配置多个特征。默认关闭。
    • “最大推荐数结果数”:指定召回的结果数量。
    • “开启时间跨度”:不开启取全部数据,开启则指定从数据源中取最近天数或小时数的行为数据计算相似度。默认关闭。
    • “开启调度”:开启调度,按照指定的调度策略定期执行作业。默认关闭。
      图6 创建召回策略
  4. 配置完成召回策略参数之后单击“确认”,创建召回策略成功,继续单击“下一步”,跳过可选步骤过滤策略和排序策略,进入“在线服务”页面,进行在线服务的配置。
  5. “在线服务”配置页面,进行在线流程配置,配置完成后单击“创建并完成”
    • “在线流程”:自定义在线流程名称,此样例命名为“hot-flow”
    • “推荐候选集”:选择步骤3配置的召回策略生成的召回结果集“hot-recall-DIREC”
    • “过滤”:非必选,此样例进行黑名单过滤配置来完成在线的推荐结果过滤。
    • “行为过滤”:配置“时间区间”“3”“行为类型”选择“物品曝光”即为在线服务生成的结果会过滤近三天内用户浏览过的物品,可以提高结果集的丰富度,尤其是在短视频领域,达到推荐的视频列表不包含近期看过的视频,避免重复推送。
      图7 添加在线流程

步骤4:发布自定义场景

  1. 自定义场景创建完成,在自定义场景列表,选择目标场景,即步骤3:创建自定义场景创建的“hot-scene”
  2. 单击目标场景“操作”列的“发布”即可以启动场景的运行。
  3. 待自定义场景列表,目标场景状态为“运行中”时,代表发布成功。
    图8 发布服务

步骤5:获取预测结果

在线服务发布执行成功后,您可以进入在线服务,发起预测请求进行测试。

  1. “自定义场景”列表页面,单击目标场景名称,进入“自定义场景详情”页面。
  2. 单击“预测”页签,进入预测页面。
  3. 预测方式选择“代码”,在“预测代码”部分输入预测代码。单击“预测”,右侧出现排序后的预测结果。

    由于此处是测试服务,为保证测试效果,此处选用测试数据中的用户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"
      }
      ]
      }

步骤6:清除相应资源,避免产生费用

为避免产生不必要的费用,在完成试用后,建议您删除相关资源,如自定义场景、数据源及其OBS目录。

  • 删除数据源:在“数据源”页面,单击操作列的“删除”
  • 删除自定义场景作业:在“推荐业务>自定义场景”页面,单击操作列的“删除”。删除自定义场景后,其对应的召回策略和在线服务都将被删除。
  • 删除数据:前往OBS,删除上传的数据,然后删除文件夹及OBS桶。
分享:

    相关文档

    相关产品