反事实评估策略:在日志数据中公正评价推荐
反事实评估策略:在日志数据中公正评价推荐
在推荐系统的开发中,我们经常需要从历史日志(log data)中回答这样的问题:“如果当时我给用户推荐了这个新物品,用户会点击吗?” 或者“新的推荐策略比旧的好多少?” 但日志数据天然存在偏差——它只记录了已被展示的推荐结果,而无法观察到未被展示物品的反事实结果。直接使用点击率、转化率等指标对比新旧策略,会严重高估或低估真实效果。反事实评估策略正是为了解决这一难题,让我们能像科学家一样,从有偏的观测数据中推断出公正的策略效果。
为什么传统评估方法不可靠
假设一个推荐系统总是给用户推荐流行商品,历史日志中流行商品的曝光量极大,而小众商品几乎不出现。如果直接统计日志中所有物品的平均点击率作为推荐效果的评价,就会过度依赖流行商品的表现。当我们上线一个新策略(比如更注重个性化)时,它可能推荐了许多小众商品,但因为小众商品在历史数据里几乎没有评价信号,无法准确对比。更危险的是,如果新策略倾向于推荐高点击率物品(即和旧策略行为相似),它可能仅仅因为继承了旧策略的偏好而获得看似较高的指标,这就是选择偏差(selection bias)。
选择偏差的直观示例
- 旧策略:只给喜欢数码产品的用户推荐手机广告。
- 日志数据:手机广告获得了 20% 的点击率,而书籍广告因为从未被推荐,日志中点击率为 0。
- 新策略:打算推荐图书给部分用户。如果我们直接用日志中的点击率来模拟新策略效果,图书的点击率会被视为 0,严重低估了新策略在目标人群中的真实吸引力。
因此,我们需要一种方法,能够从由旧策略产生的数据中,无偏地估计出新策略的真实表现。
核心思想:因果推断中的反事实框架
反事实评估借用了因果推断中的“潜在结果框架”。将每个用户-物品对看作一个实验单元:
- 事实结果:在旧策略下,物品被展示后用户的反馈(点击或不点击)。
- 反事实结果:同一用户在同一时刻,如果展示另一个物品会产生的反馈。这通常无法被直接观测。
为了从观测数据中估计新策略的整体收益,我们需要假设旧策略的推荐机制是可忽略的,即是否推荐一个物品只依赖于我们能够观测到的特征(例如用户画像、物品属性、上下文),且旧策略必须有一定的随机性,保证每个物品都有非零概率被推荐(正概率原则)。在此假设下,我们可以用**逆概率加权(Inverse Propensity Scoring, IPS)**等方法纠正选择偏差。
逆概率加权 (IPS) 评估量
IPS 的核心思想是为每条日志记录赋予一个权重,该权重等于被评估的新策略选择该物品的概率除以旧策略选择该物品的概率。权重修正了因旧策略偏好而导致的过采样或欠采样问题。
设日志数据中有一系列曝光记录 $i = 1,...,n$,对于每条记录,我们知道:
- $x_i$:上下文特征(用户、时间等)
- $a_i$:被推荐给用户的物品
- $r_i$:用户的实际反馈(例如点击:1,未点击:0)
- $p_{old}(a_i | x_i)$:旧策略在上下文 $x_i$ 下推荐物品 $a_i$ 的概率(倾向性得分)
现在我们想评估一个新策略 $\pi_{new}$,它定义了一个物品在给定上下文下被选中的概率 $\pi_{new}(a | x)$。那么,新策略的期望奖励(如点击率)的 IPS 估计为:
$$V_{IPS}(\pi_{new}) = \frac{1}{n} \sum_{i=1}^{n} r_i \cdot \frac{\pi_{new}(a_i | x_i)}{p_{old}(a_i | x_i)}$$
权重的作用:如果新策略比旧策略更倾向推荐某物品,那么权重就会大于 1,增加该物品对应反馈的贡献;反之,如果旧策略过度推荐了某些物品,新策略不推荐,则权重会变小,削弱它们的影响。
为什么这是无偏的:可以证明,当倾向性得分已知且满足正概率条件时,$V_{IPS}$ 是真实期望奖励的无偏估计。直觉上,权重通过“逆”着旧策略的概率,重新平衡了样本分布,使其看起来像是由新策略产生的随机试验数据。
实例演算
假设有三条日志记录:
- 用户 A,旧策略展示物品 X 的概率为 0.2,反馈为 1(点击),新策略展示 X 的概率为 0.6。
- 用户 B,旧策略展示物品 Y 的概率为 0.5,反馈为 0,新策略展示 Y 的概率为 0.3。
- 用户 C,旧策略展示物品 Z 的概率为 0.3,反馈为 1,新策略展示 Z 的概率为 0.1。
计算 IPS 估计:
- 记录1权重:0.6 / 0.2 = 3,贡献 1 × 3 = 3
- 记录2权重:0.3 / 0.5 = 0.6,贡献 0 × 0.6 = 0
- 记录3权重:0.1 / 0.3 ≈ 0.333,贡献 1 × 0.333 = 0.333
总估计值 = (3 + 0 + 0.333) / 3 = 1.111。而原始数据的简单平均点击率是 (1+0+1)/3 = 0.667。由于新策略大幅增加了对物品 X 的推荐(权重高,且有正反馈),评估值高于原始平均,反映了新策略更善于挑选有潜在正向反馈的物品。
减小方差:双重稳健估计(Doubly Robust, DR)
IPS 虽然无偏,但方差可能极大,尤其是某些记录的倾向性得分 $p_{old}$ 很小时,权重会爆炸,导致估计值不稳定。双重稳健估计结合了 IPS 与一个直接法奖励模型(Direct Method, DM),在保持无偏性的同时显著降低方差。
DR 估计量形式为:
$$V_{DR}(\pi_{new}) = \frac{1}{n} \sum_{i=1}^{n} \left[ \hat{\rho}(x_i, a_i) + \frac{r_i - \hat{\rho}(x_i, a_i)}{p_{old}(a_i | x_i)} \cdot \pi_{new}(a_i | x_i) \right]$$
其中 $\hat{\rho}(x, a)$ 是一个预测模型,用来估计在上下文 $x$ 下推荐物品 $a$ 的期望反馈(例如用机器学习模型预训练的点击率模型)。直观上看:
- 第一部分 $\hat{\rho}(x_i, a_i)$ 提供了一个基准预测。
- 第二部分是对残差 $r_i - \hat{\rho}(x_i, a_i)$ 进行逆概率加权校正。如果预测模型完美,残差为零,那么整个估计完全由预测模型决定,方差极小;如果模型有偏,IPS 部分会修正其偏差。
双重稳健具有双重保险:只要倾向性得分模型准确或者奖励预测模型准确两者之一成立,估计就是一致的(渐进无偏)。这在实践中非常重要,因为我们很难同时完美建模这两个量。
如何选择奖励模型
奖励模型 $\hat{\rho}$ 可以用任何监督学习方法从日志数据中训练,例如梯度提升树、神经网络等。训练时,我们把展示过的物品及其反馈作为训练集,特征包括用户特征、物品特征、交互上下文等。需注意,训练数据本身也是有选择偏差的,但双重稳健的设计使其对模型误差有较好的容忍度。
倾向性得分的获取与校准
IPS 和 DR 都依赖于倾向性得分 $p_{old}(a|x)$。如何得到它?
- 如果旧策略是确定的规则系统:例如基于分数的 Top-K 推荐,我们可以记录每次展示时整体候选物品的分数分布,并通过 softmax 或者其他方式人为注入随机性以便估计概率。在离线评估中,可以假设旧策略是一个以某种形式随机化的策略。
- 如果旧策略本身包含随机探索:例如使用了 epsilon-greedy 或 Thompson Sampling 的 Bandit 算法,倾向性得分可以直接从算法日志中取得。
- 从数据中估计倾向性模型:若无法获得确切的概率,可训练一个多分类模型(如 softmax 回归)来预测 $P(a|x)$,利用所有可观测的特征。但要注意模型误设会引入偏差,此时双重稳健估计比纯 IPS 更安全。
倾向性得分的质量至关重要。常用诊断方法是检查是否存在极小值。如果某些 $p_{old}$ 过低,权重过大,可以考虑剪裁(clipping):设定一个阈值,如将小于 0.01 的倾向性得分替换为 0.01,这会在估计中引入少量偏差,但能大幅降低方差。一种常用变体是自归一化 IPS(SNIPS),它对权重求和做归一化,能减小方差且保持一定一致性:
$$V_{SNIPS} = \frac{\sum_i r_i w_i}{\sum_i w_i}, \quad w_i = \frac{\pi_{new}(a_i | x_i)}{p_{old}(a_i | x_i)}$$
实践中的完整流程
- 收集日志数据:每条记录包含用户特征、推荐物品、上下文、反馈及旧策略对该物品的倾向性得分。
- 数据预处理与倾向性校验:检查倾向性分布,确保物品有非零概率;对极低倾向性进行裁剪或采用 SNIPS。
- 定义新策略:可以是当前线上策略,也可以是需要评估的离线策略。对于每个上下文,新策略输出对所有候选物品的推荐概率。
- 训练奖励预测模型(若使用 DR):利用日志数据训练 $\hat{\rho}(x,a)$,可采用交叉验证防止过拟合。
- 计算评估指标:分别计算朴素平均(有偏)、IPS 估计、DR 估计及 SNIPS 估计。
- 置信区间:使用 bootstrap 方法对样本进行重采样,计算评估指标的置信区间。注意:重采样须考虑到策略的依存结构,一般采用用户级别的块状 bootstrap。
- 策略对比:设定基线策略,用上述估计值之差来评估提升幅度。可结合假设检验判断显著性。
常见陷阱与注意事项
- 未观测的混淆因子:如果旧策略依赖某些未记录的特征来决定推荐,且这些特征同时影响反馈,那么可忽略性假设被破坏,上述所有方法均失效。务必确保推荐机制完全由已记录的特征决定。
- 策略评估 vs. 策略优化:反事实评估只能用于评估给定的新策略,不能直接用梯度进行策略优化,除非使用专门的离线策略梯度方法(如 Counterfactual Risk Minimization)。评估时新策略应是固定的。
- 覆盖度假设:新策略推荐的物品集合必须是旧策略可能推荐的物品集合的子集(或至少其概率非零)。如果新策略推荐了旧策略从未考虑过的全新物品,IPS 无法处理。
- 延迟反馈与稀疏奖励:在处理点击、转化等稀疏行为时,方差问题更突出,双重稳健和剪裁更为关键。
总结
反事实评估策略为推荐系统在离线环境下提供了科学、公正的评测手段。通过逆概率加权和双重稳健估计,我们可以从有偏的历史日志中推断出新策略的真实潜力,避免盲目上线带来的风险。掌握 IPS 和 DR 技术,意味着你的团队能够以因果视角审视 A/B 测试前的离线实验,实现更可靠、更高效的策略迭代。
在开始实际应用时,建议:
- 从日志明确的随机流量入手,获取精确倾向性得分。
- 先使用 IPS 建立基线,再逐步引入 DR 降低方差。
- 始终使用 bootstrap 量化不确定性。
- 时刻警惕未记录特征对因果假设的破坏。
只有在正确的反事实框架下进行离线评估,才能确保我们宣称的“策略提升”真实可信,而非数据偏见制造的幻象。