PAI-Rec 特征工程全解析:统计特征、实时特征、序列特征与 FG 特征算子

简介: PAI-Rec是阿里云智能推荐的特征工程解决方案,支持离线统计、实时及序列特征自动衍生,并通过Feature Generator(17种内置算子)保障离线/在线特征一致性,大幅降低开发与维护成本。

一、概述

在推荐系统中,特征工程是连接原始数据与模型效果的关键桥梁。PAI-Rec(阿里云推荐开发平台)提供了一套完整的特征配置体系,开发者只需通过界面配置或 JSON 声明,即可自动生成 MaxCompute 和 Flink 的 SQL 代码,产出覆盖用户侧和物品侧的多种特征。

PAI-Rec 的特征配置体系可分为两大层次:

  • 离线特征生产:通过"推荐方案定制"中的特征配置,自动衍生统计特征、实时特征、序列特征等,写入特征表供模型训练和在线服务使用。
  • 在线特征变换(FG):Feature Generator 是一套保证离线/在线特征一致性的特征变换框架,通过 17 种内置算子完成从原始输入到模型输入的转换。

下面分别详细介绍。


二、数据表配置——特征的基础

在配置特征之前,需要先完成三张基础表的配置:

2.1 行为日志表

行为日志表是统计特征和实时特征的核心数据源,需要配置:

配置项 说明 示例
行为事件 行为类型字段 event
行为事件枚举值 行为类型取值 曝光(expr)、点击(click)、点赞(praise)
行为时间戳 日志时间,精确到秒 timestamp
行为场景 日志发生的场景 首页、搜索页、详情页
行为的值 行为深度(如成交价格、观看时长) price

此外,行为表中还可以配置用户侧字段(用户ID、类别特征、数值特征、Tag特征、KV特征等)和物品侧字段(物品ID、类别特征等)。

2.2 用户表

用户表配置用户的基础画像,支持以下字段类型:

  • 类别特征:如性别、年龄段、城市
  • 数值特征:如作品数、积分
  • Tag 特征:多值类别字段(如兴趣爱好),用分隔符分割
  • KV 特征:带权重的多值类目特征
  • Embedding 特征:用户侧 embedding 向量
  • IP 字段:下游自动解析为省份、城市等信息

2.3 物品表

物品表配置物品的基础属性,支持与用户表类似的字段类型:类别特征、数值特征、Tag特征、Text特征、KV特征、Embedding特征等。

重要提示:字段类型的选择直接影响下游特征的衍生方式。例如 Tag 特征会触发分词统计,KV 特征会分别统计 key 和 value。


三、统计特征配置

统计特征是推荐系统中最核心的特征类别,PAI-Rec 支持自动衍生多种统计特征。

3.1 常用周期与行为类型

首先需要配置两个基本维度:

  • 统计周期:如短期(3天)、中期(7天)、长期(30天),不宜过多。
  • 重点关注行为:如曝光(expr)、点击(click)、点赞(praise),一般不超过5个,且需要按行为发生先后排序(影响转化率特征的生成)。

3.2 基础衍生特征

PAI-Rec 根据上游表配置自动衍生基础属性特征,还支持手动添加:

衍生类型 适用范围 说明
IP 衍生 用户侧 解析 IP 为省份、城市、国家
距今时间测算 用户/物品侧 根据注册时间计算距今天数
已有特征分段加工 数值字段 按分割点离散化为类目特征
特征组合 用户/物品侧 多个类目字段的笛卡尔积组合
当日时段加工 行为表 衍生行为发生在当天第几个小时
工作日时段加工 行为表 衍生行为发生在每周第几天

3.3 行为偏好统计(核心统计特征)

PAI-Rec 以用户 ID 和物品 ID 为聚合主键,自动衍生 6 大类统计特征:

① 行为统计计数

统计用户在各周期内各行为的发生次数。

示例:统计用户在 3/7/15 天内的 expr、click、praise 次数 → 产出 3×3=9 个特征

② 转化率统计

统计行为之间的转化率。

示例:click/expr(点击率)、praise/click(转化率)→ 产出 周期数 × 公式数 个特征

③ Top 偏好属性类特征的行为计数

统计用户在各类目/Tag 维度下,各行为的发生次数,生成 KV 特征。

示例:用户在"12点"的点击发生27次 → 特征值 "12:27.0,8:26.0,1:1.0"

产出 = 周期数 × 行为数 × 属性特征数

④ Top 偏好属性类特征的行为占比

统计用户在各类目/Tag 维度下的行为比率(如各类目的 CTR)。

示例:用户在"类目12"的点击率 0.27 → 特征值 "12:0.27,8:0.26"

产出 = 周期数 × 转化率公式数 × 属性特征数

⑤ 偏好数值类特征

统计用户在各行为下,对数值属性的总和/最大值/最小值/均值。

产出 = 周期数 × 行为数 × 数值特征数

⑥ Top 类目与数值组合特征

统计用户在各类目维度下,对某数值属性的偏好统计。

产出 = 周期数 × 行为数 × 组合特征的类目特征数

3.4 聚合特征

聚合特征支持用户侧和物品侧,以类目字段作为聚合条件,可配置多组。统计类型与行为偏好统计一致。

示例:统计在不同性别下"点击、点赞、曝光"的总次数。以"口红"为例,可以发现女性点击明显更多。


四、实时特征配置

实时特征的统计逻辑与离线统计特征类似,但有两个关键差异:

  • 统计周期单位是秒(而非天),适用于实时流计算(Flink SQL)。
  • 防穿越时间:目标行为最近 N 秒内的行为不进入统计,用于弥补行为日志从客户端到消息中间件再到在线存储的时间差。

实时特征支持以下 4 种统计类型:

统计类型 说明
行为统计计数 实时窗口内的行为发生次数
转化率统计 实时窗口内的行为转化率
Top 偏好属性类特征的行为计数 实时窗口内按类目维度统计行为次数(KV 特征)
Top 偏好属性类特征的行为占比 实时窗口内按类目维度统计行为比率(KV 特征)

以用户 ID 和物品 ID 为主键均可创建实时特征。


五、序列特征配置

序列特征仅发生在用户侧,用于捕捉用户的行为序列信息,是 DIN/DIEN 等序列模型的关键输入。

5.1 核心配置项

配置项 说明
行为周期 统计最近多少天内的行为(多组序列取最大周期)
统计行为 要纳入序列的行为类型
场景 只统计该场景下的行为(可不选)
去重 ID 按该子特征去重,保留最后一次行为
子特征 序列中的属性(通常是物品侧的类目、多值类目、数值特征)
阶段数量 序列最大保留的长度
防穿越时间 最近 N 秒的行为不算入序列
序列特征分隔符 序列之间的分隔符
子特征分隔符 一个序列内子特征之间的分隔符

5.2 设计思路

PAI-Rec 的序列特征初始阶段使用离线数据模拟实时序列,可以加速上线。其中模拟事件通常是曝光事件,防穿越时间用于避免因日志回流延迟导致的数据穿越。


六、Feature Generator(FG)特征变换算子

FG(Feature Generator)是 PAI-Rec 中保证离线/在线特征一致性的核心模块。它将原始输入通过一系列算子变换为模型所需的特征格式,所有算子构成一个有向无环图(DAG),按拓扑顺序并行执行。

6.1 FG 配置总览

FG 通过 JSON 配置文件声明,核心结构如下:

json

{
  "features": [ /* 特征算子列表 */ ],
  "reserves": ["request_id", "user_id", "is_click"],
  "input_alias": { "alias_field": "real_field" }
}
  • features:定义特征变换算子
  • reserves:透传字段,原样输出不做变换
  • input_alias:输入字段别名映射

6.2 输入域

每个特征算子通过 expression 字段声明数据来源,支持 4 种输入域:

输入域 说明 示例
user: 用户侧特征 user:gender
item: 物品侧特征 item:category
context: 上下文特征 context:time
feature: 另一个算子的输出 feature:norm_title

其中 feature: 域用于构建算子间的依赖关系,形成 DAG。

6.3 17 种内置特征算子详解

① id_feature —— 离散特征

将离散值转为模型可用的 ID 特征,支持单值和多值。

json

{
  "feature_type": "id_feature",
  "feature_name": "item_category",
  "expression": "item:category",
  "need_prefix": true,
  "hash_bucket_size": 10000
}

关键参数:need_prefix(是否拼接特征名前缀)、weighted(是否为 key:value 带权重格式)、value_dimension(多值截断维度)。支持分箱操作。

② raw_feature —— 连续值特征

直接引用数值型原始字段,支持归一化。

json

{
  "feature_type": "raw_feature",
  "feature_name": "item_price",
  "expression": "item:price",
  "normalizer": "method=log10"
}

支持 4 种 Normalizer:

  • minmax:x = (x - min) / (max - min)
  • zscore:x = (x - mean) / std
  • log10:x = log10(x)
  • expression:自定义表达式,如 expr=sign(x)

③ expr_feature —— 表达式特征

对多个字段进行数学表达式计算,支持广播机制和向量运算。

json

{
  "feature_type": "expr_feature",
  "feature_name": "ctr_sigmoid",
  "expression": "sigmoid(pv/(1+click))",
  "variables": ["item:pv", "item:click"]
}

内置丰富函数库:

  • 数学函数:sin, cos, log10, sigmoid, sqrt, abs, round 等
  • 地理函数:sphere_dist, haversine(GPS 距离计算)
  • 向量函数:dot, euclid_dist, l2_norm, reduce_sum, reduce_mean 等
  • 支持临时变量和逗号表达式

④ combo_feature —— 组合特征

多个字段的笛卡尔积交叉,常用于 user-item 交叉特征。

json

{
  "feature_type": "combo_feature",
  "expression": ["user:age_class", "item:category"],
  "hash_bucket_size": 200
}

⑤ lookup_feature —— 查找特征

从 KV 结构中匹配目标值,常用于偏好统计特征的在线查询。

json

{
  "feature_type": "lookup_feature",
  "feature_name": "usr_cate_clk_1d",
  "map": "user:usr_cate_clk_cnt_1d",
  "key": "item:category",
  "normalizer": "method=log10",
  "combiner": "max"
}

典型场景:用户在各类目下的点击次数(KV 特征),在线推理时通过当前 item 的类目去查找用户对该类目的偏好值。

⑥ overlap_feature —— 重叠/匹配特征

计算两个字段之间的重叠/匹配关系,常用于搜索场景的 query-title 匹配。

json

{
  "feature_type": "overlap_feature",
  "method": "query_common_ratio",
  "query": "user:query_terms",
  "title": "item:title_terms",
  "default_value": "0"
}

支持的匹配方法:

  • is_contain:是否包含
  • query_common_ratio:query 端的匹配比率
  • title_common_ratio:title 端的匹配比率
  • proximity_min_cover:最小覆盖距离

⑦ text_normalizer —— 文本归一化

对文本字段进行预处理(如大小写转换、空格处理等)。

json

{
  "feature_type": "text_normalizer",
  "feature_name": "norm_title",
  "expression": "item:title",
  "max_length": 512
}

⑧ tokenize_feature —— 分词特征

对文本进行分词,输出词 ID 序列。

json

{
  "feature_type": "tokenize_feature",
  "feature_name": "title_terms",
  "expression": "feature:norm_title",
  "vocab_file": "tokenizer.json",
  "output_type": "word_id",
  "output_delim": ","
}

⑨ sequence_feature —— 序列特征

在 FG 层定义序列特征的变换逻辑。

json

{
  "sequence_name": "click_seq",
  "sequence_length": 50,
  "sequence_delim": ";",
  "sequence_pk": "user:click_item",
  "features": [
    {
      "feature_name": "click_cate_seq",
      "feature_type": "id_feature",
      "expression": "user:click_cate_seq",
      "hash_bucket_size": 10000
    }
  ]
}

⑩ 其他算子

算子 用途
geohash_feature 经纬度转 GeoHash 编码
binary_feature 二值特征(0/1)
match_feature 从 KV 对中匹配特征
pretrained_feature 预训练模型生成的 embedding 特征

6.4 特征分箱(离散化)

FG 支持 6 种分箱方式,适用于 id_feature 和 raw_feature:

分箱方式 说明
hash_bucket_size 对特征值 hash 取模
vocab_list 按词汇表映射为索引
vocab_dict 按字典映射(支持多对一)
vocab_file 从外部文件加载词汇表
boundaries 按分箱边界离散化
num_buckets 直接使用特征值作为桶号



七、特征配置全景图

下面用一张图总结 PAI-Rec 的特征体系:


image.png




