搜广推 / 05

特征工程与样本构造

搜广推项目里,很多收益来自特征和样本,而不是模型结构。面试官经常追问数据,是因为真实业务里最容易出问题的也是数据。

特征分层

常见特征可以分为:

  • 用户特征:画像、长期偏好、活跃度、消费能力。
  • 物料特征:类目、标签、质量、作者、价格、内容表示。
  • 上下文特征:时间、地点、设备、入口、网络。
  • 交叉特征:用户 x 类目、用户 x 作者、地域 x 物料。
  • 行为序列:点击、购买、停留、收藏、搜索 query。
  • 实时特征:当前 session、最近行为、实时热度。

特征不是越多越好,要看是否稳定、可用、低延迟、有增量。

标签定义

标签决定模型学什么。

点击标签简单,但可能鼓励标题党;停留时长能反映消费,但可能偏向长内容;购买标签价值高,但稀疏;负反馈标签重要,但数据少。

标签设计要和业务目标一致。推荐系统常用多目标标签,广告常用 CTR/CVR,风控常用风险标签,物流常用超时或完成概率。

样本窗口

样本构造要明确时间窗口:

  • 曝光后多久算点击。
  • 点击后多久算转化。
  • 用户行为特征统计到哪个时间点。
  • 训练集、验证集、测试集如何按时间切分。

时间窗口不清楚,很容易数据泄漏。

负样本

负样本不是随便采。

推荐里,曝光未点击可以是负样本,但用户可能根本没看到。广告里,点击未转化是 CVR 负样本,但转化可能延迟。搜索里,低位未点击不一定不相关。

常见策略:

  • 曝光未点击作为基础负样本。
  • 加入 hard negative。
  • 按位置或曝光权重校正。
  • 分场景采样。
  • 对采样分布做校准。

特征穿越和泄漏

高频问题:

  • 使用了未来统计特征。
  • 标签后的行为进入特征。
  • 全量数据统计泄漏测试集信息。
  • 离线特征线上拿不到。

解决方式:

  • 严格按样本时间生成特征。
  • 使用时间切分验证。
  • 离线线上共用特征定义。
  • 做特征可用性检查。

训练线上一致性

线上服务里,特征可能缺失、延迟、版本不一致。训练时非常干净的数据,线上不一定存在。

上线前要做:

  • 特征缺失率监控。
  • 特征分布对比。
  • 模型分数分布监控。
  • shadow test。
  • 回放验证。

面试题:如何构造 CTR 样本

理想回答:

样本以曝光为单位,曝光后一定时间窗口内点击为正样本,未点击为负样本。特征只能使用曝光时刻之前可获得的信息。训练集按时间切分,避免同一时间段泄漏。还会关注位置偏差、曝光偏差和负采样比例,并在上线后做校准。

面试题:为什么线上效果不如离线

常见原因:

  • 样本分布变了。
  • 特征线上缺失。
  • 训练有泄漏。
  • 负采样和线上真实分布不一致。
  • 标签和业务目标不一致。
  • 模型在关键分桶效果差。

总结

特征和样本决定模型学习的上限。一个成熟的搜广推项目,要能讲清楚样本来源、标签定义、负样本、特征窗口、偏差处理和线上一致性。

下一篇建议继续看: