2. 特征工程基础
在机器学习与推荐、风控、搜索等系统中,模型效果的上限往往由数据决定,而特征正是数据与模型之间的“翻译层”。本节从最基础的概念出发,建立特征、特征工程与特征存储三者的统一认知,为后续批流特征计算与 Feature Store 集成打下共同语言。
一、核心概念:特征、特征工程、特征存储
特征(Feature)是描述样本某一维度属性的数值化或结构化表达,是模型可直接消费的输入变量。例如用户年龄、近7天点击次数、商品价格、设备型号的独热编码等。一个样本通常由多个特征组成特征向量,标签则是模型要预测的目标。
特征工程(Feature Engineering)是把原始数据转化为有效特征的过程,包括清洗、变换、聚合、编码、衍生、选择等步骤。它的目标不是“造更多列”,而是让特征与业务目标、模型假设对齐,提升信号密度、降低噪声与冗余。
特征存储(Feature Store)是面向机器学习特征生命周期的集中化平台,统一管理特征定义、计算、存储、版本、权限与服务。它同时提供离线批量读取与在线低延迟查询能力,解决训练与推理特征不一致、重复开发、口径混乱等工程问题。
一句话理解三者关系:特征是“原料”,特征工程是“加工工艺”,特征存储是“标准化仓库与配送体系”。
二、常见术语与关键区分
- 实体(Entity):特征归属的主体,如用户、商品、门店、设备,通常由主键标识。
- 特征视图(Feature View):一组逻辑相关的特征集合,如“用户近30天行为统计”。
- 特征组(Feature Group):按来源或主题组织的特征集合,便于权限与血缘管理。
- 离线特征 / 在线特征:离线用于训练与批量打分,在线用于实时推理,要求低延迟、高可用。
- 时间点正确性(Point-in-Time Correctness):构造训练集时只能使用标签时间点之前已知的特征,避免数据穿越。
- 特征漂移(Feature Drift):特征分布随时间变化,导致模型效果衰减。
- 训练-服务偏差(Training-Serving Skew):离线与在线计算逻辑不一致,是线上事故的常见根因。
三、方法流程:从原始数据到可用特征
典型特征工程流程可归纳为六步:需求对齐、数据探查、特征设计、计算实现、验证评估、上线监控。每一步都需要与业务、算法、工程三方协同。
- 需求对齐:明确预测目标、标签定义、评估指标与时效要求。
- 数据探查:统计缺失率、分布、异常值、时间覆盖与主键唯一性。
- 特征设计:结合业务知识与模型类型,设计统计类、序列类、交叉类、嵌入类特征。
- 计算实现:批处理用 Spark/Flink SQL,流处理用 Flink/Spark Structured Streaming,在线用 Redis/Feature Store SDK。
- 验证评估:检查覆盖率、稳定性、与标签相关性、离线 AUC 增益。
- 上线监控:监控特征延迟、缺失率、分布漂移与线上效果。
-- 示例:用户近7天点击次数特征(离线批计算)
SELECT
user_id,
COUNT(*) AS click_cnt_7d,
COUNT(DISTINCT item_id) AS click_item_cnt_7d,
MAX(event_time) AS last_click_time
FROM dwd_user_behavior
WHERE event_time >= date_sub(current_date, 7)
AND event_type = 'click'
GROUP BY user_id;
四、典型应用场景与业务价值
特征工程与特征存储的价值在不同业务中表现各异,但核心都指向“更快、更准、更稳”。
| 场景 | 典型特征 | 业务价值 |
|---|---|---|
| 推荐系统 | 用户兴趣标签、物品热度、实时点击序列 | 提升点击率与转化率,增强个性化体验 |
| 金融风控 | 近30天逾期次数、设备指纹、交易频次 | 降低欺诈损失,提高审批通过率与合规性 |
| 搜索排序 | 查询-文档相关性、历史点击率、时效性 | 提升搜索满意度与商业变现效率 |
| 智能营销 | 用户生命周期阶段、优惠敏感度、活跃度 | 提高触达精准度,降低营销成本 |
五、误区与复盘
常见误区一:把特征工程等同于“堆特征”。特征越多,噪声、过拟合与维护成本越高,应重视特征选择与可解释性。
常见误区二:离线效果好就上线。必须验证在线特征延迟、缺失率与训练-服务一致性,否则线上效果可能大幅下降。
复盘时建议围绕三个问题:特征是否真正服务于业务目标?离线与在线口径是否一致?特征生命周期是否有监控与下线机制?只有把特征当作“产品”来运营,Feature Store 才能发挥长期价值。