八、最佳实践建议

  1. 控制特征数量:统计周期建议 3 个以内(短/中/长),行为类型 5 个以内,避免特征爆炸。
  2. 行为顺序很重要:行为枚举值需按发生先后排序(曝光→点击→转化),否则影响转化率特征的正确生成。
  3. 合理设置防穿越时间:序列特征和实时特征都需要设置防穿越时间,避免训练时数据穿越。
  4. 善用 lookup_feature:离线产出的 KV 偏好统计特征,在线通过 lookup_feature 按 item 属性查找,是连接离线统计与在线推理的桥梁。
  5. FG 保证一致性:所有需要同时在离线和在线执行的特征变换,都应通过 FG 算子定义,避免离线/在线不一致。
  6. 利用 DAG 依赖:通过 feature: 输入域串联多个算子(如 text_normalizer → tokenize_feature → overlap_feature),构建复杂的特征处理流水线。

以上就是 PAI-Rec 特征配置体系的全面介绍。通过数据表配置 → 统计/实时/序列特征自动衍生 → FG 算子在线变换这一完整链路,开发者可以高效地构建推荐系统所需的特征工程,大幅降低特征开发和维护成本。

相关文章
|
14天前
|
机器学习/深度学习 分布式计算 搜索推荐
PAI-Rec 召回引擎:构建高性能推荐系统的核心引擎
PAI-Rec是阿里云智能推荐平台的核心召回引擎,经阿里大规模场景验证。支持多路召回融合(U2I/I2I/向量/随机)、召回即过滤、毫秒级实时更新与分布式弹性架构,开箱即用,助力企业构建毫秒级、高精度、强实时的推荐系统。
139 9
|
14天前
|
机器学习/深度学习 搜索推荐 数据处理
PAI-Rec推荐开发平台:企业级智能推荐解决方案,驱动业务全域增长
PAI-Rec是阿里云一站式推荐系统平台,集成多路召回、多目标精排(如DBMTL)、GPU加速推理与灵活迭代能力,已助力电商、直播、音视频等多行业提升点击率、转化率与ROI,实现高效、低成本、可自主演进的智能推荐。
156 16
|
21天前
|
存储 安全 Java
你还在手动传包、靠“共享盘”发版本?Artifact Registry 才是依赖管理的终局答案!
你还在手动传包、靠“共享盘”发版本?Artifact Registry 才是依赖管理的终局答案!
283 16
|
14天前
|
弹性计算 JavaScript 固态存储
2026年阿里云ECS新手入门指南:从零开始部署你的第一个应用
本文是作者基于两年阿里云ECS真实使用经验撰写的实战指南,涵盖选型建议、新手部署(含Node.js示例)、成本优化技巧,并附新用户专属优惠链接。内容客观实用,助力开发者低成本高效上云。(239字)
283 15
|
13天前
|
分布式计算 MaxCompute iOS开发
TorchEasyRec 在 macOS 上的功能限制总结
本文总结tzrec在macOS上的功能限制:核心依赖(如torchrec、fbgemm-gpu、graphlearn等)无法安装;分布式训练、原生数据管线、Embedding模块、Triton/CUDA算子、TDM树模型等功能完全不可用;优化器与模型导出部分失效;单元测试大多因强依赖而失败。
108 15
|
14天前
|
人工智能 弹性计算 自然语言处理
阿里云企业上云重磅福利来袭!5 亿算力补贴 + 10 万出海扶持全攻略
阿里云推出“企业上云第一站”活动:新迁云企业享最高5亿算力补贴,出海企业可申领10万元专项扶持金;另含199元/年云服务器、1元首年域名、AI Tokens、云数据库低至88元/年等多重优惠,覆盖建站、协同办公、AI创新等全链路,助力企业降本增效、加速数字化与出海升级。
163 11
|
9天前
|
人工智能 机器人 API
阿里云服务器玩转OpenClaw教程|免费领6月云服务器+配置+飞书接入+让龙虾成为公众号自动化智能分身指南
很多AI爱好者因为缺少稳定服务器,无法长期运行OpenClaw智能体。本文带来一套**零成本阿里云服务器部署方案**,手把手教你搭建OpenClaw环境,并将其改造成可以24小时运行的**公众号智能分身**,实现热点聚合、内容拆解、选题生成、公众号自动发布等全流程自动化能力。
252 24
|
22天前
|
消息中间件 弹性计算 监控
在阿里云上搭建低延迟行情监控系统(WebSocket实战)
本文详解如何在阿里云ECS(Ubuntu 22.04)上用Python构建生产级WebSocket行情客户端:支持自动重连、心跳保活、多市场(股票/加密货币)实时订阅,并通过消息队列解耦处理,显著提升稳定性与低延迟。
下一篇
开通oss服务