数据准备

更新时间: 2025-06-10 14:01:48

在使用PAI-Rec搭建推荐系统前,需要准备基础数据,分析用户特征,用于模型训练与校准。本文为您介绍部分典型场景的数据规范。

背景信息

特征数据一般包含以下三张基础表:

  • 用户表

    包含与用户相关的特征数据,用于描述用户的个人信息、偏好和行为习惯。

    用户表中用户ID不重复,用户表和行为表可通过用户唯一ID进行关联,应包含用户基础属性信息,如年龄、性别、所属城市、积分、注册时间和用户标签等。每天一个分区,记录所有用户信息。

  • 物品表

    包含推荐物品的详细信息,用于描述物品的属性和特性。

    商品表中商品ID不重复,物品表和行为表可通过商品唯一ID进行关联,应包含商品基础属性信息,如一级类目、二级类目、价格、标题、颜色、规格、上架时间、作者ID和粉丝数量等。每天一个分区,记录所有的物品信息。

  • 行为表

    包含用户和物品之间的行为,例如用户在什么时间对什么物品做了什么行为。

前提条件

创建MaxCompute项目,并绑定至DataWorks工作空间

操作步骤

为了方便您快速上手体验,PAI-Rec在MaxCompute的pai_online_project项目中预置了三张表,您可将数据克隆至自己的项目中使用。

  1. 登录DataWorks控制台,在左侧导航栏单击数据开发与运维 > 数据开发

  2. 选择已创建的DataWorks工作空间后,单击进入数据开发

  3. 鼠标悬停至新建,选择新建节点 > MaxCompute > ODPS SQL,在弹出的页面中配置节点参数,然后单击确认

  4. 在新建节点区域运行以下SQL命令,将用户表、物料表、Label表从pai_online_project项目同步到自己的MaxCompute项目中。

    -- 用户信息表
    CREATE TABLE IF NOT EXISTS rec_sln_demo_user_table(
      user_id BIGINT COMMENT '用户唯一ID',
      gender STRING COMMENT '性别',
      age BIGINT COMMENT '年龄',
      city STRING COMMENT '城市',
      item_cnt BIGINT COMMENT '创作内容数',
      follow_cnt BIGINT COMMENT '累计关注数',
      follower_cnt BIGINT COMMENT '累计粉丝数',
      register_time BIGINT COMMENT '注册时间',
      tags STRING COMMENT '用户标签'
    ) PARTITIONED BY (ds STRING) STORED AS ALIORC;
    INSERT OVERWRITE TABLE rec_sln_demo_user_table PARTITION(ds)
    SELECT *
    FROM pai_online_project.rec_sln_demo_user_table
    WHERE ds > "20221231" and ds < "20230217";
    -- 商品信息表
    CREATE TABLE IF NOT EXISTS rec_sln_demo_item_table(
      item_id BIGINT COMMENT '内容ID',
      duration DOUBLE COMMENT '视频时长',
      title STRING COMMENT '标题',
      category STRING COMMENT '一级标签',
      author BIGINT COMMENT '作者',
      click_count BIGINT COMMENT '累计点击数',
      praise_count BIGINT COMMENT '累计点赞数',
      pub_time BIGINT COMMENT '发布时间'
    ) PARTITIONED BY (ds STRING) STORED AS ALIORC;
    INSERT OVERWRITE TABLE rec_sln_demo_item_table PARTITION(ds)
    SELECT *
    FROM pai_online_project.rec_sln_demo_item_table
    WHERE ds > "20221231" and ds < "20230217";
    -- 日志行为表
    CREATE TABLE IF NOT EXISTS rec_sln_demo_behavior_table(
      request_id STRING COMMENT '埋点ID/请求ID',
      user_id STRING COMMENT '用户唯一ID',
      exp_id STRING COMMENT '实验ID',
      page STRING COMMENT '页面',
      net_type STRING COMMENT '网络型号',
      event_time BIGINT COMMENT '行为时间',
      item_id STRING COMMENT '内容ID',
      event STRING COMMENT '行为类型',
      playtime DOUBLE COMMENT '播放时长/阅读时长'
    ) PARTITIONED BY (ds STRING) STORED AS ALIORC;
    INSERT OVERWRITE TABLE rec_sln_demo_behavior_table PARTITION(ds)
    SELECT *
    FROM pai_online_project.rec_sln_demo_behavior_table
    WHERE ds > "20221231" and ds < "20230217";

您也可以参考附录:常见场景的数据规范,自行准备用户表、物品表和行为表。

附录:常见场景的数据规范

电商推荐场景

下表列出了电商场景中用户表物品表行为表的建议字段。如果还有其他未涵盖的特征字段,可自行追加,字段越丰富完善,推荐效果越好。字段名称无需与表格中的完全一致。

用户表

系统内全部注册用户表,建议每天一个分区,每个分区为当天全量用户的快照。

字段名称

是否必填

字段说明

user_id

已登录用户必填

用户ID。

user_id_type

可选

用户注册类型,包括App注册账号、手机号、微信号或其它。

device_id

可选

设备ID​。

gender

可选

性别。

age/birthday

可选

年龄/出生日期。

purchasing

可选

购买力,基于历史数据统计/建模获取。

country

可选

国家。

province

可选

省份。

city

可选

城市。

register_time

可选

注册时间戳。

单位:秒。例如,1520017038。

education

可选

用户学历。

career

可选

用户职业。

last_login_time

可选

上次登录时间戳。

单位:秒。例如,1520017038。

source

可选

用户来源。

例如,头条、微信等。

content

可选

用户描述。

tags

可选

对用户的标签描述。

例如,足球、健身和户外等。

物品表

系统内全量商品表。建议每天一个分区,每个分区为截止当天全量内容的快照。

字段名称

是否必填

字段说明

item_id

商品唯一ID。

item_type

可选

商品类型。

source_id

可选

商品来源,导购电商填写商品的来源平台。

例如,淘宝、天猫和京东等。

title

可选(建议填写)

商品标题,用于语义层面深入分析,如果置空会损失部分算法效果。

sub_title

可选

商品副标题。

pub_time

必填

发布时的时间戳。

单位:秒

expire_time

可选

内容失效时间戳。

单位:秒

category_level

可选(建议填写)

类目层级数。

cate_id_path

可选(建议填写)

全类目ID路径。支持多级类目,用下划线(_)连接。

cate_name_path

可选(建议填写)

全类目名称路径。支持多级类目,用下划线(_)连接。

cate1_id

可选(建议填写)

一级类目ID。类目层级树需遵循MECE原则(即不重叠,不遗漏),语义上不可交叉。

cate2_id

可选(建议填写)

二级类目ID。类目层级树需遵循MECE原则(即不重叠,不遗漏),语义上不可交叉。

cate_id

可选(建议填写)

类目层级树的末级叶子节点ID。

cate1_name

可选(建议填写)

一级类目名称。

cate2_name

可选(建议填写)

二级类目名称。

cate_name

可选(建议填写)

叶子类目名称。

brand_id

可选(建议填写)

品牌ID。

shop_id

可选

店铺ID。

description

可选

商品详情描述。

price

必填

商品实际售卖价格。

origin_price

可选

商品原价。

discount

可选

折扣(price/origin_price)。

tags

可选

业务运营打上的商品标签,例如参加活动的ID。

color

可选

颜色分类。

properties

可选(建议填写)

商家填写的商品属性名/属性值。

例如:{"material": "棉", "style": "通勤"}

postage

可选

运费。包邮商品运费填0。

image_url

可选

商品图片URL。提供公网可下载的链接。

video_url

可选

商品视频URL。提供公网可下载的链接。

shop_dsr

可选

店铺评分,也称DSR动态评分(Detailed seller ratings)。

spu_id

可选(建议填写)

标准产品单位ID。

sku_id

可选

最小货存单位ID

prov

可选

商品所在省份。

city

可选

商品所在城市。

rate

可选

好评率。

行为表

最近一段时间App的行为数据或场景内的行为数据,建议至少选择30~60天。

为了获取用户完整的行为,尽量上报用户在全站的行为,不仅收集推荐场景(home_feed),还收集如热门场景(hot_items)和搜索场景(search)的曝光、点击等行为。在搜索场景,则记录搜索词(query)。

字段名称

是否必填

字段说明

user_id

已登录用户必填

用户ID。

device_id

可选

用户设备ID。

item_id

必填

商品ID

item_type

可选

商品类型。

event

必填

行为类型,包括曝光、停留、点击和评价等。

event_time

必填

行为时间戳。

单位:秒

event_value

可选

行为值,包括停留时长,购买件数和购买金额等。

request_id

可选(建议填写)

请求ID,每次推荐的唯一标识符。

缺少request_id会影响样本的准确性,同时无法增加实时特征。如果是新建推荐场景,可以暂时不使用request_id,但在搭建好推荐场景后,需要补上request_id,并调整训练样本生成代码,重新准备训练样本以重新训练模型。

exp_id

可选(建议填写)

实验桶ID。PAI-Rec推荐接口返回的实验ID;如果不是PAI-Rec推荐的结果,填写default等流量名称。

request_info

可选

请求埋点信息,推荐接口调用时返回该信息,日志记录时带上即可。

scene

必填

场景ID。

例如:home_feed表示首页推荐流;hot_items表示热卖栏目(不是推荐场景的行为也需要);search表示搜索场景,搜索场景需要填写本次搜索的query。

query

可选

搜索词。

page

可选

页面ID。

source_page

可选

上一页面。可用于统计不同来源的效果。

position

可选

内容所在的位置信息,即在推荐列表中的第几个位置。

app_version

可选

App的版本号。

net_type

可选

网络型号。

例如,3G/4G/5G/Wifi。

ip

可选

客户端IP信息,用于提取国家、城市等特征。

login

可选

是否登录用户。

device_platform

可选

客户端平台。

例如,iOS/Android/H5/msite。

device_system

可选

设备操作系统。

例如,iOS、Android和PC。

device_model

可选

设备型号。

device_brand

可选

设备品牌/制造商。

longitude

可选

位置经度。

latitude

可选

位置纬度。

country

可选

国家。

province

可选

省份。

city

可选(建议填写)

城市。

行为类型表

下表为电商行业中常见的几种行为类型说明。

event

event_value

行为说明

expose

置空即可。

曝光。

click

置空即可。

点击。

like

置空即可。

点赞。

unlike

置空即可。

踩。

comment

评论内容。

评论。

可用来挖掘用户的购物体验和商品质量。

collect

置空即可。

收藏。

stay

时长。

停留时长。

单位不限,请注意每条数据中具备相同单位约定。

cart

件数,单价,用英文逗号隔开。

例如:1,10000

加购。

单价:RMB,可精确到百分位(分)。

buy

件数,单价,用英文逗号隔开。

例如,1,10000

购买。

单价:RMB,可精确到百分位(分)。一条购买行为中,只能对应一个item_id,一个订单多个item_id,需要进行拆分。

evaluate

离散的递增或递减的整数。

评价。

举例:若使用星级评价,1~5星表示好评度递增,则可设置对应关系为1星值取1、2星值取2……5星值取5。务必保证增减逻辑与实际好评和差评趋势相对应。

dislike

负反馈。

内容推荐场景

下表列出了内容推荐场景中用户表物品表行为表的建议字段。如果还有其他未涵盖的特征字段,可自行追加,字段越丰富完善,推荐效果越好。字段名称无需与表格中的完全一致。

用户表

系统内全部注册用户表,建议每天一个分区,每个分区为当天全量用户的快照。

字段名称

是否必填

字段说明

user_id

已登录用户必填

用户ID。

device_id

可选

设备ID​。

register_time

可选(建议填写)

注册时间。

单位:秒。例如,1520017038。

gender

可选

性别。

age

可选

年龄。

country

可选

国家。

province

可选

省份。

city

可选

城市。

ip

可选

最后登录IP。

education

可选

用户学历。

career

可选

用户职业。

item_cnt

可选

创作内容数。

favorite_cnt

可选

收藏数。

follow_cnt

可选

关注数。

follower_cnt

可选

粉丝数。

last_login_time

可选

上次登录时间。

tags

可选

对用户的标签描述。

例如,足球、健身和户外等。

物品表

系统内全量内容表。建议每天一个分区,每个分区为截止当天全量内容的快照。

字段名称

是否必填

字段说明

item_id

必填

内容ID。

item_type

多内容类型必填

内容类型。

例如,文章和视频等。

status

必填

是否可推荐。

duration

可选(视频必填)

视频时长。

pub_time

必填

发布时间。

