搜广推 / 05
特征工程与样本构造
搜广推项目里,很多收益来自特征和样本,而不是模型结构。面试官经常追问数据,是因为真实业务里最容易出问题的也是数据。
特征分层
常见特征可以分为:
- 用户特征:画像、长期偏好、活跃度、消费能力。
- 物料特征:类目、标签、质量、作者、价格、内容表示。
- 上下文特征:时间、地点、设备、入口、网络。
- 交叉特征:用户 x 类目、用户 x 作者、地域 x 物料。
- 行为序列:点击、购买、停留、收藏、搜索 query。
- 实时特征:当前 session、最近行为、实时热度。
特征不是越多越好,要看是否稳定、可用、低延迟、有增量。
标签定义
标签决定模型学什么。
点击标签简单,但可能鼓励标题党;停留时长能反映消费,但可能偏向长内容;购买标签价值高,但稀疏;负反馈标签重要,但数据少。
标签设计要和业务目标一致。推荐系统常用多目标标签,广告常用 CTR/CVR,风控常用风险标签,物流常用超时或完成概率。
样本窗口
样本构造要明确时间窗口:
- 曝光后多久算点击。
- 点击后多久算转化。
- 用户行为特征统计到哪个时间点。
- 训练集、验证集、测试集如何按时间切分。
时间窗口不清楚,很容易数据泄漏。
负样本
负样本不是随便采。
推荐里,曝光未点击可以是负样本,但用户可能根本没看到。广告里,点击未转化是 CVR 负样本,但转化可能延迟。搜索里,低位未点击不一定不相关。
常见策略:
- 曝光未点击作为基础负样本。
- 加入 hard negative。
- 按位置或曝光权重校正。
- 分场景采样。
- 对采样分布做校准。
特征穿越和泄漏
高频问题:
- 使用了未来统计特征。
- 标签后的行为进入特征。
- 全量数据统计泄漏测试集信息。
- 离线特征线上拿不到。
解决方式:
- 严格按样本时间生成特征。
- 使用时间切分验证。
- 离线线上共用特征定义。
- 做特征可用性检查。
训练线上一致性
线上服务里,特征可能缺失、延迟、版本不一致。训练时非常干净的数据,线上不一定存在。
上线前要做:
- 特征缺失率监控。
- 特征分布对比。
- 模型分数分布监控。
- shadow test。
- 回放验证。
面试题:如何构造 CTR 样本
理想回答:
样本以曝光为单位,曝光后一定时间窗口内点击为正样本,未点击为负样本。特征只能使用曝光时刻之前可获得的信息。训练集按时间切分,避免同一时间段泄漏。还会关注位置偏差、曝光偏差和负采样比例,并在上线后做校准。
面试题:为什么线上效果不如离线
常见原因:
- 样本分布变了。
- 特征线上缺失。
- 训练有泄漏。
- 负采样和线上真实分布不一致。
- 标签和业务目标不一致。
- 模型在关键分桶效果差。
总结
特征和样本决定模型学习的上限。一个成熟的搜广推项目,要能讲清楚样本来源、标签定义、负样本、特征窗口、偏差处理和线上一致性。
下一篇建议继续看: