全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网
推荐引擎

概念解释

更新时间:2017-06-07 13:26:11

客户(org)

指RecEng的使用者,系统中由其阿里云账号代表。通常客户是一个组织,RecEng中常用org表示客户。

用户(user)

指客户的用户,即RecEng使用者的用户。推荐是一个2C的服务,使用推荐服务的客户必然有其自己的用户,RecEng使用者的用户简称为“用户”,系统中常用user表示用户。

物品(item)

指被推荐给用户的内容,可以是商品,也可以是歌曲,视频等其他内容,系统中常用item表示物品。

业务(biz)

业务针对数据集定义,定义了算法所能使用的数据范围。一个客户在RecEng上可以有多个业务,不同的业务必然有不同的数据集。RecEng要求每个业务提供四类数据(不要求全部提供):用户数据,物品数据,用户行为数据,推荐效果数据。每一组这样的数据就构成一个业务。系统中常用biz表示业务。

比如某客户A有两类被推荐的物品,分别是视频和歌曲,于是客户A可以在RecEng上建立两个业务M和N,其中M的物品数据为视频,N的物品数据为歌曲,其他的数据(指用户数据,用户行为数据等)可以都相同。在这种方案下,业务M和N的数据是独立的,即业务M虽然能看到用户对于歌曲的行为,但是业务M中不包含歌曲的物品数据,所以会丢弃用户对于歌曲的行为;如果业务M中某用户只对歌曲有行为,对视频没有行为,业务M也会丢弃这类用户。反之对业务N亦然。

一个业务最好只推荐一类物品,强行把多类物品放在一个业务中推荐,虽然RecEng不禁止这种做法,但是效果可能会打折扣。

场景(scn)

场景指的是推荐的上下文,说的更直白一点,场景由推荐时可用的参数决定。有两种场景最为常见,分别是首页推荐场景和详情页推荐场景。顾名思义,在执行首页推荐时,可用的参数只有用户信息;而在执行详情页推荐时,可用的参数除了用户信息,还包括当前详情页上所展示的物品信息。系统中常用scn表示场景。

一个业务可以包含多个场景,RecEng并没有限定业务中每类场景的数目,即对于某个业务A,它包含多个首页场景也是完全可以的。

事实上,回到场景的原始定义,场景只是由推荐的上下文决定,客户完全可以根据自己的需求建立全新的场景,比如针对搜索关键词的推荐场景,这时可用的参数除了用户信息,还有用户所输入的关键词。

算法流程(path)

算法流程指数据端到端的处理流程,即从客户的原始输入数据开始,到产出最终的输出结果为止。系统中常用path表示算法流程。

在RecEng中,算法流程分为两类:推荐流程和实时修正流程。下文将会看到,一个场景下可以包含多个推荐流程;一个业务下至多只能包含两个实时修正流程。

推荐流程(rec_path)

推荐流程从客户输入的原始数据,如用户信息,物品信息等开始,一直到产出能够被客户产品在线获取的推荐结果为止。推荐流程由离线流程和在线流程两部分组成,分别完成离线计算和在线推荐。系统中常用rec_path表示推荐流程。

一个场景下可以有多个推荐流程,客户可以为每个推荐流程配置流量占比,实现A/B Testing功能。

  • 离线流程(offline_flow)

    离线流程以客户提供的原始离线数据表,包括用户信息,物品信息,用户行为日志开始,通过离线计算得到每个用户、每个物品的特征,以及每个用户可能感兴趣的物品,和每个物品计算出与之相似的物品等,并将这些结果同步到在线存储表格存储(原OTS)上。系统中常用offline_flow表示离线流程。

  • 在线流程(online_flow)

    在线流程从客户的产品发起的推荐API请求开始,根据API的参数获取指定用户在离线流程中计算好的信息,并根据在线流程定义的规则和算法进行过滤和排序处理,并最终返回给客户的产品。系统中常用online_flow表示在线流程。

效果流程(index_path)

效果流程用于计算效果指标,一般每天一次。和其他流程不一样的是,效果流程的过程不需要客户配置,客户只需要选择需要计算哪些指标,RecEng会自动生成效果流程的计算过程。

实时修正流程(mod_path)

实时修正流程从客户实时上传的实时日志开始,经过一系列在线处理后将处理结果保存在在线存储表格存储(原OTS)上。根据实时处理的不同,实时修正流程可以分成针对单用户数据的修正流程和针对物品数据的修正流程两类。事实上,RecEng目前也只支持这两种实时修正流程,且每个业务下每种实时修正流程最多只有一个实例。系统中常用mod_path表示实时修正流程。

针对单用户的修正流程输入数据为用户实时日志,输出为修正后的用户特征,或用户感兴趣的物品集合。系统中常用user_mod_path表示针对单用户数据的实时修正流程。

针对物品数据的修正流程通过API或实时日志输入,根据输入的要求调整调整可被推荐的物品及其信息。系统中常用item_mod_path表示针对物品数据的实时修正流程。

实时修正流程是针对推荐流程(rec_path)的,即每个推荐流程都可以,且只能配置一个对应的实时修正流程。当然,为了简便起见,不同推荐流程所对应的实时修正流程的处理逻辑是可以相同的,但在数据上它们是各自独立的。

实时修正是RecEng中的高级功能,RecEng提供了实时修正功能的框架,以及一些可用于实时修正的默认算法,不同业务对实时修正的要求也有较大的不同,要充分发挥实时修正的功能,客户需要根据需求自行定制实时修正算法。

算法(alg)

在RecEng中,算法就是算法流程中的处理节点,可以是比如像协同过滤这样的推荐算法,也可以是很简单的过滤或统计,或客户自定义的逻辑,比如获取所有用户点击最多的Top N个物品清单。系统中常用alg表示算法。

从算法的作者来看,算法可以分为两类,即RecEng预先提供的算法(以下简称系统算法)和客户自定义的算法(以下简称自定义算法)。系统算法可以被所有的客户使用,而自定义算法则只能被当前客户使用。

算法从使用环境上分,可以分为离线算法和在线算法两类。离线算法运行在MaxCompute(原ODPS)平台上,用Java编写;在线算法运行在Node.js环境中,用Node.js编写。RecEng中所有的离线算法都用于离线流程(rec_path->offline_flow),按功能的不同分为三类:

  • 业务算法:用于推荐业务相关的算法,包括特征抽取,兴趣分析,相似计算等,这些算法通常会有一组可以调整的参数。

  • 质检算法:用于进行数据质量检测的算法,检查离线算法每一步产出的结果是否满足某些业务定义的规则。

  • 效果算法:用于计算效果报表中所展示指标的算法。

所有这些离线算法都是可以根据客户需求自定义的。

RecEng没有提供太多的在线算法,一般被用于在线流程(rec_path->online_flow),以及实时修正流程(mod_path)。online_flow中用到的在线算法相对简单,主要是对推荐结果的评分,过滤和排序,mod_path中用到的在线算法会复杂一些,如何取舍视具体的需求而定。

流程模板

客户可以把配置好的算法流程保存起来作为模板,以备后用。RecEng支持离线流程、在线流程、以及实时修正流程的流程模板。

RecEng预先设置了一套离线流程和在线流程的流程模板,客户可以无需任何修改直接使用,实现一键配置。

作业(job)

作业指运行中的离线流程实例,作业和离线流程的关系完全等同于进程和程序的关系。每个作业都是不可重入的,即对每个离线流程,同一时间只允许运行一份实例。

本文导读目录