[转]阿里云 内置算法和模板说明
内置算法和模板说明
更新时间:2016-11-23 16:04:13
离线算法流程模板
离线算法
- ig_sm_01
- ig_sm_02
- grade_based_sm
- svdpp
- crs_02
- crs_03
- crs_04
- crs_05
- crs_06
- tfidf_irf_01
- st_cb_01
- st_cb_02
- simple_default_list
- simple_user_tag_rec
- 结束节点
在线算法流程模板
在线算法
- get_topn
- uniq_reclist
- get_itm_based_rec
- get_usr_based_rec
- mg_usr_itm_reclist
- get_default_rec
- get_rec_item_info
- get_tag_reclist
离线模板信息表
模板code | 简介 | 适用场景 | 适用行业 | 数据规模 | 主要算法 | 冷启动策略 |
---|---|---|---|---|---|---|
main_ofl | 默认首页推荐离线计算流程 | 首页 | 电商、社交 | 物品量级小于500万。用户量级小于1亿 | ig_sm_02, svdpp, crs_04 | 无 |
main_itm | main_ofl基础上支持在线物品修正 | 首页 | 电商、社交 | 物品量级小于500万。用户量级小于1亿 | ig_sm_02, svdpp, crs_04 | 无 |
main_dft | main_ofl基础上增加topn冷启动策略 | 首页 | 电商、社交 | 物品量级小于500万。用户量级小于1亿 | ig_sm_02, svdpp, crs_04,simple_default_list | 热门topn物品 |
detail_ofl | 默认详情页推荐离线计算流程 | 详情页&首页 | 电商、社交 | 物品量级小于500万。用户量级小于1亿 | ig_sm_02, svdpp, crs_04 | 无 |
detail_itm | detail_ofl基础上支持在线物品修正 | 详情页&首页 | 电商、社交 | 物品量级小于500万。用户量级小于1亿 | ig_sm_02, svdpp, crs_04 | 无 |
detail_dft | detail_ofl基础上增加topn冷启动策略 | 详情页&首页 | 电商、社交 | 物品量级小于500万。用户量级小于1亿 | ig_sm_02, svdpp, crs_04,simple_default_list | 热门topn物品 |
spl_grd_svd | 简单基于用户显式评分+svd矩阵分解的推荐计算模板 | 详情页&首页 | 电影、音乐 | 物品量级小于500万。用户量级小于1亿 | svdpp、grade_based_sm | 无 |
ig_rec | spl_grd_svd的变体 ,使用用户行为和物品信息建模用户评分 | 详情页&首页 | 电影、音乐 | 物品量级小于100万。用户量级小于1000万 | svdpp、ig_sm_01 | 无 |
spl_bhv_svd | spl_grd_svd的变体 ,基于用户行为建模用户评分 | 详情页&首页 | 电影、音乐 | 物品量级小于500万。用户量级小于1亿 | svdpp、ig_sm_02 | 无 |
large_scale_rec | 基于用户行为的协同过滤推荐,支持百万以上物品的推荐场景 | 详情页&首页 | 电商、社交 | 物品量级小于5000万。用户量级小于10亿 | ig_sm_02, crs_04 | 热门topn物品 |
content | 利用用户行为和物品内容相似度完成用户-物品推荐的算法流程 | 详情页&首页 | 视频,图书 | 物品量级小于500万 | tfidf_irf_01, crs_06,ig_sm_02 | 无 |
content_cf | 融合content与large_scale_rec 的推荐模板 | 详情页&首页 | 视频,图书 | 物品量级小于500万.用户量级小于10亿 | tfidf_irf_01, crs_06,ig_sm_02, crs_04 | 无 |
usr_tag_rec | 一个简单快捷的基于用户标签生成的群体推荐,可以做到千人百面或者千人十面。 | 首页 | 电商 | 用户量级小于10亿 | simple_user_tag_rec | 用户分组热门topn物品 |
itm_prop_rec | 一个简单的计算相似物品进行物品-物品推荐的算法流程。 | 详情页 | 短视频 | 物品量级小于500万。 | tfidf_irf_01, crs_06 | 无 |
离线算法流程模板
main_ofl
【简介】
默认首页推荐离线计算流程,基于用户行为的协同过滤推荐。
【适用场景】
适用于首页的推荐场景,用户登录后直接展现的推荐结果,如电商网站banner,热帖推荐,以user_id 作为key获取推荐列表。
【适用行业】
建议用于行为丰富的业务,如电商,社交。
【数据规模】
- 建议物品量级小于500万。
- 建议用户量级小于1亿
【主要算法】
【数据约束】
- 行为表需要 click,view,consume,use,search_click 行为类型的数据,至少有其中一种。
- 用户表和物品表实际并没有使用,可以简单处理^1 ,用户属性维度表和物品属性维度表也是不需要的。
- 可推荐物品表影响最终的推荐列表的物品推荐池,建议添加,如果未添加则使用物品表来过滤。
【主要计算逻辑】
流程主要分3个阶段
- 用户行为评分阶段:对用户行为建模,融合多种行为特征,生成用户评分。
- 相关性计算阶段:使用两种协同过滤算法(svdpp,crs_04)计算用户-物品推荐列表。
- 列表融合阶段:融合两种推荐算法得到的用户-物品推荐列表。(st_cb_02)
【建议搭配使用的在线模板】
main_itm
【简介】
main_ofl的变体,增加的在线的候选集筛选,适用于需要返回物品信息的场景。默认只返回item_id 和打分,增加在线的候选集筛选,可以把候选集的 item_info 附在推荐列表返回返回。
【数据约束】
- 需要可推荐物品表
main_dft
【简介】
main_ofl的变体,增加默认推荐列表,通过全局热门物品排序获得。用于召回率较低的场景。
【增加算法】
【建议搭配使用的在线模板】
detail_ofl
【简介】
默认详情页推荐离线计算流程,基于用户行为的协同过滤推荐。
【适用场景】
适用于详情页或者首页的推荐场景,用户点击物品详情页,展示物品相关的推荐列表,如买了再买,相关帖子推荐等,以user_id,item_id 作为key获取推荐列表。
【适用行业】
建议用于行为丰富的业务,如电商,社交。
【数据规模】
- 建议物品量级小于500万。
- 建议用户量级小于1亿
【主要算法】
【数据约束】
- 行为表需要 click,view,consume,use,search_click 行为类型的数据,至少有其中一种。
- 用户表和物品表实际并没有使用,可以简单处理^1 ,用户属性维度表和物品属性维度表也是不需要的。
- 可推荐物品表影响最终的推荐列表的物品推荐池,建议添加,如果未添加则使用物品表来过滤。
【主要计算逻辑】
流程主要分3个阶段
- 用户行为评分阶段:对用户行为建模,融合多种行为特征,生成用户评分。
- 相关性计算阶段:使用两种协同过滤算法(svdpp,crs_04)计算用户-物品推荐列表和物品-物品推荐列表。
- 列表融合阶段:分布融合两种推荐算法得到的用户-物品推荐列表及物品-物品推荐列表。(st_cb_02)
【建议搭配使用的在线模板】
detail_itm
【简介】
detail_ofl的变体,增加的在线的候选集筛选,适用于需要返回物品信息的场景。默认只返回item_id 和打分,增加在线的候选集筛选,可以把候选集的 item_info 附在推荐列表返回返回。
【数据约束】
- 需要可推荐物品表
detail_dft
【简介】
detail_ofl的变体,增加默认推荐列表,通过全局热门物品排序获得。用于召回率较低的场景。
【可自定义算法优化参数】
可以参考 simple_default_list
【建议搭配使用的在线模板】
spl_grd_svd
【简介】
简单基于用户显式评分+svd矩阵分解的推荐计算模板。直接取用户的显式评分(即bhv_type=grade,不考虑其他行为)进行svd矩阵分解(基于LTR排序学习指标进行优化)得到user,item的特征向量并计算相似度,适用于movielens类数据集。
【适用场景】
详情页&首页
【适用行业】
movielens 数据集或者其他基于用户评分的推荐场景,如电影推荐,音乐推荐。
【数据规模】
- 建议物品量级小于500万。
- 建议用户量级小于1亿
【主要算法】
可以参考svdpp
【数据约束】
- 行为表需要 grade 行为类型的数据。
- 用户表和物品表实际并没有使用,可以简单处理^1 ,用户属性维度表和物品属性维度表也是不需要的。
- 可推荐物品表影响最终的推荐列表的物品推荐池,建议添加,如果未添加则使用物品表来过滤。
【主要计算逻辑】
流程主要分2个阶段
- 用户行为评分阶段:直接使用grade行为类型的bhv_amt值作为用户评分。
- 相关性计算阶段:使用svdpp生成用户,物品向量,计算相关性得到计算用户-物品推荐列表和物品-物品推荐列表。
【建议搭配使用的在线模板】
ig_rec
【简介】
spl_grd_svd的变体。评分模块用ig_sm_01替换grade_based_sm,基于用户行为及物品信息计算评分。建议没有显式评分,且具有丰富的物品数据的推荐场景使用,如短视频推荐。
【数据规模】
- 建议物品量级小于100万。
- 建议用户量级小于1000万。
【数据约束】
- 行为表需要 consume 行为类型的数据。click,view,collect 至少有其中之一。
- 用户表实际并没有使用,可以简单处理^1 ,用户属性维度表也是不需要的。
- 物品表需要,需要 keywords,properties,description字段不全为空。
【增加算法】
spl_bhv_svd
【简介】
spl_grd_svd的变体。评分模块用ig_sm_02替换grade_based_sm,基于用户行为计算评分。建议只有行为数据的场景使用。
【数据约束】
- 行为表需要 click,view,consume,use,search_click 行为类型的数据,至少有其中一种。
- 用户表和物品表实际并没有使用,可以简单处理^1 ,用户属性维度表和物品属性维度表也是不需要的。
- 可推荐物品表影响最终的推荐列表的物品推荐池,建议添加,如果未添加则使用物品表来过滤。
【增加算法】
large_scale_rec
【简介】
基于用户行为的协同过滤推荐。适用于详情页推荐,支持百万以上物品的推荐场景。精准度略差与 detail_ofl,但是支持的数据更大。
【适用场景】
适用于详情页或者首页的推荐场景,用户点击物品详情页,展示物品相关的推荐列表,如买了再买,相关帖子推荐等,以user_id,item_id 作为key获取推荐列表。
【适用行业】
建议用于行为丰富且物品和用户维度都很大的业务,如电商,社交。
【数据规模】
- 建议物品量级小于5000万。
- 建议用户量级小于10亿
【主要算法】
【数据约束】
- 行为表需要 click,view,consume,use,search_click 行为类型的数据,至少有其中一种。
- 用户表和物品表实际并没有使用,可以简单处理^1 ,用户属性维度表和物品属性维度表也是不需要的。
- 可推荐物品表影响最终的推荐列表的物品推荐池,建议添加,如果未添加则使用物品表来过滤。
【主要计算逻辑】
流程主要分2个阶段
- 用户行为评分阶段:对用户行为建模,融合多种行为特征,生成用户评分。
- 相关性计算阶段:使用itemcf协同过滤算法(crs_04)计算用户-物品推荐列表和物品-物品推荐列表。
【建议搭配使用的在线模板】
content
【简介】
利用用户行为和物品内容相似度完成用户-物品推荐的算法流程
【适用场景】
建议物品特征(keywords,description,properties)丰富的业务场景。可用于首页或者详情页推荐。
【适用行业】
视频、图书
【数据规模】
- 建议物品量级小于500万。
【主要算法】
tfidf_irf_01, crs_06,ig_sm_02, crs_04
【数据约束】
- 用户表实际并没有使用,可以简单处理^1。
- 物品表需要,至少有keywords,description,properties中的一个。如果properties存在,需要物品属性维度表
- 行为表需要 click,view,consume,use,search_click 行为类型的数据,至少有其中一种。
- 可推荐物品表影响最终的推荐列表的物品推荐池,建议添加,如果未添加则使用物品表来过滤。
【主要计算逻辑】
流程主要分4个阶段
- 特征提取阶段:通过tfidf_irf_01完成对物品信息特征化
- 用户行为评分阶段:对用户行为建模,融合多种行为特征,生成用户评分。
- 物品相关性计算阶段:使用crs_06计算物品-物品推荐列表。
- 用户-物品相关性计算:利用近邻规则,生成用户-物品推荐列表。
【建议搭配使用的在线模板】
content_cf
【简介】
融合content与large_scale_rec 的推荐模板
【适用场景】
建议用于行为和物品特征都十分丰富的业务,如视频,电商,适用于详情页或者首页,。会单纯用content模板和detail_ofl达到更好效果,以user_id,item_id 作为key获取推荐列表。
【适用业务】
视频、图书
【数据规模】
- 建议物品量级小于500万。
- 建议用户量级小于10亿
【主要算法】
tfidf_irf_01, crs_06,ig_sm_02, crs_04
【数据约束】
- 用户表实际并没有使用,可以简单处理^1。
- 物品表需要,至少有keywords,description,properties中的一个。如果properties存在,需要物品属性维度表
- 行为表需要 click,view,consume,use,search_click 行为类型的数据,至少有其中一种。
- 可推荐物品表影响最终的推荐列表的物品推荐池,建议添加,如果未添加则使用物品表来过滤。
【主要计算逻辑】
流程主要分5个阶段
- 特征提取阶段:通过tfidf_irf_01完成对物品信息特征化
- 用户行为评分阶段:对用户行为建模,融合多种行为特征,生成用户评分。
- 物品相关性计算阶段:使用crs_06计算物品-物品基于内容推荐列表。使用crs_04计算物品-物品基于行为的推荐列表
- 用户-物品相关性计算:利用近邻规则,分别生成基于内容的用户-物品推荐列表和基于行为的物品-物品推荐列表
- 列表融合阶段:分布融合两种推荐算法得到的用户-物品推荐列表及物品-物品推荐列表。(st_cb_02)
【建议搭配使用的在线模板】
usr_tag_rec
【简介】
一个简单快捷的基于用户标签生成的群体推荐,可以做到千人百面或者千人十面。
【适用场景】
建议规则性较强,行为数据不多且单一的业务场景。输入数据为 tag_id,即代表一组用户的标签id。
【适用业务】
电商
【数据规模】
- 建议用户量级小于10亿
【主要算法】
可以参考 simple_user_tag_rec
【数据约束】
- 物品表实际并没有使用,可以简单处理^1。
- 用户表需要,且需要在用户属性维度表中定义tags的数据类型,目前只支持 sv_enum。
- 行为表需要,算法只统计行为次数,不关注行为类型。
- 可推荐物品表影响最终的推荐列表的物品推荐池,建议添加,如果未添加则使用物品表来过滤。
【主要计算逻辑】
- 根据用户表的tags字段进行用户分组,每组用户统计行为频次,统计最热门的商品topn生成推荐列表。
【建议搭配使用的在线模板】
itm_prop_rec
【简介】
一个简单的计算相似物品进行物品-物品推荐的算法流程。
【适用场景】
建议详情页场景且用户行为较少,物品特征(keywords,description,properties)丰富的业务场景。适用于详情页,
【使用行业】
短视频等
【数据规模】
- 建议物品量级小于500万。
【主要算法】
【数据约束】
- 用户表和行为表实际并没有使用,可以简单处理^1。
- 物品表需要,至少有keywords,description,properties中的一个。如果properties存在,需要物品属性维度表
- 可推荐物品表影响最终的推荐列表的物品推荐池,建议添加,如果未添加则使用物品表来过滤。
【主要计算逻辑】
流程主要分2个阶段
- 特征提取阶段:通过tfidf_irf_01完成对物品信息特征化
- 相关性计算阶段:使用crs_06计算物品-物品推荐列表。
【建议搭配使用的在线模板】
离线算法
ig_sm_01
【简介】
基于兴趣图谱的评分矩阵构造。
【适用业务场景】
没有显式评分,具有consume类型行为且具有丰富的物品数据的推荐场景使用,如短视频推荐。
【数据约束】
- 行为表需要 consume 行为类型的数据。click,view,collect 至少有其中之一。
- 物品表需要,需要 keywords,properties,description字段不全为空。
【主要计算逻辑】
【可自定义算法优化参数】
参数code | 参数描述 | 默认值 | 优化建议 |
---|---|---|---|
retain_days | 属性权重建模筛选的行为天数 | 30 | 这个参数是控制行为权重训练的输入样本,如果行为丰富,可以选择更小的行为天数,样本量大约为可以利用的属性维度的50倍左右即可。比如物品集一共有1000个关键词,那么属性权重差不多需要的样本在 5万~10万即可。当然样本越多属性权重预测将更加准确,覆盖率也会越高。 |
domain | 分词算法词库(默认为’0’(标准版),也可选择’1’(烟草行业),’2’(广播电视行业),’3’(电力行业),’4’(法律行业),’5’(电商行业),’6’(军事领域)) | 0 | 这个参数与输入的物品数据类型有关,用在对description的分词,选择特定行业词库,分词可以更加准确。 |
ig_sm_02
【简介】
基于规则的评分矩阵构造,支持的行为类型包括:view、click(推荐点击,可以认为等同于view,click的直接结果是view)、search_click(搜索点击)、consume(消费,依业务特性决定,如视频业务也可以将观看行为定义为consume),collect(收藏)
【适用业务场景】
建议用于行为丰富且缺乏显式评分(grade)的业务,如电商,社交。
【数据约束】
- 行为表需要 click,view,consume,use,search_click 行为类型的数据,至少有其中一种。
【主要计算逻辑】
【可自定义算法优化参数】
参数code | 参数描述 | 默认值 | 优化建议 |
---|---|---|---|
retain_days | 计算时读取最近多少天内的行为表分区 | 1 | 会影响最终生成的评分矩阵大小。建议设置在 1~30 之间,1代表只选择当天的数据。 |
click_weight | click行为权重,包含click和search_click两种行为 | 0.2 | 行为权重会被归一化到0-1,如果只有部分行为,可以把其他权重设为0 |
view_weight | view行为权重 | 0.1 | |
consume_weight | consume行为权重,包含consume,use两种行为 | 0.4 | |
collect_weight | collect行为权重,包含collect,comment,share,like 四种类型 | 0.3 |
grade_based_sm
【简介】
grade_based_sm 基于用户显式评分的user-item评分矩阵构造,直接从用户行为表中筛选bhv_type=’grade’对应的bhv_amt作为评分,对于同一user对同一item的多次评分,提供[最大|最小|均值]三种选项
【适用业务场景】
处理movielen等显式评分
【主要计算逻辑】
【可自定义算法优化参数】
参数code | 参数描述 | 默认值 | 优化建议 |
---|---|---|---|
op | 如何处理同一user对同一item的多次评分,可选取值为[max,min,avg],分别代表取[最大,最小,平均]值 | avg | 根据业务场景选择 |
retain_days | 计算时读取最近多少天内的行为表分区 | 1 | 会影响最终生成的评分矩阵大小。建议设置在 1~30 之间,1代表只选择当天的数据。 |
svdpp
【简介】
融合显式反馈和隐式反馈的矩阵分解算法
【适用业务场景】
中等数据量追求推荐精准度的推荐场景
【数据约束】
- 建议物品量级小于500万。
- 建议用户量级小于1亿
【主要计算逻辑】
【可自定义算法优化参数】
参数code | 参数描述 | 默认值 | 优化建议 |
---|---|---|---|
learning_rate | 学习率 | 0.008 | 建议小范围调整,会影响训练速度和收敛效果 |
iteration | 训练迭代轮数 | 20 | 建议在20~100 中调整,训练速度和精准度的tradeoff。迭代次数越多,训练速度越慢,精准度越高,但不会线性提高,存在不断逼近的上界。 |
lr_decay | 学习率衰减系数,默认为1.0即不衰减 | 1.0 | 建议在 0.9~1.0中调整 |
lr_min | 最小学习率,当学习率衰减到该值以下后不再衰减 | 0.00001 | 建议不修改 |
regularization | 0.004 | 正则强度,避免过拟合 | 建议根据数据分布来决定,需要实验。 |
featurelen | 128 | 分解得到的向量维数 | 明显影响训练速度和精准度的参数,建议设为128或256,不要超过512. |
workernum | 20 | odps worker数量,增大机器数量一定程度上增加处理速度 | 如果报内存不足的错误,则需要适当增加workernum或者减少featurelen,增加workernum可能会增加你的MaxCompute账单。 |
crs_04
【简介】
基于user-item 评分item候选集生成,为标准的itemcf算法。
【适用业务场景】
数据量较大的场景。
【数据约束】
- 建议物品量级小于5000万。
-
建议用户量级小于10亿
【主要计算逻辑】
通过用户行为共现来计算物品之间的相关性,支持的相关性算法有:
-
Cosin :余弦夹角
- BiNetwork:对分网络
- ModifiedCosin:调整余弦夹角
- PearsonRelation:皮尔逊相关距离
【可自定义算法优化参数】
参数code | 参数描述 | 默认值 | 优化建议 |
---|---|---|---|
topn | 最多保留多少个推荐结果 | 100 | 与具体业务有关,计算时间正相关。 |
measure | 特征向量相似度的计算方法,可选取值为[Cosin,BiNetwork,ModifiedCosin,PearsonRelation],分别代表余弦夹角、对分网络、调整余弦夹角、皮尔逊相关距离 | Cosin | 计算速度类似,具体选择可以参考上文。 |
crs_05
【简介】
基于item-item 相似度及用户评分的user候选集生成
【适用业务场景】
一般与 crs_04搭配使用。
【数据约束】
- 建议物品量级小于5000万。
- 建议用户量级小于10亿
【主要计算逻辑】
通过用户评分过的物品,以及物品的相关的物品,生成用户的推荐列表。
用户对自己未评分的物品的打分通过用户对已有物品评分和物品间的相关性权重加权求和得到。
【可自定义算法优化参数】
参数code | 参数描述 | 默认值 | 优化建议 |
---|---|---|---|
topn | 最多保留多少个推荐结果 | 100 | 与具体业务有关,计算时间正相关。 |
remove_history_action | 是否移除用户历史评分 | true | 默认为true,意味的用户有行为的物品不会出现在推荐列表中。 |
crs_02
【简介】
item_item相似度计算(symmetric_feature)
【数据约束】
- 建议物品量级小于500万。
【主要计算逻辑】
标准的矩阵相乘,计算两个item_feature之间的距离,然后截取topn。通过MapReduce分块矩阵相乘算法实现。支持两种相关性算法:
- Cosin:余弦夹角
- InnerProduct:向量内积
【可自定义算法优化参数】
参数code | 参数描述 | 默认值 | 优化建议 |
---|---|---|---|
topn | 最多保留多少个推荐结果 | 100 | 与具体业务有关,计算时间正相关。 |
measure | 特征向量相似度的计算方法,可选取值为[Cosin,InnerProduct],分别代表余弦夹角和向量内积 | Cosin | 一般情况Cosin效果好于InnerProduct。InnerProduct速度更快,对于稠密矩阵InnerProduct效果和Cosin基本一样。 |
crs_03
【简介】
user_item相似度计算(symmetric_feature)
【数据约束】
- 建议物品量级小于500万。
- 建议用户量级小于1亿。
【主要计算逻辑】
标准的矩阵相乘,计算user_feature ,item_feature之间的距离,要求两个向量在同一个向量空间内,然后截取topn。通过MapReduce分块矩阵相乘算法实现。支持两种相关性算法:
- Cosin:余弦夹角
- InnerProduct:向量内积
【可自定义算法优化参数】
crs_06
【简介】
基于物品原始特征获取推荐列表(item_feature)
【数据约束】
- 建议物品量级小于500万。
【主要计算逻辑】
标准的矩阵相乘,计算两个item_feature之间的距离,然后截取topn。通过MapReduce分块矩阵相乘算法实现。支持两种相关性算法:
- Cosin:余弦夹角
- InnerProduct:向量内积
与crs_02 唯一的区别是输入数据不同,crs_06输入为物品特征提取得到的ITEM_FEATRUE,crs_02输入为通过UIF类型算法得到的user-item向量组(SYMMETRIC_FEATURE)。
【可自定义算法优化参数】
tfidf_irf_01
【简介】
物品tfidf原始特征提取,基于keywords,properties,分词后的description
【适用业务场景】
物品信息丰富,使用内容推荐的场景
【数据约束】
- 物品表需要至少有keywords,description,properties中的一个。如果properties存在,需要物品属性维度表
【主要计算逻辑】
【可自定义算法优化参数】
参数code | 参数描述 | 默认值 | 优化建议 |
---|---|---|---|
domain | 分词算法词库(默认为’0’(标准版),也可选择’1’(烟草行业),’2’(广播电视行业),’3’(电力行业),’4’(法律行业),’5’(电商行业),’6’(军事领域)) | 0 | 这个参数与输入的物品数据类型有关,用在对description的分词,选择特定行业词库,分词可以更加准确。 |
remove_stop_word | 1 去掉停用词 0 原始分词串 | 1 |
st_cb_01
【简介】
基于简单排序的item推荐列表融合,筛选推荐候选集,支持在产生推荐列表时带上item对应的rec_item_info.item_info的若干属性
【主要计算逻辑】
基本逻辑是根据上游的输入权重(流程配置连接线上的可配置权重)分配推荐列表取舍,然后每个输入的推荐列表根据排序计算一个新的权值w,按照新的权重w统一排序多个推荐列表,生成新的推荐列表。
例如:输入有3个推荐列表,已经经过排序,长度分别为 100,200,200。对应输入权重为 0.5,0.3,0.2。算法会先按照权重截取推荐列表,
截取后的长度:1000.5 = 50 ,200 0.3 = 60,200 * 0.2 = 40.
对于每个截取后的推荐列表i:每一项的权值 w(i,j) = (len(i)-rank(i,j)+1)/len(i)
-
len(i) 指推荐列表i的长度
-
rank(i,j) 指推荐项j在推荐列表i中的排序值
最终每一项的权值为 w(j) = w(1,j)+w(2,j)+…
【可自定义算法优化参数】
参数code | 参数描述 | 默认值 | 优化建议 |
---|---|---|---|
topn | 最多保留多少个推荐结果 | 100 | 根据业务场景选择 |
fields | 最终的推荐列表里每个item_id需要额外带上的rec_item_info表里item_info字段的属性值(多个属性之间用分号隔开,如cityid;price),要求item_info字段按json格式存储 | 默认为空,根据业务场景选择 |
st_cb_02
【简介】
基于简单排序的user推荐列表融合,筛选推荐候选集,支持在产生推荐列表时带上item对应的rec_item_info.item_info的若干属性
【主要计算逻辑】
参见 st_cb_02
【可自定义算法优化参数】
参数code | 参数描述 | 默认值 | 优化建议 |
---|---|---|---|
topn | 最多保留多少个推荐结果 | 100 | 根据业务场景选择 |
fields | 最终的推荐列表里每个item_id需要额外带上的rec_item_info表里item_info字段的属性值(多个属性之间用分号隔开,如cityid;price),要求item_info字段按json格式存储 | 默认为空,根据业务场景选择 |
simple_default_list
【简介】
按照pv选出热门item生成推荐列表
【适用业务场景】
适合很多需要冷启动的场景
【主要计算逻辑】
统计最近n天的最热门的物品,生成一个默认推荐列表。
【可自定义算法优化参数】
参数code | 参数描述 | 默认值 | 优化建议 |
---|---|---|---|
topn | 最多保留多少个推荐结果 | 100 | 根据业务场景选择 |
retain_days | 使用最近n天的行为数据 | 7 | 选择的依据就是需要当天热门还是当周热门。 |
simple_user_tag_rec
【简介】
基于用户标签的默认推荐
【适用业务场景】
适合很多需要冷启动的场景,可以看做simple_default_list的分组版本。
【数据约束】
- 需要用户表和用户属性维度表。选取的key必须是sv_enum类型
【主要计算逻辑】
按照用户分组统计最近n天的最热门的物品,生成一个默认推荐列表。
【可自定义算法优化参数】
参数code | 参数描述 | 默认值 | 优化建议 |
---|---|---|---|
topn | 最多保留多少个推荐结果 | 100 | 根据业务场景选择 |
retain_days | 使用最近n天的行为数据 | 7 | 选择的依据就是需要当天热门还是当周热门。 |
key | tags中选取作为分组的key,必须为sv_enum类型 | 填写tags里面用于分组的key |
结束节点
【简介】
汇总离线结果,同步到在线,有两个规则:
- 每种数据类型只会同步一份数据到线上,所以如果生成多个推荐列表,务必需要增加CB类型的算法去融合推荐列表。
- 不会同步客户自定义的数据表。
【可自定义算法优化参数】
参数code | 参数描述 | 默认值 | 优化建议 |
---|---|---|---|
retain_days | 是否合并前n天的结果 | 0 | 建议选择0-90,默认为0,意味着不合并前n天的计算结果。如果retain_days > 0,推荐引擎会累计前n=retain_days 天的推荐结果,把结果合并,如果今天也生成同一个id对应的推荐列表,则覆盖。这个参数可以明显增加线上结果的覆盖率,减少计算需要引用的行为数据,让离线运算只关注当天数据即可。缺点是可能部分被推荐物品会过期。 |
在线算法流程模板
main_ol
【简介】
默认首页推荐在线计算流程。
【先决条件】
1、要求在线请求query参数里必须带有user_id字段,否则报错。
【流程步骤】
1、使用get_usr_based_rec节点获取离线计算得到的针对user的推荐列表。2、截取前6个推荐结果返回。
detail_ol
【简介】
默认详情页推荐在线计算流程。
【先决条件】
1、要求在线请求query参数里必须带有user_id字段,否则报错。2、要求在线请求query参数里必须带有item_id字段,否则基于item的推荐列表为空。
【流程步骤】
1、使用mg_usr_itm_reclist节点合并离线计算得到的针对item和user的推荐列表,若item相关推荐结果不足或无相关推荐,使用用户的个性化推荐进行补足。2、针对步骤1中的合并结果进行去重。3、截取前6个推荐结果返回。
detail_dft_ol
【简介】
增加补足策略的详情页推荐在线计算流程。
【先决条件】
1、要求在线请求query参数里必须带有user_id字段和item_id字段,否则报错。
【流程步骤】
1、使用mg_usr_itm_reclist节点合并离线计算得到的针对item和user的推荐列表,若item相关推荐结果不足或无相关推荐,使用用户的个性化推荐进行补足。2、若步骤1产出的推荐结果不足30个,使用默认推荐结果进行补足;否则直接返回。3、针对步骤2的产出结果进行去重。4、截取前30个推荐结果返回。
usr_tag_rec_ol
【简介】
在线获取离线计算产生的基于tag的推荐列表
【先决条件】
1、要求在线请求query参数里必须带有tag的相关字段,如city_id=beijing,否则返回为空
【流程步骤】
1、根据请求参数获取全量离线tag推荐列表。2、截取前6个推荐结果返回。
在线算法
get_topn
【简介】
根据上游节点输出的推荐列表,截取前topn个推荐结果。
【可选参数】
参数code | 参数描述 | 默认值 | |
---|---|---|---|
topn | 截取前多少个推荐结果 | 2 |
uniq_reclist
【简介】
对上游节点输出的推荐列表按item_id进行去重
【说明】
离线产出的推荐列表通常都是去过重的,但在线流程中当上游输出的推荐结果是多路合并而来时,这个方法非常重要。
get_itm_based_rec
【简介】
获得离线计算产生的针对item的推荐结果。
【先决条件】
1、要求在线请求query参数里必须带有item_id字段,否则基于item的推荐列表为空。
get_usr_based_rec
【简介】
获得离线计算产生的针对user的推荐结果。
【先决条件】
1、要求在线请求query参数里必须带有user_id字段,否则报错。
mg_usr_itm_reclist
【简介】
合并离线计算产出的针对item和user的推荐结果,把item推荐列表放在最终列表前部,user推荐列表放在尾部用以做结果条数补足
【说明】
该节点仅对两个推荐列表进行简单的concat连接操作,不进行列表去重,请注意在下游挂载去重节点。
get_default_rec
【简介】
当推荐结果不足时,用离线计算产生的默认推荐结果进行补足
【可选参数】
参数code | 参数描述 | 默认值 | |
---|---|---|---|
num | 当推荐结果小于num个时执行默认推荐结果补足 | 30 |
【先决条件】
1、离线算法流程中配置有产生默认推荐结果的算法节点,同时该算法的类别(dataform)限定为DR012、在线算法流程左侧面板中”选择离线数据”勾选”RD_DFLT”,表示读取离线计算的默认推荐结果
【说明】
该节点仅对推荐列表进行简单的concat连接操作,不进行列表去重,请注意在下游挂载去重节点。
get_rec_item_info
【简介】
获取推荐item的item_info信息(对应离线基础表rec_item_info的item_info字段)
【先决条件】
1、离线算法流程中已配置rec_item_info节点。
【说明】
当上游产出的推荐列表长度比较大时,会向在线存储产生大量并发异步请求,导致在线性能下降,因此请慎用本节点。关于rec_item_info的另一巧用方法,请参考云栖社区-阿里云个性化推荐引擎
get_tag_reclist
【简介】
获取离线计算产生的基于tag(如城市、性别等)的推荐结果
【可选参数】
参数code | 参数描述 | 默认值 | |
---|---|---|---|
key | 用于查询tag的参数名 | 无 |
【先决条件】
1、离线算法流程中配置有产生基于Tag做推荐的算法节点,同时该算法的类别(dataform)限定为TAG_BASED_REC2、要求在线请求query参数里必须带有tag的相关字段,如city_id=beijing,此时节点参数的key=”city_id”