title

可选(建议填写)

标题。

category

可选(建议填写)

一级标签,建议使用英文。

tags

可选

标签,可以是多种标签,用半角逗号或分号分割。

author

可选(建议填写)

作者

abstract

可选

内容摘要。

content

可选

内容正文

image_url

可选

图片URL,用于提取图像特征。

video_url

可选

视频URL,用于提取视频特征。

pv_count

可选

累计曝光数。

click_count

可选

累计点击数。

praise_count

可选

累计点赞数。

comment_count

可选

累计评论数。

collect_count

可选

累计收藏数。

share_count

可选

累计分享数。

download_count

可选

累计下载数。

tip_count

可选

累计打赏数。

行为表

最近一段时间App的行为数据或场景内的行为数据,建议至少选择30~60天。

字段名称

是否必填

字段说明

user_id

已登录用户必填

用户唯一ID。

device_id

可选

用户设备ID。

item_id

必填

内容ID。

item_type

多内容类型必填

内容类型。

例如,文章和视频等。

request_id

可选

请求ID,每次推荐的唯一标识符。

缺少request_id会影响样本的准确性,同时无法增加实时特征。如果是新建推荐场景,可以暂时不使用request_id,但在搭建好推荐场景后,需要补上request_id,并调整训练样本生成代码,重新准备训练样本以重新训练模型。

request_info

可选(建议填写)

埋点内容,如召回ID等。

exp_id

必填

实验ID。PAI-Rec推荐接口返回的实验ID;如果不是PAI-Rec推荐的结果,填写default等流量名称。

scene

多场景必填

场景。

page

可选(多页面建议填写)

页面。

source_page

可选(多页面建议填写)

上一页面。

position

可选

内容所在位置。

event

必填

行为类型,包括曝光、停留、点击和评价等。

event_time

必填

行为发生时间。

playtime

可选(建议填写)

播放时长/阅读时长。

单位:秒。

comment

可选

评论内容。

net_type

可选

网络型号。

device_platform

可选(建议填写)

客户端平台。

device_brand

可选

客户端品牌。

device_model

可选

客户端机型。

device_system

可选

客户端操作系统。

app_version

可选

App版本。

longitude

可选

位置经度。

latitude

可选

位置纬度。

country

可选

国家。

province

可选

省份。

city

可选(建议填写)

城市。

ip

可选

最后登录IP。

视频推荐

下表列出了视频推荐场景中用户表物品表行为表的建议字段。如果还有其他未涵盖的特征字段,可自行追加,字段越丰富完善,推荐效果越好。字段名称无需与表格中的完全一致。

用户表

字段名称

是否必填

字段说明

user_id

必填

用户ID。

age

可选

用户年龄,可进行分段处理。

例如,0~12、12~18、18~24和25~34等,作为数值特征,离散化之后作为类别特征。

gender

可选

用户性别。

例如,男、女或其他,作为类别特征,也可以用0、1或2等整数来表明性别。

occupation

可选

用户的职业信息。

例如,学生、教师和工程师等,作为类别特征。

education

可选

用户的教育背景。

例如,高中、本科和硕士等,作为类别特征。

income

可选

用户的收入水平。

例如,低、中和高,作为类别特征。

user_level

可选

用户在平台上的等级或会员等级。

register_time

可选

用户注册账户的时间,单位是秒。可以转换后按年、月、日分段,作为数值特征,离散化之后作为类别特征。

country

可选

用户所在国家,作为类别特征。

province

可选

用户所在国家的省,作为类别特征。

city

可选

用户所在国家的城市,作为类别特征。

active_time

可选

用户在平台上的活跃时间段。

例如,早晨、下午和晚上等,作为类别特征。

device_type

可选

用户使用的设备类型。

例如,PC、手机和平板等,作为类别特征。

os

可选

用户设备上的操作系统。

例如,iOS、Android和Windows等,作为类别特征。

browser

可选

用户使用的浏览器类型。

例如,Chrome、Firefox和Safari等,作为类别特征。

language

可选

用户偏好的语言。

例如,英语、中文和西班牙语等,作为类别特征。

interests

可选

用户的兴趣点。

例如,运动、音乐和旅行等,作为Tag特征。

物品表

字段名称

是否必填

字段说明

item_id

必填

