概述
电商行业数据规范,历史数据及实时数据的上传均需要遵守此规范
数据描述
如果您当前业务形态属于电商行业,启用智能推荐服务需要准备3张数据表。
物品表(item):此处即指商品。
最近推荐场景内全部可以被推荐商品的全量表。由于item数量受配额限制,建议您上传前做去重处理。item_id与item_type二者同时唯一确定一条item。
用户表(user):最近系统的全部注册用户表。
由于user数量受配额限制,建议您上传前做去重处理。根据您内部的用户标记方法,可以选择方案一均通过imei唯一确认一名用户,方案二通过user_id和imei组合确认一名用户(如登录用户使用user_id唯一标记,未登录用户使用imei唯一标记)。
请务必确认用户的唯一性并在请求推荐结果时指定用户的唯一标识信息,否则将无法进行千人千面的推荐。
行为表(behavior):最近一段时间场景的行为数据。我们建议您提供1-2周的数据。
如果是全新板块,没有历史数据;或者因为技术原因无法提供行为数据,建议使用我们提供的测试数据,但是在开始一段时间(大约两周)内,模型的效果会不太理想,但随着数据的积累,会逐渐上升并最终稳定。
对于这三张表的选填字段,我们建议您尽量上传。在保证选填字段有效性的条件下,这些选填字段越多越准确,模型的效果越好。未填写部分系统内部将渲染成默认值。
表结构
1、下述表结构中,是否必填=”必填”的字段必须要上报到智能推荐。每个必填字段及建议填写字段影响较大,其字段具体作用请详细阅读”字段值说明”。
2、在采用历史数据启动的方式,在MaxCompute中建表时,选填字段的值可以为空,但是不可省去表字段,表中需要包含所有字段,具体建表语句参考文末。
item
字段名 | 字段类型 | 是否必填 | 字段含义 | 字段值枚举 | 字段值说明 | 字段值示例 |
item_id | string | 必填 | 物品标识序号,仅支持英文字符(A~Z、a~z)及数字0~9的组合。 | 用户自填 | 1.item_id+item_type作为一条数据的唯一标识。 2.item_id的长度需限制在50字符以内。 重要 上报过来的item_id需要记录下来,以免后续无法删除此item_id。 | 34513 |
item_type | string | 必填 | 物品类型。 | image; article; video; shortvideo; item; recipe; audio;(如当前类型不满足,请联系技术人员沟通解决方案) |
| article |
status | string | 必填 | 物品推荐状态。 | 0/1 | 1.status=”1”时,item可推荐出来。 2.status=”0”时,item不会推荐出来。 3.注意:字段值上报为”0”,该item不会推荐出来。重新把值改为”1”(item重新上架),需要等一个小时的调度周期。 4.注意:item下架为实时下架,把status的值改为”0”即可。 | 1 |
scene_id | string | 必填 | 场景ID。 物品投放的不同地方,可以理解成是对物品的一个分类的ID。不同的页面,用户访问类型不一样,都可以做成不同的场景ID。 | 用户自填 | 1、按照字母数字组合方式定义,建议使用首拼或英文与数字组合形式增强可读性。 2、场景ID中不能含有英文冒号。 3、场景ID不能为-102(内部预留值)。 4、当推荐仅有单场景时,该字段置1。 5、注意:item表中的场景ID可以为多值,用英文逗号分隔,如字段值示例。用于不同投放页面,投放场景使用详解。 | sy101(如代表首页),gwc102(如代表购物车页) |
pub_time | string | 必填 | 内容发布时的时间戳(秒级),本字段用于判断内容是否为最新发布 | 用户自填 | 对有时效性需求的用户,必填。(将用于新品的推荐策略)。 | 1520327038 |
expire_time | string | 可选 | 内容失效时间戳,单位s | 用户自填 | 1、当前服务器时间大于该字段时,item将不被继续推荐。 2、如果所有数据均失效,服务无法启动。 3、置为空代表永不失效。 | 1520327038 |
last_modify_time | string | 可选 | 物品信息的最后修改时间戳,单位s | 用户自填 | 如果用户对已经发布了的物品做了较大的更新,又有时效性的需求,可以更新此字段。同pub_time功能类似,共同作用于新品链路。 | 1520327038 |
title | string | 建议填写 | 物品标题 | 用户自填 | 将用于语义层面深入分析,置空会损失部分算法效果,建议填写。 | 小香风淑女连衣裙 |
weight | string | 建议填写 | item的权重值 | 用户自填 | 注意:1、要加权的商品填:100、不加权的商品填:1。 2、仅支持填入100或1,其他值是非法的。 3、建议加权的item数量<=item总数的10%。 4、设置了高权重的物品,会有更高的概率优先推荐出来。 5、加权将对模型造成干扰,请确认item被加权的合理性后操作。 | 1 |
category_level | string | 建议填写 | 类目层级数,例如3级类目 | 用户自填 | 如果和category_path数据不匹配,会影响打散功能。 | 3 |
category_path | string | 建议填写 | 类目路径,下划线联接 | 用户自填 | 1、类目路径,支持多级类目,用下划线联接 2、不可出现英文逗号,英文冒号(用于打散策略)。 | 12_1024_56 |
tags | string | 建议填写 | 标签,多个标签使用英文逗号分隔。 | 用户自填 | 1、主要用于描述物品的特征,由业务方自行运营物品的标签库。 2、算法模型会基于标签进行特征分析。 3、单条商品标签数不能超过100个,标签池总个数建议不超过50000个 。 4、如果标签属于业务敏感数据,建议映射到数字脱敏上报。 | 著名演员,运动 |
share_cnt | string | 可选 | 一个月内分享次数 | 用户自填 | 启动时,如果当前场景行为数据比较稀疏,可以将平台其他场景的行为统计数据放入这些字段,不要求实时性。模型稳定后,如果维护这些字段成本较高,可以低优先级处理 | 156 |
collect_cnt | string | 可选 | 一个月内收藏次数 | 用户自填 | 不要求实时性,优先级可以放低 | 566 |
pv_cnt | string | 可选 | 一个月内曝光次数 | 用户自填 | 不要求实时性,优先级可以放低 | 10292 |
origin_price | string | 可选 | 物品原价,单位为元,如果是外币价格,需折算成人民币 。 | 用户自填 | 不要求实时性,优先级可以放低 | 1000,即1000RMB |
cur_price | string | 可选 | 物品折后价格,单位为元,如果是外币价格,需折算成人民币 。 | 用户自填 | 不要求实时性,优先级可以放低 | 900,即900RMB |
buy_cnt | string | 可选 | 平台月销量 | 用户自填 | 启动时,如果当前场景行为数据比较稀疏,可以将平台其他场景的行为统计数据放入这些字段,不要求实时性。模型稳定后,如果维护这些字段成本较高,可以低优先级处理 | 10 |
source_buy_cnt | string | 可选 | 淘宝月销量 | 用户自填 | 不要求实时性,优先级可以放低 | 10000 |
comment_cnt | string | 可选 | 评论数 | 用户自填 | 不要求实时性,优先级可以放低 | 1000 |
brand_id | string | 建议填写 | 品牌ID | 用户自填 | 不要求实时性,优先级可以放低 | |
shop_id | string | 建议填写 | 店铺ID | 用户自填 | 不要求实时性,优先级可以放低 | |
source_id | string | 可选 | 物料经由哪个平台进入场景 | 用户自填 | 比如天猫,淘宝等,这个字段可以是平台的ID,例如淘宝1,天猫2 | 1 |
add_fee | string | 可选 | 物料的其他附加费用 | 用户自填 | 比如邮费。可以用0代表包邮,1代表不包邮,或者用精确到分的具体钱数代表邮费 | 0 |
features | string | 可选 | 物料特征(字符串型) | 用户自填 | 英文逗号分隔的物料特征;该特征是描述性的 | |
num_features | string | 可选 | 物料特征(数值型) | 用户自填 | 英文逗号分隔的数值型物料特征;必须保证所有物料的该字段逗号个数一致,且字段对齐 |
user
字段名 | 字段类型 | 是否必填 | 字段含义 | 字段值枚举 | 字段值说明 | 字段值示例 |
user_id | string | 已登录用户必填 | 用户唯一ID | 用户自填 | 1、注册用户必填。 2、user_id 可作为一个用户的唯一标识 | 1234567 |
user_id_type | string | 可选 | 用户注册类型 | 1234 | 1:app注册账号, 2:手机号,3:微信号,4:其它 | 2 |
imei | string | 未登录用户必填 | 安卓:MD5(imei),IOS:MD5(idfa) | 用户自填 | 1、非注册用户必填。 2、按照指定要求,mac地址,设备号等无效,会无法使用内部用户画像信息,仅保留曝光过滤功能。 3、32位MD5值。 | imei358800091015835md5后74f25e604e1a9dde7471fe2e25ae54d0idfa41B2FD07-695A-4A27-8D26-C30ECE6F7EADmd5后06e1565409c9fc4887036b974421**** |
third_user_name | string | 可选 | 第三方用户名称 | 用户自填 | jack | |
third_user_type | string | 可选 | 第三方平台名称 | 用户自填 | ||
phone_md5 | string | 可选 | 用户手机号的md5值 | 用户自填 | d41d8cd98f00b204e9800998ecf8**** | |
gender | string | 可选 | 性别 | male/female/unknown | male | |
age | string | 可选 | 年龄 | 用户自填 | 22 | |
age_group | string | 可选 | 年龄段 | 用户自填 | 20-25 | |
country | string | 可选 | 国家编码 | 用户自填 | ISO3166-1 alpha-3 编码 | “CHN”(中国) |
city | string | 可选 | 城市名称 | 用户自填 | 杭州 | |
ip | string | 可选 | 最后登录IP | 用户自填 | 202.113.XX.XX | |
device_model | string | 可选 | 设备型号 | 用户自填 | iphoneX | |
tags | string | 可选 | 用户tags,多个tag使用英文逗号分隔 | 用户自填 | 对用户的标签描述 | 足球,健身,户外 |
source | string | 可选 | 用户来源 | 用户自填 | 今日头条引流 | |
content | string | 可选 | 用户描述 | 用户自填 | ||
features | string | 可选 | 用户特征(字符串型) | 用户自填 | 英文逗号分隔的用户描述性特征,比如画像等 | |
num_features | string | 可选 | 用户特征(数值型) | 用户自填 | 英文逗号分隔的数值型用户特征;必须保证所有物料的该字段逗号个数一致,且字段对齐 | |
register_time | string | 可选 | 注册时间戳,单位s | 用户自填 | 1520007038 | |
last_login_time | string | 可选 | 上次登录时间戳,单位s | 用户自填 | 1520017038 | |
last_modify_time | string | 可选 | 用户信息的最后修改时间戳,单位s | 用户自填 | 1520327038 |
behavior
字段名 | 字段类型 | 是否必填 | 字段含义 | 字段值枚举 | 字段值说明 | 字段值示例 |
item_id | string | 必填 | 内容ID | 用户自填 | 需要与item表中的item_id相匹配 | 34513 |
item_type | string | 必填 | 商品的类型 | image; article; video; shortvideo; item; recipe; audio; | 需要与item表中的item_type相匹配 | article |
bhv_type | string | 必填 | 行为类型,例如曝光、停留、点击、收藏、下载、购买、加购、评价等,详见behavior type | expose/click/ buy/cart/ evaluate | 正例数据click的条数需要小于负例数据expose的条数,否则系统会判断数据异常,无法启动服务 | expose |
trace_id | string | 必填 | 请求追踪/埋点ID。用于在AB实验时区分调用了阿里推荐引擎 | Alibaba/selfhold | 1、调用了阿里推荐引擎而产生的行为数据,填Alibaba;基于自研/运营推荐产生的行为数据,填selfhold。 2、主要用于控制台报表分析,效果对比。 | Alibaba |
trace_info | string | 必填 | 请求埋点信息。一次推荐接口调用时会返回该信息,日志记录时带上即可 | 阿里推荐接口返回字段值 | 1.trace_id=selfhold时,trace_info填1即可。 2.trace_id=Alibaba。在获取推荐结果时,会返回此item的trace_info。trace_id=Alibaba说明这条行为数据,是对从AIRec推荐出来的这条item而产生的行为。回传行为数据时把这个item对应的trace_info原样回传即可。 | 1007.5911.12351.1002000::::: |
scene_id | string | 必填 | 场景ID | 用户自填 | 1、用户产生行为的场景,在对应的item的场景ID中,单值。 2、行为表的scene_id要包含于item表中的scene_id。 3、无场景区分需求,默认填1,若无法追踪到行为的具体场景ID,填-102。具体参考投放场景使用指南。 | a1001 |
bhv_time | string | 可选 | 行为发生的时间戳,单位s | 用户自填 | 用户实际产生行为的时间。 | 1520327038 |
bhv_value | string | 必填 | 行为详情,例如点击次数,停留时长,购买件数、购买金额等,详见behavior type | 用户自填 | 1、点击行为填1即可。 2、曝光行为视业务需求,也可不填。 3、其它行为类型请联系技术开发。 | 1 |
user_id | string | 已登录用户必填 | 用户ID | 用户自填 | 1、注册用户需要与user表中相匹配。 2、未登录用户访问可不填。 | 1234567 |
platform | string | 可选 | 客户端平台。 | 用户自填 | iOS/Android/H5 | iOS |
imei | string | 未登录用户必填 | 用户设备ID,安卓(imei),IOS(idfa) | 用户自填 | 1、非注册用户必填 2、按照指定要求,mac地址,设备号等无效,会无法使用内部用户画像信息,仅保留曝光过滤功能. 3、32位MD5值 | e2fcdb0f4dce45e35fe2823d7973**** |
app_version | string | 可选 | app的版本号 | 用户自填 | 4.1.10 | |
net_type | string | 可选 | 网络型号 | 用户自填 | 2G/3G/4G/WIFI | 4G |
ip | string | 可选 | 客户端IP信息 | 用户自填 | 234.45.XX.XX | |
login | string | 可选 | 是否登录用户 | 01 | 0:未登录1:登录 | 1 |
report_src | string | 可选 | 上报来源类型 | 12 | 1:服务端。2:客户端。 | 2 |
device_model | string | 可选 | 设备型号 | 用户自填 | iphoneX | |
longitude | string | 可选 | 位置经度 | 用户自填 | 128.4 | |
latitude | string | 可选 | 位置纬度 | 用户自填 | 78.1 | |
module_id | string | 可选 | 模块ID | 用户自填 | 114 | |
page_id | string | 可选 | 页面ID | 用户自填 | 4 | |
position | string | 可选 | 内容所在的位置信息 | 用户自填 | 5 | |
message_id | string | 可选 | 一条行为的唯一标识 | 用户自填 | 若不填写内部将取item_id、item_type、user_id、imei、bhv_type、bhv_time等字段组合去重 | 5 |
behavior type
下表为电商行业支持的9种行为类型,如果您需要支持其他行为类型,请联系技术人员沟通解决方案。
上报的数据类型与模型优化的目标强相关,如果仅上传点击相关的行为类型,将以点击率为主要的优化目标;
如果上传消费类数据如加购、购买,也会相应地在优化目标中加入对消费数据的考量与优化。注意,此处将以优化点击率为核心目标。如果无法定位到加购、购买行为发生的具体场景,在填写scece_id时请填写为-102。
scene用法见:投放场景使用指南。
序号 | 行为释义 | bhv_type | bhv_value | 说明 |
1 | 曝光 | expose | 置空即可 | 必填行为,且曝光行为数量要大于点击行为 |
2 | 点击 | click | 1 | 必填行为 |
3 | 点赞 | like | 置空即可 | / |
4 | 踩 | unlike | 置空即可 | / |
5 | 评论 | comment | 置空即可 | / |
6 | 收藏 | collect | 置空即可 | / |
7 | 停留时长 | stay | 时长 | 单位不限,请注意每条数据中具备相同单位约定。 |
8 | 加购 | cart | 件数,单价((英文逗号隔开)示例:1,10000 | 单价:RMB,可精确到百分位(分)。 |
9 | 购买 | buy | 件数,单价(英文逗号隔开)示例:1,10000 | 单价:RMB,可精确到百分位(分)一条购买行为中,只能对应一个item_id,一个订单多个item_id,需要进行拆分。 |
10 | 评价 | evaluate | 离散的递增或递减的整数 | 举例:若使用星级评价,1-5星表示好评度递增,则可设置对应关系为1星值取1,2星2,5星5。务必保证增减逻辑与实际好差评趋势对应。 |
11 | 负反馈 | dislike | 具体使用参考负反馈功能详解。 |
建表语句
如使用MaxCompute服务进行启动数据上报,可参考如下的建表语句:
---创建电商型的行为表
DROP TABLE IF EXISTS behavior_table;
CREATE TABLE IF NOT EXISTS `behavior_table`
(
trace_id STRING COMMENT "请求追踪/埋点ID"
,trace_info STRING COMMENT "请求埋点信息"
,platform STRING COMMENT "客户端平台"
,device_model STRING COMMENT "设备型号"
,imei STRING COMMENT "设备ID"
,app_version STRING COMMENT "app的版本号"
,net_type STRING COMMENT "网络型号"
,longitude STRING COMMENT "位置经度"
,latitude STRING COMMENT "位置纬度"
,ip STRING COMMENT "客户端IP信息"
,login STRING COMMENT "是否登录用户"
,report_src STRING COMMENT "上报来源类型"
,scene_id STRING COMMENT "场景ID"
,user_id STRING COMMENT "用户ID"
,item_id STRING COMMENT "内容ID"
,item_type STRING COMMENT "商品的类型"
,module_id STRING COMMENT "模块ID"
,page_id STRING COMMENT "页面ID"
,position STRING COMMENT "商品所在的位置信息"
,bhv_type STRING COMMENT "行为类型"
,bhv_value STRING COMMENT "行为详情"
,bhv_time STRING COMMENT "行为发生的时间戳"
)
PARTITIONED BY
(
ds STRING
)
LIFECYCLE 30
;
---创建电商型的用户表
DROP TABLE IF EXISTS user_table;
CREATE TABLE IF NOT EXISTS `user_table`
(
user_id STRING COMMENT "用户唯一ID"
,user_id_type STRING COMMENT "用户注册类型"
,third_user_name STRING COMMENT "第三方用户名称"
,third_user_type STRING COMMENT "第三方平台名称"
,phone_md5 STRING COMMENT "用户手机号的md5值"
,imei STRING COMMENT "用户设备ID"
,content STRING COMMENT "用户内容"
,gender STRING COMMENT "性别"
,age STRING COMMENT "年龄"
,age_group STRING COMMENT "年龄段"
,country STRING COMMENT "国家"
,city STRING COMMENT "城市"
,ip STRING COMMENT "最后登录IP"
,device_model STRING COMMENT "设备型号"
,register_time STRING COMMENT "注册时间戳"
,last_login_time STRING COMMENT "上次登录时间戳"
,last_modify_time STRING COMMENT "用户信息的最后修改时间戳"
,tags STRING COMMENT "用户tags"
,source STRING COMMENT "用户来源"
,features STRING COMMENT "附加用户特征(字符串型)"
,num_features STRING COMMENT "附加用户特征(数值型)"
)
PARTITIONED BY
(
ds STRING
)
LIFECYCLE 30
;
---创建电商型的商品表
DROP TABLE IF EXISTS item_table;
CREATE TABLE IF NOT EXISTS `item_table`
(
scene_id STRING COMMENT "场景id"
,item_id STRING COMMENT "内容唯一标识ID"
,item_type STRING COMMENT "内容的类型"
,category_level STRING COMMENT "类目层级数"
,category_path STRING COMMENT "类目路径"
,title STRING COMMENT "内容标题"
,content STRING COMMENT "内容正文"
,pub_time STRING COMMENT "发布时间"
,tags STRING COMMENT "标签"
,share_cnt STRING COMMENT "分享次数"
,collect_cnt STRING COMMENT "收藏次数"
,pv_cnt STRING COMMENT "浏览次数"
,status STRING COMMENT "是否可推荐"
,expire_time STRING COMMENT "内容失效时间戳"
,last_modify_time STRING COMMENT "内容信息的最后修改时间戳"
,origin_price STRING COMMENT "原始价格"
,cur_price STRING COMMENT "折扣后的价格"
,buy_cnt STRING COMMENT "平台月销量"
,source_buy_cnt STRING COMMENT "源头购买数量"
,comment_cnt STRING COMMENT "评论数"
,brand_id STRING COMMENT "品牌id"
,shop_id STRING COMMENT "商店id"
,source_id STRING COMMENT "物料来源"
,add_fee STRING COMMENT "附件费用"
,features STRING COMMENT "附加用户特征(字符串型)"
,num_features STRING COMMENT "附加用户特征(数值型)"
,weight STRING COMMENT "内容加权, 默认为1"
)
PARTITIONED BY
(
ds STRING
)
LIFECYCLE 30
;