真实面经题目 · 原创解析

电商补贴/优惠券场景中,新增优惠券特征后如何设计模型目标,避免购买倾向与券价值关系失真?

这道题考察优惠券进入购买倾向模型后,如何避免模型把“高券发给低意向用户”的历史策略误学成券越大越不想买。回答要围绕目标定义、券价值归一化、单调约束、选择偏差校正、校准评估和补贴 ROI,而不是罗列电商 CTR/CVR 特征。

出现于:美团 · 算法

60 秒回答模板

我会先把问题拆成预测目标和决策目标。优惠券不是普通特征,因为历史数据里的券面值通常由人群、商品、活动和策略选择决定,高券往往发给低意向或高价格敏感用户,直接训练 CVR 模型可能学到“券越大购买率越低”的伪相关。建模时要把券面值做中心化和归一化,例如相对商品价格、订单门槛、毛利和用户/品类基线处理,并显式区分是否发券、券价值和可用门槛。目标上可以预测不同券值下的潜在购买概率或增量转化,而不是只拟合观察到的购买标签;同时用单调约束、单调网络、分段约束或后处理校准,让其他条件相同时购买倾向随有效券价值非下降。为处理选择偏差,需要随机实验、propensity、IPS/DR、uplift 模型或策略回放来估计增量效果。最终上线不能只看 CVR,还要看净 GMV、毛利、补贴成本、ROI、用户体验、退款和长期留存,用 A/B 实验和分层校准验证券越大是否真的带来可盈利的增量。

考点 伪相关风险
难度 真实面经题
回答目标 讲清原理、实现和边界

深入解析

01

先指出优惠券不是普通特征

优惠券面值看起来像连续数值特征,但它由业务策略分配,不是自然随机出现的变量。历史数据里,高券可能更多给新用户、低活跃用户、高价商品、竞争激烈品类或原本不太会购买的人群;低券或无券可能更多出现在本来就会买的人群。直接把观察数据丢给 CVR 模型,模型学到的可能是发券策略的选择偏差,而不是券本身对购买的影响。

02

明确条件购买倾向和增量效果

如果目标只是预测给定策略下的购买概率,模型会倾向拟合历史分布,无法保证不同券值之间的可比性。更适合补贴决策的目标,是估计用户、商品和上下文固定时,不同券值下的潜在购买概率,或估计发某张券带来的增量转化、增量 GMV 和增量利润。面试里可以说:CVR 预测回答“会不会买”,uplift 目标回答“这张券额外促成了多少购买”,补贴决策更需要后者。

03

对券价值做业务化表示

券面值不能只用绝对金额。应同时考虑商品价格、订单门槛、可用范围、有效期、品类毛利、满减后实付价、折扣率、用户历史价格敏感度和当前活动上下文。常见做法是构造有效券价值、折扣率、到手价变化、补贴占毛利比例,以及相对用户/品类/商品基线的中心化券值。中心化的作用是减少“某类用户总是拿高券”的混淆,让模型更关注在可比上下文中券值变化带来的边际影响。

04

在模型或目标里加入单调约束

题目要求购买倾向和券价值成正比,更严谨地说,是在用户、商品、价格、场景和券可用性相同的条件下,预测购买倾向应随有效券价值非下降。可以用 GBDT 的 monotonic constraint、广义加性模型的单调 spline、Deep lattice、输入凸/单调网络、pairwise ranking loss 或分段校准实现。也可以构造同一用户-商品样本的不同券值 counterfactual pair,约束 p_high >= p_low,并对违反单调性的样本加惩罚。

05

用偏差校正处理发券选择

单调约束能防止模型输出违背业务常识,但不能单独解决选择偏差。更可靠的做法是保留随机实验流量或探索流量,记录每次发券的 propensity,使用 IPS、Doubly Robust、causal forest、T-learner/S-learner/X-learner 或 uplift 模型估计不同券值的增量效果。没有随机化时,要至少按用户、商品、价格、时间、活动、渠道等强混淆因素做倾向评分和分层评估,并承认离线结果存在残余偏差。

06

评估必须落到 ROI 和护栏

离线评估不能只看 AUC、LogLoss 或整体 CVR。需要看券值分桶下的校准曲线、单调违反率、分人群 uplift、增量 GMV、补贴成本、毛利变化和 ROI。线上 A/B 要比较发券策略带来的净收益,而不是只看支付率上涨;同时设置护栏指标,例如退款率、取消率、客诉、履约压力、用户长期留存、券依赖和预算消耗速度。一个合格答案最后要能说明:模型不仅让概率曲线更合理,还能帮助业务少给无效券、多给有增量的券。

易错点

  • 把题目写成通用 CTR/CVR 特征工程,只罗列用户、商品、上下文特征,没有处理券值和购买倾向的关系。
  • 直接假设历史数据里券面值越大购买率越高,忽略高券常被策略性分配给低意向用户。
  • 只加单调约束,不处理 treatment/selection bias,导致模型曲线好看但增量效果仍然不可信。
  • 只用 AUC、LogLoss 或 CVR 评估,不看补贴成本、毛利、ROI、预算消耗和用户体验护栏。

面试官追问

为什么直接把优惠券面值当特征会有问题?

因为券面值不是随机出现的。历史策略可能把高券发给更难转化的人,导致训练数据里高券和低购买率同时出现。模型如果只拟合观察标签,就可能把选择偏差学成券的负效应,预测曲线和业务机制相反。

如何设计券越大购买倾向越高的约束?

先限定条件:同一用户、商品、价格、场景和券可用性下,有效券价值增加时预测购买概率非下降。实现上可以选择支持单调约束的树模型,或在深度模型中使用单调层、非负权重、lattice/spline,也可以构造高低券 pair 加 p_high >= p_low 的约束损失。约束应作用在有效券价值上,而不是所有优惠券字段上。

单调约束和增量模型是什么关系?

单调约束解决的是模型输出形状,避免明显违背业务先验;增量模型解决的是发券选择偏差,估计券带来的真实增量效果。两者可以结合:用实验或 propensity 校正学习增量效果,再对有效券价值的响应曲线加单调和校准约束。

上线后发现 CVR 上升但 ROI 下降,怎么解释?

可能是券发给了本来就会买的人,或大额券带来的新增订单不足以覆盖补贴成本。也可能是低毛利品类、退款、取消或短期薅券行为拉低净收益。应拆分增量转化、客单价、补贴成本、毛利、退款和长期复购,必要时把目标从 CVR 改成增量利润或约束 ROI 的策略优化。