Will Dx

人世一身霜雪, 归来仍是少年.

数加推荐引擎实验记录

Posted April 07, 2017

实验说明

某影视网站,提供在线观看电影的服务。为了提升用户体验,希望能精准的推荐电影给网站用户。初步计划在两种场景下分别实现个性化的推荐:

第一,当用户进入网站首页时,推荐TA可能喜欢的电影,结合该用户的历史行为信息进行推荐;

第二,当用户进入详情页时,根据当前页面展现的电影信息,结合用户的历史行为信息(注册用户)进行推荐;

本实验将采用周知数据集 MovieLens ,利用阿里云数加平台的个性化推荐,经过简单的数据加工(ETL)和业务场景配置,完成基本的推荐功能。整个实验包含的步骤和主要的操作内容如下:

实验环境

  • 数加平台
  • 推荐引擎
  • 大数据计算服务MaxCompute(原ODPS)
  • 大数据开发套件DataWorks

实验内容

本实验手册主要基于阿里云数加平台的推荐引擎,对周知的数据集 movielens 进行个性化推荐。包括以下内容:

  • 准备实验环境,包括注册数加平台账户、开通MaxCompute(原ODPS)服务、开通数加平台的推荐引擎。如果上述服务均已开通,可以忽略该节内容;

  • 准备实验数据,下载数据集movielens,并对该数据集进行说明,同时上传该数据到ODPS

  • 实验数据上传和加工,即将业务数据按照约定加载到基础数据模型中去

  • 配置推荐引擎,了解推荐引擎的基本功能,包括资源、业务、场景、启动计算任务以及调用推荐结果

实验过程

1. 添加云计算资源

需要添加的资源有三类:大数据计算服务、表格存储服务以及云监控,其中大数据计算服务是存储数据和进行推荐算法计算的地方,表格存储是用来保存结果的,可以支持在线访问,云监控是用来监控整个处理过程的,有问题的时候可以报警。前一项是必选项,后两项是可选项,此处我们只配置必选项。

2. 添加业务

3. 为业务添加数据

在数据配置页面,物品属性维度表不需要填写数据表名称,其他都按要求输入表名:

将我们在之前的实验中添加过的数据表名称,分别填写到对应的位置:

“用户表”为movielensusermeta,

“用户属性维度表”为 movielensusermeta_config

“物品表”为movielensitemmeta

“行为表”为 movielensuserbehavior

信息填充完成后,点击保存,此时推荐引擎左侧菜单栏会显示“测试”和“线上”这两个菜单。点击“测试”菜单,可进入测试场景配置页面。点击“线上”按钮,可进入线上场景配置页面。

4. 为业务创建推荐场景

添加指标

指标是和将来场景上线后的统计报表有关,需要和行为表的数据相匹配。一般涉及的行为包括:浏览,点击和消费等。在使用MovieLens数据集中,由于行为都是打分(grade),所以这里可以不设置。

配置API参数

设置算法策略

算法策略中系统内置了业界常见的推荐算法,部分算法策略同时包含了离线算法和近线算法。离线的计算发生在MaxCompute中,离线算法用于将MaxCompute中的数据进行算法计算,再将计算得到的推荐结果传输到在线存储中供在线/近线计算使用。近线和在线的计算都发生在在线服务中,区别在于近线计算的实时数据输入是来自于日志API上传的数据(例如看过的电影不需要再被推荐,看过的电影通过日志API上传行为数据,近线计算接收数据后会将离线推荐结果中看过的电影剔除掉)。离线计算的实时数据输入是来自于推荐API,典型例子就是通过推荐API输入一个用户ID,在线计算需要在毫秒级响应中立即做计算(过滤、排序)并返回推荐结果。

此处我们选择默认推荐,添加策略后需要点击保存按钮。需要注意的是,不同的算法策略经过计算输出的推荐结果会不同,这些推荐结果将在后面的配置在线流程中进行使用。

由于我们的实验数据的主要行为是grade,所以点击ItemCF算法策略的参数设置,将行为权重设置为grade的行为,推荐列表返回的item数量也可以进行修改设置:

设置在线流程

在线流程可以设置ABtest,即多种推荐算法进行对比,当然这也需要在前面算法策略设定时选择多种算法。对于推荐结果设置,也可以选择多种方式生成推荐候选集。我们这里设置为用户对物品的推荐候选集。

启动离线计算

算法配置完成后,在场景列表上点击“计算”,在弹出的页面中选择需要计算的数据的日期,再点击启动计算,即可触发离线计算。

点击右侧日志查看按钮,可查看所有计算的离线任务和LOG信息。 在日志列表页点击“查看”按钮,会显示算法计算的路程节点图,双击节点可查看详细的LOG内容:

上线场景

在推荐引擎中,测试场景用于进行测试,线上场景用于对接您的APP。测试场景中的算法配置好以后,可以将场景“上线”到线上,在线上场景里可以调用推荐API进行接口测试和对接。

上线完成后,点击“线上”即可看到上线的场景列表。此时可以在线上的场景列表中选择指定的场景进行离线计算、查看已配置的算法策略、调试推荐API等。

查看离线处理结果

离线处理的推荐结果,会保存在在线存储中。如果您使用的自己购买的“表格存储”云产品,则可以在表格存储中看到离线产出的结果数据。登录阿里云官网(www.aliyun.com),点击“管理控制台”,进入管理控制台首页,点击“表格存储”:

(PS: 在第一步, 添加云计算资源步骤中, 如果没有添加表格存储那么就无法查询到)

使用API实现首页推荐

  • 测试

  • 线上

#分区字段

#物品属性维度表

#行为表01

#行为表02

#行为表03

#可推荐物品表

#朋友关系表