全部产品
阿里云办公

默认推荐

更新时间:2017-09-30 16:01:35

输入数据

数据 是否必选 描述
ITEM_META 必选 物品表
USER_BEHAVIOR 必选 离线用户行为表
REC_ITEM_INFO 必选 可推荐物品表
REALTIME_LOG 可选 用户实时行为日志(仅限开启”使用日志数据”时生效)

输出数据

数据 数据类型 描述
OFFLINE_CATEGORY_DEFAULT_REC REC_SET 根据所设置的推荐策略产生的在不同物品类目下的默认推荐物品列表(离线产出)。
NEARLINE_DEFAULT_REC REC_SET 根据物品实时热度(pv)产生的推荐物品列表(近线产出)。
OFFLINE_DEFAULT_REC REC_SET 根据所设置的推荐策略产生的全局默认推荐物品列表(离线产出)。

参数

参数名 默认值 描述
默认推荐策略 simple_pv 系统提供以下几种默认策略可供选择:
- simple_pv:基于简单行为PV的热度排行,对用户行为中的物品按照全局出现次数(count(a) group by item_id)进行排序。
     (1) retain_days:基于过去N天的全局用户行为数据进行pv计算,本参数决定了会在用户行为表中扫描最近多少个分区的数据
- weighted_uv:基于行为uv加权的热度排行,针对用户行为中的不同行为类型进行加权求和后按照得分进行排序。
    (1) 基于过去N天的全局用户行为数据进行计算
    (2)weight:有效行为权重,如view:1.0;click:0.8, 本参数中的行为类型需要与实际用户行为表中的bhv_type字段对应,否则可能导致结果为空。
- bucket_random:基于简单随机分桶的推荐,适用于无用户行为数据的场景。
以下为v1.1.0版本更新
- simple_recent: 适用于无用户行为数据的场景,按照物品表 update_datetime 排序,最新的排在最前面,可以设置时间衰减参数和阈值。
- weighted_iteminfo: 适用于无用户行为数据的场景,按照物品表的item_info中的字段排序,可以设置阈值和计算公式。
分类目推荐 false 若开启本选项,按照所选择的推荐策略,算法会在全局默认推荐结果的基础上,再针对物品类目生成一份在各类目下的默认推荐结果,在线配置好推荐来源后,API可以通过传入category参数获取。
以下为v1.1.0版本更新
支持分类目推荐的算法选择和参数设置,默认值改为None,即不计算分类目结果。
推荐结果数 100 最多生成多少个推荐结果,本参数会作用在上文提到的“输出数据”的所有推荐结果集上。【注:关于推荐结果数最大可以设置多少,由于不同业务中的item_id长度各异,因此没有一个固定的值,总体原则是:最终拼接生成的推荐字符串大小不超过1兆。其中推荐字符串的格式为i1\u0003s1…\u0002…in\u0003sn,i1~in为实际item_id,s1~sn为权重(一般保留小数点后4位),\u0002和\u0003为Unicode的2和3。】

主要算法逻辑

在获取不到个性化推荐的情况下(一般是用户无历史行为或历史行为很少,使得系统不足以了解用户的真实喜好),默认推荐可以作为很好的抄底补足策略,在配置恰当的前提下,使得在任何情况下API请求都有结果返回。

  1. 离线模块

    基于简单行为PV和uv加权的热度排行算法比较简单,需要强调的是这两种策略对行为数据的分布有一定的依赖,最终能产生多少个默认结果和行为中总共出现过多少个不同的物品高度相关,因此如果您在配置了这两种策略的情况下,发现在线API请求返回结果数量不够,请检查一下您的用户行为数据。

    这里介绍一下简单分桶的基本原理:计算输入数据REC_ITEM_INFO里包含的物品总数T,我们的原则是将所有物品不重复地放入N个不同的桶,使得每个桶里最多包含<推荐结果数>参数指定的物品数,因此需要生成M=T mod N个桶,离线部分我们对物品按照id进行排序后按顺序放入这M个编号为0~M的桶里。在线请求时,首先随机生成一个[0,M)范围内的整数r,然后将事先已放入编号为r的桶里数据取出作为推荐结果返回。

  2. 近线/实时模块

    目前实时部分仅支持在选择“基于简单行为PV的热度排行”策略时,根据所有用户的实时行为动态计算物品的最新pv值(不考虑离线存量pv,即实时部分的pv值是从0开始累加),并按降序排列取前<推荐结果数>个物品作为实时热门默认推荐。选择非“基于简单行为PV的热度排行”策略时,算法没有对应的实时部分。

  3. 在线模块

    根据用户配置读取解析在线存储上的推荐结果。

最佳实践

  1. 视频专题讲解:点这里