物品ID,视频内容的唯一标识符。

category

可选

视频内容的一级分类,作为类别特征。

leaf_category

可选

视频内容的叶子类目,作为类别特征。

brand

可选

视频内容的品牌或制作方,作为类别特征。

video_type

可选

视频的类型。

例如,电影、电视剧、纪录片和短片等,作为类别特征。

duration

可选

视频的时长,可以离散化为短于10分钟、10~30分钟、超过30分钟等,作为类别特征。

title

可选

视频的标题。

series_name

可选

视频剧集名称。

例如,《西游记》。

series_total_number

可选

视频剧集总共多少集。

series_number

可选

视频剧集当前是第几集。

例如,1表示第一集。

release_date

可选

视频的发布日期,可以作为数值特征。

单位:秒。

director

可选

视频的导演。

actors

可选

视频的主要演员,半角逗号分隔,多值作为tag特征。

rating

可选

视频的评分。

例如,IMDb评分、豆瓣评分等,作为数值特征。

language

可选

视频的原始语言。

例如,英语、中文和日语等,作为类别特征。

has_subtitle

可选

视频是否提供字幕。

region

可选

视频的制作地区。

例如,好莱坞、宝莱坞和中国内地等,作为类别特征。

tags

可选

视频的标签。

例如,喜剧、动作和爱情等,多值作为tag特征。

行为表

为了获取用户完整的行为数据,建议尽可能上报用户在全站的行为,包括推荐场景(home_feed)、热门场景(hot_items)和搜索场景(search)的曝光/点击等行为。在搜索场景中,需要记录搜索词(query)。

因为用户在非推荐场景中的点击、观看等行为同样能够反映其偏好,是构建完整用户画像的重要数据来源。

字段名称

是否必填

字段说明

request_id

可选

请求ID,每次推荐的唯一标识符。

缺少request_id会影响样本的准确性,同时无法增加实时特征。如果是新建推荐场景,可以暂时不使用request_id,但在搭建好推荐场景后,需要补上request_id,并调整训练样本生成代码,重新准备训练样本以重新训练模型。

user_id

必填

用户ID,用户的唯一标识符。

item_id

必填

物品ID,视频内容的唯一标识符。

event

必填

用户对视频内容的行为。

例如,曝光、点击和点赞等,作为类别特征。

event_value

必填

当event的值为watch(观看),event_value可填写值为观看时长(单位:秒)。

timestamp

必填

用户行为发生的时间,单位是秒。可以按小时、星期几、是否节假日等分段,作为类别特征。

scene

必填

场景。

例如:home_feed表示首页推荐流;hot_items表示热卖栏目(不是推荐场景的行为也需要);search表示搜索场景,搜索场景需要填写本次搜索的query。

query

可选

搜索词。

device_type

可选

用户使用的设备类型。

例如,PC、手机和平板等,作为类别特征。

browser

可选

用户使用的浏览器类型。

例如,Chrome、Firefox和Safari等,作为类别特征。

mobile_brand

可选

用户手机的品牌,作为类别特征。

os

可选

用户设备上的操作系统。

例如,iOS、Android和Windows等,作为类别特征。

ip

可选

用户的IP地址,可以通过IP定位得到所在省、城市特征,作为类别特征。

rating

可选

用户对视频内容评价的平均分数。

例如,满分10分,该视频分数是8.5。

weather

可选

用户所在地的天气情况。

例如,晴、雨和雪等,作为类别特征。

holiday

可选

用户行为发生时是否是节假日。

例如,春节和国庆节等,作为类别特征。

season

可选

当前的季节。

例如,春、夏、秋和冬,作为类别特征。

longitude

可选

用户所在位置的经度,作为数值特征,离散化之后作为类别特征。

latitude

可选

用户所在位置的纬度,作为数值特征,离散化之后作为类别特征。

直播推荐

下表列出了直播推荐场景中用户表物品表行为表的建议字段。如果还有其他未涵盖的特征字段,可自行追加,字段越丰富完善,推荐效果越好。字段名称无需与表格中的完全一致。

用户表

字段名称

是否必填

字段说明

user_id

必填

用户ID。

age

可选

用户年龄,可进行分段处理。

例如,0~12、12~18、18~24和25~34等,作为数值特征,离散化之后作为类别特征。

