离线算法开发手册__算法规范_开发者指南_推荐引擎-阿里云
概述
推荐引擎为了方便开发能力强的客户针对自己的业务做定制开发,基于ODPS-SDK二次开发,提供推荐引擎自己的SDK。公测版目前支持ODPS原有的操作,如SQL Task、MapReduce Task、Graph Task。之后会逐渐增加对阿里机器学习平台(PAI)及EMR的支持。目的是给用户统一的接口使用,降低开发成本。
推荐引擎提供了适用于个性化推荐的多种算法和模板,了解详情请访问系统内置算法和模板说明
什么是DataForm?
DataForm
推荐引擎对整个离线推荐算法流程做了数据抽象。每种数据抽象就是一种DataForm,DataForm实体存储对应ODPS的一张表。比如标准的ITEMCF推荐流程。需要输入用户对物品的评分,这个评分矩阵就可以抽象成一个DataForm,即附件的 USER_ITEM_SCORE;产生的推荐列表,即USER_ITEM_REC_LIST,生成用户对物品的评分有很多种方法,每种方法就是我们要实现的算法。所以推荐引擎的算法输入输出都是标准化的。
算法类目
为了进一步标准化,我们会抽象出一些标准的计算输入输出模式,比如解析物品数据得到物品特征的步骤,一般基于内容的推荐都会做这一步。它的输入输出固定为 ITEM_META,ITEM_FEATURE。我们把一组特定输入输出的算法归到同一个算法分类,新建算法的时候必须要指定算法类目,这样推荐引擎才知道如何给你需要的参数,已经如何把这个算法放到算法流程的合适位置。
自定义
公测版本目前不支持用户自定义DataForm和算法类目,后续会根据客户需求来评估自定义的模式。也希望客户能够和我们积极沟通,完善目前的推荐范式。
进阶的ODPS开发
因为推荐引擎是基于ODPS运算的,所以开发离线算法需要ODPS的开发能力。
ODPS开发能力 | 推荐引擎可以完成的工作 |
---|---|
学会ODPS SQL和数据导入导出。可以完成基本的数据转换和数据清洗工作。 | 准备数据 |
精通SQL和UDF | 开发简单的规则性算法,如tfidf |
学会MR和Graph | 开发复杂逻辑算法,如itemcf、逻辑回归 |
离线算法开发
JAVA开发
开发准备
客户需要先下载推荐平台的SDK jar包。将下载的jar包以及依赖的jar包加到java的classpath,或者通过IDE构建。后续会提供Maven配置,客户可以使用Maven构建工程。
SDK中主要用到的类
RecAlgorithmPlugIn
客户开发的每个算法都要继承这个基类。实现evalute 方法。 传入RecPlatformContext实例化对象。
public class TestPlugIn extends RecAlgorithmPlugIn {
@Override
public void evaluate(RecPlatformContext context) throws Exception {
}
}
RecPlatformContext
推荐平台上下文,用于获取推荐引擎传入的参数、启动ODPSTask以及上报需要报警错误。全部方法请查询javadoc,下面列举部分关键的方法。
- ODPSTableData runSQLTask(String sql) 启动SQL任务,如果是select操作返回一个 ODPSTableData对象,可以通过 get(int row,int col)方法获取ODPS表数据。
public class TestPlugin extends RecAlgorithmPlugIn{
@Override
public void evaluate(RecPlatformContext context) throws Exception {
context.runSQLTask("select * from dual;");
}
}
- ActivityNode context.getOutputNode() 获取输出Node元信息
- List<ActivityNode> context.getNodesByDataForm(ActivityNode.RecPlatformDataForm df)
获取输入Node元信息列表。 ActivityNode.RecPlatformDataForm 是DataForm的枚举类型。每个算法节点的输入按照DataForm分组构建一个Map表。上面两个方法也规定了离线算法是多输入单输出的算子。
- String context.getExtParam(String key) 获取算法额外参数。
ActivityNode
Node元信息。包含nodeCode,tableName,alg,nodeWeight,datafrom字段
- nodeCode 表示算法的唯一标识
- tableName 表示算法的输出数据表,对于系统内置dataform,tablename是”前缀+dataform“的格式拼接,且会在业务初始化时新建完成。
- dataform 表示算法的输出数据抽象格式
- alg 表示在当前流程中的唯一标识,默认为”nodeCode+节点顺序“格式拼接。对应数据表的alg分区值。用于区分流程中多次出现的相同算法。
本地测试
main函数里面用文件的方式加载ODPS配置,即可本地测试
public static void main(String[] args) throws Exception {
RecPlatformContext context = new RecPlatformContext("./odps_conf.ini");
context.parseParam("");
Client.run(context, TestPlugin.class);
}
参数是固定的JSON字符串,其中ds,biz,path 都与输入输出表的分区相关,external_params表示算法额外参数,prefix表示内置DataForm的表前缀。
{
"ds":"",
"biz":"",
"path":"",
"external_params":{
"p1":"v1"
},
"input_nodes":[
{
"node_code":"",
"data_form":"",
"tableName":"",
"node_weight":1.0
},
{
"node_code":"",
"data_form":"",
"tableName":"",
"node_weight":1.0
}
],
"output_node":{
"node_code":"",
"data_form":"",
"tableName":"",
"node_weight":1.0
},
"prefix":"alidata_rp",
"task_id":""
}
打包
编写完算法逻辑并且本地测试通过,就可以打包在界面上传jar包注册算法。需要注意的是, 所有依赖包都不要打入jar包,包括SDK本身。
界面注册
配置流程
系统内置DataForm
输入类DataForm
作为整个算法流程的输入,无法导入在线存储。不区分场景和abtest
USER_META
描述:用户原始数据,由客户上传或者日志解析。
字段
列名 | 数据类型 | 注释 | Nullable |
---|---|---|---|
user_id | string | 用户ID,可以是AID,device id,淘宝ID等各种唯一标识用户身份的ID。不能出现(u01-u03)特殊字符。以下user_id字段同此意 | 否 |
tags | string | 标签-标签值kv串。不同tag之间用u02分隔,tag和value之间用u03分隔(方括号不保存在数据库中,以下同)。[t1u03v1u02t2u03v2…] 比如用户有两个标签年龄和性别,tag可以取age,gender;value 取对应的值,如18、1 |
是 |
config_name | string | 参见type分区说明 | 是 |
config_value | string | 参见type分区说明 | 是 |
分区字段
分区名 | 数据类型 | 注释 | Nullable |
---|---|---|---|
type | string | type分区有两个取值:data和config 取值为data:保存数据,该分区中config_name和config_value两个字段均为空 取值为config:保存配置数据,该分区只有config_name和config_value两个字段不为空,其他字段均为空。 config_name字段中的值为tags中的key,每个key一条记录,对应的config_value取值为mv_enum,kv_num,sv_enum,sv_num,分别代表多值枚举型,KV数值型,单值枚举型,单值数值型四种标签取值类型 |
否 |
ds | string | 日期分区,表示数据的业务日志,启动数据导入任务的时候指定。格式yyyymmdd | 否 |
biz | string | 业务分区,值为biz_code,启动数据导入任务的时候指定 | 否 |
ITEM_META
描述:物品原始数据,由客户上传或者日志解析。
字段
列名 | 数据类型 | 注释 | Nullable |
---|---|---|---|
item_id | string | 物品ID,唯一标识 | 否 |
category | string | 物品所属类目,最好以ID的形式给出 | 是 |
keywords | string | 关键词串。关键词可以有权重(需要归一化到0-1之间),也可以没有权重,没有权重时所有词的权重都是1。Keywords之间用u02分隔,keyword和score之间用u03分隔(如果score存在)[kw1u03s1u02kw2u03s2u02…] | 是,不过category,keywords,properties,description,bizinfo五者不能都为空 |
description | string | 用于描述这个物品C的一段文本 | 是 |
properties | string | 属性-属性值kv串。不同key之间用u02分隔,key和value之间用u03分隔。不同property的key最好以ID的形式给出(注释1)[k1u03v1u02k2u03v2…] 比如电影作为item,那么properties中的key可以是演员、风格、制片人等 |
是 |
bizinfo | string | 物品的业务信息,KV格式。不同KV之间以u02分隔,key和value之间以u03分隔。可以留NULL。bizinfo和properties的区别在bizinfo不参与特征提取的计算 | 是 |
config_name | string | 参见type分区说明 | 是 |
config_value | string | 参见type分区说明 | 是 |
分区字段
分区名 | 数据类型 | 注释 | Nullable |
---|---|---|---|
type | string | type分区有两个取值:data和config 取值为data:保存数据,该分区中config_name和config_value两个字段均为空 取值为config:保存配置数据,该分区只有config_name和config_value两个字段不为空,其他字段均为空。 config_name字段中的值为tags中的key,每个key一条记录,对应的config_value取值为mv_enum,kv_num,sv_enum,sv_num,分别代表多值枚举型,KV数值型,单值枚举型,单值数值型四种标签取值类型 |
否 |
ds | string | 日期分区,表示数据的业务日志,启动数据导入任务的时候指定。格式yyyymmdd | 否 |
biz | string | 业务分区,值为biz_code,启动数据导入任务的时候指定 | 否 |
REC_ITEM_INFO
描述:可被推荐物品及信息,由客户上传。
字段
列名 | 数据类型 | 注释 | Nullable |
---|---|---|---|
item_id | string | 物品ID,唯一标识。本表中的物品都是允许被推荐的物品 | 否 |
item_info | string | 如果业务方希望RecEng在返回推荐物品时同时返回物品的其他信息,保存在这里。RecEng不需要了解item_info的内部格式,原样返回给业务方。 | 是 |
config_name | string | 保留字段 | 是 |
config_value | string | 保留字段 | 是 |
分区字段
分区名 | 数据类型 | 注释 | Nullable |
---|---|---|---|
ds | string | 日期分区,表示数据的业务日志,启动数据导入任务的时候指定。格式yyyymmdd | 否 |
biz | string | 业务分区,值为biz_code,启动数据导入任务的时候指定 | 否 |
type | string | 固定为‘data’ | 否 |
USER_BEHAVIOR
描述:用户行为类,由客户上传或者日志解析。
字段
*行为类数据(user_behavior)注意:如果业务方无法上传用户行为表,并且业务方使用了UT埋点,则可以由RecEng从UT日志中解析出用户行为表。
列名 | 数据类型 | 注释 | Nullable |
---|---|---|---|
user_id | string | 用户ID | 否 |
item_id | string | 物品ID | 否 |
bhv_type | string | 行为类型: view:物品曝光 click:用户点击物品 collect:用户收藏了某个物品 uncollect:用户取消收藏某个物品 search_click:用户点击搜索结果中的物品 commen:用户对物品的评论 share: 分享 like:点赞 dislike:点衰 grade:评分 consume:消费 use:观看视频/听音乐/阅读 行为表记录的用户行为用于用户偏好建模 |
否 |
bhv_amt | double | 用户对物品的评分、消费、观看时长等。 | 否 |
bhv_cnt | double | 行为次数,默认为1,消费可以埋购买件数 | 否 |
bhv_datetime | datetime | 行为发生的时间,UTC格式。 | 否 |
content | string | 用户对物品的评价文本 | 是 |
media_type | string | 如果bhv_type=share,该字段记录分享到目标媒体。短信:sms,邮件:email,微博:sina_wb,微信好友:wechat_friend,微信朋友圈:wechat_circle,QQ空间:qq_zone,来往好友:laiwang_friend,来往动态:laiwang_circle | 是 |
pos_type | string | 行为发生的位置类型,和下面position字段联合使用,有三种取值: ll:经纬度格式的位置信息 gh:geohash格式的位置信息 poi:poi格式的位置信息 |
是 |
position | string | 行为发生的位置,根据pos_type有不同的取值格式: 如果pos_type=ll,position格式[longitude:latitude] 如果pos_type=gh,position格式[geohashcode] 如果pos_type=poi,position格式[poi_string] |
是 |
env | string | JSON String { “IP”:””, “network”:””, “device”:”” } IP: IP地址。行为发生时用户的IP地址。IPv4为点分十进制格式;IPv6为冒号分隔的标准6段格式(不使用IPv6嵌套IPv4的格式) network: 网络制式。行为发生时用户所使用的接入网络,取值为solid,2G,3G,4G,WIFI。分别表示固网,2G,3G,4G和WIFI接入方式 device: 发生行为所使用的设备,包括mobile,pad,pc等,可添加 其他自定义环境变量也可以添加到JSON中 |
是 |
trace_id | string | 返回的推荐列表用于跟踪效果。如果对item_id 的行为不是来自推荐引导,则为NULL | 是 |
config_name | string | 保留字段 | 是 |
config_value | string | 保留字段 | 是 |
分区字段
分区名 | 数据类型 | 注释 | Nullable |
---|---|---|---|
ds | string | 日期分区,表示数据的业务日志,启动数据导入任务的时候指定。格式yyyymmdd | 否 |
biz | string | 业务分区,值为biz_code,启动数据导入任务的时候指定 | 否 |
type | string | 固定为‘data’ | 否 |
离线算法类DataForm
可以作为离线流程的中间数据,也可导出到在线存储
USER_ASSET
描述:用户历史行为记录汇总。
字段
列名 | 数据类型 | 注释 | Nullable |
---|---|---|---|
user_id | string | 用户ID | 否 |
assets | string | 记录用户历史曾经消费过的物品清单,KV组格式。某些业务需要利用用户资产进行推荐过滤,或用户行为建模。一个kv组描述用户的一项资产。KV组之间用u02连接,kv组内的不同KV间用u03分隔,key和value间用u04分隔。Key可以是:item_id:物品ID, bhv_type:行为类型 | 否 |
config_name | string | 保留字段 | 是 |
config_value | string | 保留字段 | 是 |
分区字段
分区名 | 数据类型 | 注释 | Nullable |
---|---|---|---|
ds | string | 日期分区,表示数据的业务日志,启动数据导入任务的时候指定。格式yyyymmdd | 否 |
biz | string | 业务分区,值为biz_code,启动数据导入任务的时候指定 | 否 |
path | string | 流程分区,用于区分场景和abtest,值系统分配 | 否 |
alg | string | 算法名,值为node_code+顺序后缀 | 否 |
type | string | 固定为‘data’ | 否 |
ITEM_POOL
描述: 推荐池,用于导出到线上数据,做规则匹配
字段
列名 | 数据类型 | 注释 | Nullable |
---|---|---|---|
item_id | string | 物品ID | 否 |
category | string | 物品所属类目,最好以ID的形式给出 | 是 |
item_info | string | 如果业务方希望RecEng在返回推荐物品时同时返回物品的其他信息,保存在这里。RecEng不需要了解item_info的内部格式,原样返回给业务方。 | 是 |
config_name | string | 保留字段 | 是 |
config_value | string | 保留字段 | 是 |
分区字段
分区名 | 数据类型 | 注释 | Nullable |
---|---|---|---|
ds | string | 日期分区,表示数据的业务日志,启动数据导入任务的时候指定。格式yyyymmdd | 否 |
biz | string | 业务分区,值为biz_code,启动数据导入任务的时候指定 | 否 |
path | string | 流程分区,用于区分场景和abtest,值系统分配 | 否 |
alg | string | 算法名,值为node_code+顺序后缀 | 否 |
type | string | 固定为‘data’ | 否 |
ITEM_FEATURE
描述:物品特征
字段
列名 | 数据类型 | 注释 | Nullable |
---|---|---|---|
item_id | string | 物品ID,唯一标识 | 否 |
feature | string | 物品特征,向量形式。视向量的稀疏程度,有两种表示方式: 平坦的向量形式:[f1u02f2u02…] 稀疏的向量形式:[p1u03f1u02p2u03f1…] 其中pi代表非0特征fi的位置,fi都是double类型的数字,以文本形式存储 |
否 |
simhash | string | feature的simhash值。有两个用途: 1.加速item similarity计算 2.当item_id不能很好的区分物品时(同样的物品存在多个item id),RecEng利用物品的simhash在线去重 |
是 |
config_name | string | 参考type定义 | 是 |
config_value | string | 参考type定义 | 是 |
分区字段
分区名 | 数据类型 | 注释 | Nullable |
---|---|---|---|
ds | string | 日期分区,表示数据的业务日志,启动数据导入任务的时候指定。格式yyyymmdd | 否 |
biz | string | 业务分区,值为biz_code,启动数据导入任务的时候指定 | 否 |
path | string | 流程分区,用于区分场景和abtest,值系统分配 | 否 |
alg | string | 算法名,值为node_code+顺序后缀 | 否 |
type | string | type分区有两个取值:data和config 取值为data:保存数据,该分区中config_name和config_value两个字段均为空 取值为config:有两条配置。 config_name为feature_len:feature的维度; config_name为density:feature的存储形式,0表示稀疏格式,1表示平坦格式 |
否 |
USER_FEATURE
描述:用户特征
字段
列名 | 数据类型 | 注释 | Nullable |
---|---|---|---|
user_id | string | 用户ID,唯一标识 | 否 |
feature | string | 用户特征,向量形式。视向量的稀疏程度,有两种表示方式: 平坦的向量形式:[f1u02f2u02…] 稀疏的向量形式:[p1u03f1u02p2u03f1…] 其中pi代表非0特征fi的位置,fi都是double类型的数字,以文本形式存储 |
否 |
simhash | string | feature的simhash值 | 是 |
config_name | string | 参考type定义 | 是 |
config_value | string | 参考type定义 | 是 |
分区字段
分区名 | 数据类型 | 注释 | Nullable |
---|---|---|---|
ds | string | 日期分区,表示数据的业务日志,启动数据导入任务的时候指定。格式yyyymmdd | 否 |
biz | string | 业务分区,值为biz_code,启动数据导入任务的时候指定 | 否 |
path | string | 流程分区,用于区分场景和abtest,值系统分配 | 否 |
alg | string | 算法名,值为node_code+顺序后缀 | 否 |
type | string | type分区有两个取值:data和config 取值为data:保存数据,该分区中config_name和config_value两个字段均为空 取值为config:有两条配置。 config_name为feature_len:feature的维度; config_name为density:feature的存储形式,0表示稀疏格式,1表示平坦格式 |
否 |
SYMMETRIC_FEATURE
描述:用户物品对称特征
字段
分区字段
列名 | 数据类型 | 注释 | Nullable |
---|---|---|---|
id | string | 用户ID,如果type=user_data;物品ID,如果type=item_data | 否 |
feature | string | 用户或者物品特征,向量形式。视向量的稀疏程度,有两种表示方式: 平坦的向量形式:[f1u02f2u02…] 稀疏的向量形式:[p1u03f1u02p2u03f1…] 其中pi代表非0特征fi的位置,fi都是double类型的数字,以文本形式存储 |
否 |
simhash | string | item feature的simhash值。用途和item_feature表一样。 | 是 |
config_name | string | 参考type定义 | 是 |
config_value | string | 参考type定义 | 是 |
分区字段
分区名 | 数据类型 | 注释 | Nullable |
---|---|---|---|
ds | string | 日期分区,表示数据的业务日志,启动数据导入任务的时候指定。格式yyyymmdd | 否 |
biz | string | 业务分区,值为biz_code,启动数据导入任务的时候指定 | 否 |
path | string | 流程分区,用于区分场景和abtest,值系统分配 | 否 |
alg | string | 算法名,值为node_code+顺序后缀 | 否 |
type | string | type分区有三个取值:user,item,config 取值为user: 保存user feature数据,该分区中config_name和config_value两个字段为空. 取值为item: 保存item feature数据,该分区中config_name和config_value两个字段为空. 取值为config:有两条配置: config_name为feature_len:feature的维度; config_name为density:feature的存储形式,0表示稀疏格式,1表示平坦格式 |
否 |
USER_ITEM_FEATURE
描述:用户物品交互特征
字段
列名 | 数据类型 | 注释 | Nullable |
---|---|---|---|
user_id | string | 用户ID | 否 |
item_id | string | 物品ID | 否 |
feature | string | 用户或者物品特征,向量形式。视向量的稀疏程度,有两种表示方式: 平坦的向量形式:[f1u02f2u02…] 稀疏的向量形式:[p1u03f1u02p2u03f1…] 其中pi代表非0特征fi的位置,fi都是double类型的数字,以文本形式存储 |
否 |
simhash | string | item feature的simhash值。用途和item_feature表一样。 | 是 |
config_name | string | 参考type定义 | 是 |
config_value | string | 参考type定义 | 是 |
分区字段
分区名 | 数据类型 | 注释 | Nullable |
---|---|---|---|
ds | string | 日期分区,表示数据的业务日志,启动数据导入任务的时候指定。格式yyyymmdd | 否 |
biz | string | 业务分区,值为biz_code,启动数据导入任务的时候指定 | 否 |
path | string | 流程分区,用于区分场景和abtest,值系统分配 | 否 |
alg | string | 算法名,值为node_code+顺序后缀 | 否 |
type | string | type分区有两个取值:data和config 取值为data:保存数据,该分区中config_name和config_value两个字段均为空 取值为config:有两条配置。 config_name为feature_len:feature的维度; config_name为density:feature的存储形式,0表示稀疏格式,1表示平坦格式 |
否 |
USER_ITEM_SCORE
描述:用户物品偏好评分
字段
列名 | 数据类型 | 注释 | Nullable |
---|---|---|---|
user_id | string | 用户ID | 否 |
item_score | string | 用户对有评分物品的评分,KV组格式。KV之间以u02分隔,key和value之间以u03分隔,格式:[Item_id1u03score1u02item_id2u03score2…] | 否 |
config_name | string | 保留字段 | 是 |
config_value | string | 保留字段 | 是 |
分区字段
分区名 | 数据类型 | 注释 | Nullable |
---|---|---|---|
ds | string | 日期分区,表示数据的业务日志,启动数据导入任务的时候指定。格式yyyymmdd | 否 |
biz | string | 业务分区,值为biz_code,启动数据导入任务的时候指定 | 否 |
path | string | 流程分区,用于区分场景和abtest,值系统分配 | 否 |
alg | string | 算法名,值为node_code+顺序后缀 | 否 |
type | string | 固定为 ‘data’ | 否 |
ITEM_ITEM_REC_LIST
描述:物品-物品推荐候选集
字段
列名 | 数据类型 | 注释 | Nullable |
---|---|---|---|
item_id | string | 物品ID,唯一标识 | 否 |
rec_list | string | 基于item相似度推荐的item清单,选取topN个最相似的结果,每个推荐结果包括以下内容: item_id:被推荐物品的ID weight:被推荐物品与输入物品的相关性 alg:推荐策略标识,CB多列表合并时,节点附加,没有使用CB节点则为空 simhash:用于在线去重。如无此需求,可为空 rec_list依照weight从大到小排序 不同的推荐物品之间用u02分隔;每个推荐物品的内部信息用u03分隔,格式:[itemidu03weight(u03alg)(u03simhash)] |
否 |
config_name | string | 保留字段 | 是 |
config_value | string | 保留字段 | 是 |
分区字段
分区名 | 数据类型 | 注释 | Nullable |
---|---|---|---|
ds | string | 日期分区,表示数据的业务日志,启动数据导入任务的时候指定。格式yyyymmdd | 否 |
biz | string | 业务分区,值为biz_code,启动数据导入任务的时候指定 | 否 |
path | string | 流程分区,用于区分场景和abtest,值系统分配 | 否 |
alg | string | 算法名,值为node_code+顺序后缀 | 否 |
type | string | 固定为 ‘data’ | 否 |
USER_ITEM_REC_LIST
描述:用户-物品推荐候选集
字段
列名 | 数据类型 | 注释 | Nullable |
---|---|---|---|
user_id | string | 用户ID,唯一标识 | 否 |
rec_list | string | 基于item相似度推荐的item清单,选取topN个最相似的结果,每个推荐结果包括以下内容: item_id:被推荐物品的ID weight:被推荐物品与用户的相关性 alg:推荐策略标识,CB多列表合并时,节点附加,没有使用CB节点则为空 simhash:用于在线去重。如无此需求,可为空 rec_list依照weight从大到小排序 不同的推荐物品之间用u02分隔;每个推荐物品的内部信息用u03分隔,格式:[itemidu03weight(u03alg)(u03simhash)] |
否 |
config_name | string | 保留字段 | 是 |
config_value | string | 保留字段 | 是 |
分区字段
分区名 | 数据类型 | 注释 | Nullable |
---|---|---|---|
ds | string | 日期分区,表示数据的业务日志,启动数据导入任务的时候指定。格式yyyymmdd | 否 |
biz | string | 业务分区,值为biz_code,启动数据导入任务的时候指定 | 否 |
path | string | 流程分区,用于区分场景和abtest,值系统分配 | 否 |
alg | string | 算法名,值为node_code+顺序后缀 | 否 |
type | string | 固定为 ‘data’ | 否 |
DEFAULT_REC_LIST
描述:默认推荐候选集
字段
列名 | 数据类型 | 注释 | Nullable |
---|---|---|---|
rec_list | string | 基于item相似度推荐的item清单,选取topN个最相似的结果,每个推荐结果包括以下内容: item_id:被推荐物品的ID weight:被推荐物品与用户的相关性 alg:推荐策略标识,CB多列表合并时,节点附加,没有使用CB节点则为空 simhash:用于在线去重。如无此需求,可为空 rec_list依照weight从大到小排序 不同的推荐物品之间用u02分隔;每个推荐物品的内部信息用u03分隔,格式:[itemidu03weight(u03alg)(u03simhash)] |
否 |
config_name | string | 保留字段 | 是 |
config_value | string | 保留字段 | 是 |
分区字段
分区名 | 数据类型 | 注释 | Nullable |
---|---|---|---|
ds | string | 日期分区,表示数据的业务日志,启动数据导入任务的时候指定。格式yyyymmdd | 否 |
biz | string | 业务分区,值为biz_code,启动数据导入任务的时候指定 | 否 |
path | string | 流程分区,用于区分场景和abtest,值系统分配 | 否 |
alg | string | 算法名,值为node_code+顺序后缀 | 否 |
type | string | 固定为 ‘data’ | 否 |
TAG_ITEM_REC_LIST
描述:基于标签的推荐候选集
字段
列名 | 数据类型 | 注释 | Nullable |
---|---|---|---|
tag_id | string | tag_id ,不限于用户tag,物品tag。比如类目的推荐列表,城市的推荐列表 | 否 |
rec_list | string | 基于item相似度推荐的item清单,选取topN个最相似的结果,每个推荐结果包括以下内容: item_id:被推荐物品的ID weight:被推荐物品与用户的相关性 alg:推荐策略标识,CB多列表合并时,节点附加,没有使用CB节点则为空 simhash:用于在线去重。如无此需求,可为空 rec_list依照weight从大到小排序 不同的推荐物品之间用u02分隔;每个推荐物品的内部信息用u03分隔,格式:[itemidu03weight(u03alg)(u03simhash)] |
否 |
config_name | string | 保留字段 | 是 |
config_value | string | 保留字段 | 是 |
分区字段
分区名 | 数据类型 | 注释 | Nullable |
---|---|---|---|
ds | string | 日期分区,表示数据的业务日志,启动数据导入任务的时候指定。格式yyyymmdd | 否 |
biz | string | 业务分区,值为biz_code,启动数据导入任务的时候指定 | 否 |
path | string | 流程分区,用于区分场景和abtest,值系统分配 | 否 |
alg | string | 算法名,值为node_code+顺序后缀 | 否 |
type | string | 固定为 ‘data’ | 否 |
RANKING_MODEL
描述:LTR模型数据
字段
列名 | 数据类型 | 注释 | Nullable |
---|---|---|---|
group_id | string | 特征组id,唯一 | 否 |
value | string | KV串,由feature_id和对应的weight组成:[f_id1u03w1u02f_id2u03w2…] | 否 |
config_name | string | 保留字段 | 是 |
config_value | string | 保留字段 | 是 |
分区字段
分区名 | 数据类型 | 注释 | Nullable |
---|---|---|---|
ds | string | 日期分区,表示数据的业务日志,启动数据导入任务的时候指定。格式yyyymmdd | 否 |
biz | string | 业务分区,值为biz_code,启动数据导入任务的时候指定 | 否 |
path | string | 流程分区,用于区分场景和abtest,值系统分配 | 否 |
alg | string | 算法名,值为node_code+顺序后缀 | 否 |
type | string | 固定为 ‘data’ | 否 |
相关下载
依赖库
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
</dependency>
<dependency>
<groupId>xom</groupId>
<artifactId>xom</artifactId>
<version>1.2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.aliyun.odps</groupId>
<artifactId>odps-graph-local</artifactId>
<version>0.18.3-public</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.aliyun.odps</groupId>
<artifactId>odps-sdk-core</artifactId>
<version>0.18.3-public</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.aliyun.odps</groupId>
<artifactId>odps-sdk-mapred</artifactId>
<version>0.18.3-public</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.aliyun.odps</groupId>
<artifactId>odps-sdk-graph</artifactId>
<version>0.18.3-public</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.aliyun.odps</groupId>
<artifactId>odps-sdk-commons</artifactId>
<version>0.18.3-public</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>httpclient</groupId>
<artifactId>httpclient</artifactId>
<version>4.1.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>httpcore</groupId>
<artifactId>httpcore</artifactId>
<version>4.1.2</version>
<scope>provided</scope>
</dependency>
最后更新:2016-11-23 17:31:33
上一篇:
实时修正__用户指南_推荐引擎-阿里云
下一篇:
在线算法开发手册__算法规范_开发者指南_推荐引擎-阿里云
手动扩展系统盘__扩容磁盘概览_磁盘_用户指南_云服务器 ECS-阿里云
阿里云竟然降价53% 为智慧城市注入新活力
新增媒体工作流__媒体工作流接口_API使用手册_视频点播-阿里云
获取可部署的 ECU 列表__资源管理类 API_Open API 参考_企业级分布式应用服务 EDAS-阿里云
RAM和STS介绍__权限管理_最佳实践_对象存储 OSS-阿里云
OSS常用工具汇总__常用工具_对象存储 OSS-阿里云
产品介绍__交通行业解决方案_大数据解决方案-阿里云
功能特点__产品简介_云数据库 Redis 版-阿里云
根据设备名称查询设备信息__接口列表_服务器端API_阿里云物联网套件-阿里云
专有网络类型的实例通过内网连接OSS的方式__配置_用户指南_专有网络 VPC-阿里云
相关内容
常见错误说明__附录_大数据计算服务-阿里云
发送短信接口__API使用手册_短信服务-阿里云
接口文档__Android_安全组件教程_移动安全-阿里云
运营商错误码(联通)__常见问题_短信服务-阿里云
设置短信模板__使用手册_短信服务-阿里云
OSS 权限问题及排查__常见错误及排除_最佳实践_对象存储 OSS-阿里云
消息通知__操作指南_批量计算-阿里云
设备端快速接入(MQTT)__快速开始_阿里云物联网套件-阿里云
查询API调用流量数据__API管理相关接口_API_API 网关-阿里云
使用STS访问__JavaScript-SDK_SDK 参考_对象存储 OSS-阿里云