第3章 特征工程与数据处理
特征工程决定模型效果的上限。面试中除了考察基础方法,更看重对业务场景的理解、特征实时性保障、以及避免数据泄漏的实践。本章聚焦三类高频题目:特征构造、特征选择、特征交叉,以及实时特征体系设计。
核心提示:特征工程没有“银弹”,面试官期望你展示业务洞察 + 工程实现 + 防泄漏意识。每个回答先定性(这是什么问题),再定量(怎么做),最后收尾验证。
卡片1:特征构造方法
面试问题:请举例说明在推荐场景中你是如何构造有效特征的?
| 考察点 | 是否理解特征与业务目标的因果链路;是否具备统计/业务驱动的构造思路;能否避免无效特征 |
| 公司侧重点 | 字节/快手:侧重实时交互特征、视频时长、完播率等;美团:侧重LBS、价格敏感度、品类偏好 |
| 面试官画像 | 通常为推荐组技术 leader,3-5年经验,关注落地细节与业务一致性 |
| 回答框架 | 业务定义 → 选择统计/时序/交叉 → 举例说明 → 验证效果 |
| 示例回答 | “在短视频推荐中,我们构造了用户近5分钟滑动速度、内容完播率与‘跳出-重进’比例。通过统计用户行为序列,发现频繁重进同类别视频的用户对深度内容偏好强,离线AUC提升0.8%。” |
| 可能追问 | ①如何选择特征粒度?②特征构造引入的时延怎么解决?③如何判断特征有效性(用信息增益还是SHAP)? |
| 避坑提醒 | ❌ 不要堆砌特征而不说明业务解释性;❌ 避免使用未来信息(如用当天的点击率预测当天行为) |
卡片2:特征选择方法
面试问题:你通常如何从数百个特征中选出最终使用的特征子集?
| 考察点 | 是否掌握 Filter / Wrapper / Embedded 三类方法;能否平衡精度与效率;线上特征存储限制下的取舍 |
| 公司侧重点 | 阿里:强调GBDT特征重要性 + 业务规则;腾讯:关注embedding维度与特征正交性 |
| 面试官画像 | 资深工程师/架构师,重视特征工程的成本和可维护性 |
| 回答框架 | 过滤低方差 → 相关性去重 → 模型重要性筛选 → 线上AB实验回测 |
| 示例回答 | “先用方差过滤删除常数值特征,再用相关系数去掉>0.95的冗余对;然后用LightGBM feature importance保留Top 50;最后在线上分桶实验中验证每类特征的实际贡献,最终保留32维。” |
| 可能追问 | ①为什么不用PCA?②特征重要性在数据漂移时如何更新?③线上特征缺失如何处理? |
| 避坑提醒 | ❌ 切勿只依赖Embedded方法忽视业务认知;❌ 注意多重共线性在LR等线性模型中的灾难 |
卡片3:特征交叉与实时特征
面试问题:推荐系统中如何设计实时特征?特征交叉有哪些实践中有效的手段?
| 考察点 | 实时特征的计算链路(增量/全量);特征交叉方法与过拟合风险;滑动窗口统计的窗口大小选择 |
| 公司侧重点 | 字节(抖音):秒级滑动特征如‘最近10秒点赞数’;拼多多:强依赖类别交叉与价格带特征 |
| 面试官画像 | 实时计算负责人或算法平台组,关注延迟与一致性 |
| 回答框架 | 实时特征:接入消息队列 → 窗口聚合 → Online Feature Store → 模型预测;交叉:显式(笛卡尔积)+ 隐式(FM/DCN) |
| 示例回答 | “实时特征基于Kafka消费用户行为,用Flink 10s tumbling窗口计算点击率、观看时长;特征交叉采用DCN V2的显式交叉与FM隐式结合,离线对比发现高阶交叉能提升长尾视频点击率12%。” |
| 可能追问 | ①实时特征如何保证一致性(Exactly-Once)?②特征交叉维度爆炸怎么解决?③滑动窗口与Session Gap怎么处理? |
| 避坑提醒 | ❌ 实时特征延迟不能超过模型上线周期;❌ 交叉特征过度记忆短期模式,需加正则或稀释 |
面试窍门:回答特征构造/选择/交叉问题时,尽量用一个具体项目串起来,展示从“业务问题→特征设计→效果验证”的完整闭环。
项目案例:短视频App个性化推荐特征体系升级
| 项目名称 | 短视频App实时特征体系与交叉特征优化 |
| 业务背景 | 现有推荐特征滞后30分钟,无法捕捉用户即时兴趣漂移(如突然对宠物视频感兴趣),且交叉特征全靠FM隐式学习,缺乏显式高阶交叉。 |
| 规模指标 | DAU 8000万;实时特征延迟< 3秒;特征维度从200降至150但AUC提升1.2%;线上CTR +0.6%,用户时长 +3.2% |
| 技术栈 | Flink + Kafka + Redis缓存特征;模型用DeepFM + DCN V2;Spark离线特征工程;AB实验平台自研 |
| 核心难点 | ①实时特征计算数据倾斜(头部用户行为量巨大)②显式交叉特征爆炸(用户×视频类目可达亿级)③滑动窗口时间与Session切分不一致 |
| 面试高频追问 | ①数据倾斜如何压平?②交叉特征稀疏性怎么处理?③实时特征如何做冷启动?④如何保证线上特征与离线训练特征一致性? |
| 可迁移回答话术 | “对于数据倾斜,我们采用按用户ID哈希分桶并设置队列水位线,超出部分降级为离线特征。交叉特征通过哈希映射到固定embedding槽位,避免存储无限增长。一致性通过Kafka offset比对+离线重演工具保证。” |
避坑提醒:面试中不要只讲特征方法不讲代价(存储、计算、延迟)。项目案例里必须体现权衡决策,例如“虽然实时特征有收益,但我们在冷启动场景使用了模型蒸馏到离线特征,避免冷启动时实时特征缺失”。