gender

可选

用户性别。

例如,男、女或其他,作为类别特征,也可以用0、1或2等整数来表明性别。

occupation

可选

用户的职业信息。

例如,学生、教师和工程师等,作为类别特征。

education

可选

用户的教育背景。

例如,高中、本科和硕士等,作为类别特征。

income

可选

用户的收入水平。

例如,低、中和高,作为类别特征。

user_level

可选

用户在平台上的等级或会员等级。

register_time

可选

用户注册账户的时间,单位是秒。可以转换后按年、月、日分段,作为数值特征,离散化之后作为类别特征。

country

可选

用户所在国家,作为类别特征。

province

可选

用户所在国家的省,作为类别特征。

city

可选

用户所在国家的城市,作为类别特征。

active_time

可选

用户在平台上的活跃时间段。

例如,早晨、下午和晚上等,作为类别特征。

device_type

可选

用户使用的设备类型。

例如,PC、手机和平板等,作为类别特征。

os

可选

用户设备上的操作系统。

例如,iOS、Android和Windows等,作为类别特征。

browser

可选

用户使用的浏览器类型。

例如,Chrome、Firefox和Safari等,作为类别特征。

language

可选

用户偏好的语言。

例如,英语、中文和西班牙语等,作为类别特征。

interests

可选

用户的兴趣点。

例如,运动、音乐和旅行等,作为Tag特征。

物品表

字段名称

是否必填

字段说明

anchor_id

必填

物品ID,主播的唯一标识符。

name

可选

主播的姓名。

nickname

可选

主播的昵称,一般会显示在直播页面。

anchor_gender

可选

用户的性别。

例如,男、女或其他,作为类别特征。

language

可选

主播在直播过程中使用的语言。

包含汉语、英语和日语等。

level

可选

关于该主播在平台的等级。

category

可选

主播所属的主要类别。

例如,才艺表演、游戏解说等,作为类别特征。

leaf_category

可选

更加细分的类别标签,作为类别特征。

rating

可选

观众对主播的整体评价分数,可以转化为好评、中评和差评等形式,作为类别特征。

status

可选

表示主播当前的状态,比如是否正在直播。

review_count

可选

关于该主播的所有评论总数。

video_type

可选

直播的具体形式。

例如,现场直播、录制回放等。

duration

可选

单次直播的持续时间长度。

release_date

可选

直播开始的确切日期。

director

可选

如果是预录节目,则记录导演名字;否则通常为空。

actors

可选

参与直播的嘉宾名单。

subtitles

可选

是否提供了字幕服务。

region

可选

主播所在的地区。

tags

可选

与直播主题相关的关键词列表。

follow_count

可选

主播粉丝数量。

行为表

字段名称

是否必填

字段说明

request_id

可选

请求ID,每次推荐的唯一标识符。

缺少request_id会影响样本的准确性,同时无法增加实时特征。如果是新建推荐场景,可以暂时不使用request_id,但在搭建好推荐场景后,需要补上request_id,并调整训练样本生成代码,重新准备训练样本以重新训练模型。

user_id

必填

用户ID,用户的唯一标识符。

item_id

必填

物品ID,视频内容的唯一标识符。

event

必填

用户对视频内容的行为。

例如,曝光、点击和点赞等,作为类别特征。

event_value

必填

当event为打赏时,记录具体金额;当event为点赞时,记录点赞次数。

event_time

可选

精确到秒的行为发生时刻。

ip

可选

用户的IP地址,可以通过IP定位得到所在省、城市特征,作为类别特征。

rating

可选

用户给予主播的星级评价或其他形式的反馈。

scene

可选

区分不同访问入口。

例如,首页推荐和搜索结果页等。

device_type

可选

用户进行互动时所使用的终端设备。

browser

可选

用户访问时使用的浏览器软件。

mobile_brand

可选

用户移动设备的品牌名称。

os

可选

用户设备上的操作系统。

weather

可选

根据IP定位获取的实时天气情况。

holiday

可选

用户行为发生时是否是节假日。

season

可选

当前的季节。

longitude

可选

用户所在位置的经度。

latitude

可选

用户所在位置的纬度。

上一篇: 权限管理 下一篇: 电商推荐场景
阿里云首页 智能推荐 AIRec 相关技术圈