
推荐系统(十三)—— 公平性、去偏与可解释性
可信推荐的实战深读:七类偏差(流行度/位置/选择/曝光/从众/人口/确认)的来源与度量;因果推断(RCT、IPS、双重稳健)如何把有偏日志变成无偏信号;MACR、DICE、FairCo 等业界主流去偏方案;LIME、SHAP、反事实解释的工程取舍。
用户打开 Spotify,反复听到的仍是那五十首歌;打开 Amazon,首页推荐的商品总离不开此前浏览过的;打开 YouTube,每条推荐都把人引向一个自己都不记得点进过的“兔子洞”。这些问题各有其名、成因与解法——本文将一一道来。

你将学到什么#
- 七种偏差如何系统性扭曲用户看到的内容:每种偏差的来源、测量方法及其影响
- 推荐系统的因果推断:为什么日志数据中的相关性会误导,以及 IPS、双重稳健估计和倾向评分如何提供无偏信号
- 生产级去偏方法:用 MACR 解决热度偏差,DICE 处理从众偏差,FairCo 实现摊销曝光公平
- 反事实公平性与对抗训练:确保嵌入中不包含受保护属性
- 经得起审计的可解释性:LIME、SHAP 和反事实解释的实际应用对比
- 一个实用的权衡框架,帮助你在准确率和公平性的 Pareto 边界上选择最佳工作点
前置知识#
第一部分 —— 七种偏差#
推荐系统中的偏差并非单一问题,而是至少七个问题的叠加。以下分类来自 Chen 等人(2023 年,《Bias and Debias in Recommender System》)的综述——这是了解完整文献地图的最佳起点。
流行度偏差 —— 强者愈强#

少数物品占据了大部分用户交互,而推荐系统进一步放大了这种集中效应。右图直观呈现了这一现象:即使物品目录本身分布均匀,前 20 个物品仍占据了超过 60% 的推荐曝光。
$$ \text{PopBias@K} = \frac{1}{|U|}\sum_{u \in U} \frac{\sum_{i \in R_u^K} \log(1 + p_i)}{K} - \frac{1}{|I|}\sum_{i \in I} \log(1 + p_i) $$取对数可以缓解头部热门物品的支配效应,防止指标被极少数超级热门物品扭曲。需要按每个 slate 单独统计,而不是仅依赖全局均值,因为后者会掩盖用户粒度的集中现象。
位置偏差 —— 点击跟着位置走,而非意图#

如果直接使用日志中的点击数据训练模型,模型容易将“排在首位”误判为“内容相关”。位置偏差是工业界 learning-to-rank 中研究最透彻的偏差,而修复方案——逆倾向得分(IPS)——本季度即可落地。
选择偏差 —— 数据不是随机的#

用户不会随机打分,要么喜欢某个物品,要么对它失望,不温不火的中间地带很少进入日志。这属于典型的非随机缺失(MNAR)情形。Marlin 和 Zemel(2009)证明,在 MovieLens 类数据集上忽略它会让 RMSE 虚高 10–30%。解决方法与位置偏差类似:显式建模缺失机制,然后进行加权或填补。
曝光偏差 —— 看不到就点不到#
系统只能学习它展示过的物品。新物品、长尾物品及小众创作者的作品曝光不足,导致交互稀疏、相关性预测不准,最终曝光进一步萎缩,形成加速系统退化的闭环反馈。
从众偏差 —— 用户模仿群体#
用户表达的偏好中既有真实兴趣,也有社会从众心理。如果模型将两者视为同一信号,学到的就是“流行度代理”而非真实兴趣。这正是 DICE(Zheng 等,WWW 2021)试图通过分离“兴趣嵌入”和“从众嵌入”来解决的问题。
人口偏差 —— 不同群体的服务质量不均#
同一个模型在某群体上的 NDCG@10 可能达到 0.42,而在另一群体上只有 0.31。常见原因是数据失衡:弱势群体的训练样本更少,学到的表示更弱。有时是因果性的:某些特征成为受保护属性的代理(如邮编代理种族、浏览器语言代理国籍)。
确认偏差 / 信息茧房 —— 视野越来越窄#
一旦模型形成对用户的偏好假设,每条推荐都会强化该假设,多样性消失,惊喜不再,用户接触到的思想范围逐渐缩小。这是监管机构最关注的偏差,因其影响具有群体性,而非局限于个体。
偏差的来源#
四个源头,按修复难度递增:
| 来源 | 示例 | 修复难度 |
|---|---|---|
| 数据采集 | 只记录登录用户行为 | 容易——改进数据采集 |
| 算法 | 损失函数优化点击而非满意度 | 中等——调整目标 |
| 反馈循环 | 推荐结果变成训练数据 | 困难——打破闭环 |
| 评估 | 离线 NDCG 忽略公平性 | 中等——引入正确指标 |
偏差测量工具箱#
在着手修复前,需先构建完备的评估仪表盘。下面这个类是我每次上线新推荐系统前必跑的最小集合。
| |
Gini 系数借自经济学,用来衡量收入不平等。在这里,它衡量的是曝光不平等。Gini 系数大于 0.8 表明曝光高度集中:少数物品占据绝大部分 slate 曝光,其余物品几乎无曝光。
第二部分 —— 推荐系统的因果推断#

为什么相关性远远不够#
日志显示,看过物品 A 的用户也点击了物品 B。但这并不能说明用户点击 B 是因为系统推荐了它,还是他们本来就会找到 B。这一点很重要,因为你报告的每一个“提升”,本质上都是一个因果推断。
潜在结果框架让这个因果推断更明确。对于用户 $u$ 和物品 $i$ ,假设存在两个平行世界:
- $Y_{ui}(1)$ :推荐物品 $i$ 后的结果
- $Y_{ui}(0)$ :不推荐物品 $i$ 时的结果
混淆变量是同时影响推荐内容(系统展示什么)和用户行为(用户做什么)的因素。最典型的混淆变量是用户偏好:品味好的用户既容易收到优质推荐,也更可能点击,无论推荐内容是什么。
逆倾向得分(IPS)#
IPS 是去偏的核心工具。它的核心思想是:如果一次点击发生在检视概率为 $\pi$ 的条件下,给它加权 $1/\pi$ 就能还原出“在均匀检视条件下的点击数”。

其中 $c_{ui} \in \{0,1\}$ 表示是否点击,$\pi_k$ 是位置 $k$ 的位置偏差倾向。Joachims、Swaminathan 和 Schnabel 在 2017 年 SIGIR 论文中证明:只要 $\pi_k > 0$ 处处成立,这个估计量就是无偏的——这也是工业界团队会给小倾向值加 $\epsilon$ 并对极端权重进行剪裁的原因。Saito 等(2020)提出的自归一化 IPS 和双重稳健变体用少量偏差换取了大幅降低的方差。
| |
实际应用中,你会遇到两类主要问题:
- 方差爆炸:当 $\pi_k$ 很小时,权重 $1/\pi_k$ 会急剧增大。需要严格剪裁(通常范围是 5–20),并监控权重分布。
- 倾向不准:需要一个可信的模型来解释“用户为什么会看到这些内容”。常用方法是开一个小流量随机槽(1–5%),随机打乱位置后估算 $\pi_k$ 。
双重稳健估计#
$$ \hat{Y}_{\text{DR}} = \hat{Y}(X) + \frac{T}{\pi(X)} \big( Y - \hat{Y}(X) \big) $$其中 $\hat{Y}(X)$ 是填补模型,$T$ 是处理指示变量。实战中,DR 的方差比纯 IPS 更低,偏差比纯填补更小。Wang 等(2019,Doubly Robust Joint Learning)是推荐场景的经典实现。
随机化数据:黄金标准#
如果条件允许,运行一个推荐随机化的 A/B 实验可以直接得到真实的 ATE。大多数团队无法在生产流量上完全随机推荐,因此采用分层随机化——在每个用户的小候选集内随机排序,记录倾向值,并在下游使用这些数据。
第三部分 —— 推荐系统中的去偏实践#

核心问题不是“如何消除偏差”,而是“我们在 Pareto 前沿的哪个点上运行”。上面的前沿图是真实的:所有已发表的去偏论文中,完美的公平性总是有代价的。你的任务是选择一个可接受且可衡量的工作点。
MACR —— 用模型无关反事实推理解决热度偏差#
MACR(Wei 等,KDD 2021)是我见过最简洁的热度偏差解决方案。它将预测分数分解为三个因果效应:用户单独效应、物品单独效应(这就是热度捷径)、以及用户-物品交互效应。在推理阶段,直接减去物品单独效应,从而去掉热度捷径。
架构上,MACR 添加了两个旁路塔:
| |
物品塔专门训练来仅根据物品本身预测点击——也就是学习热度捷径。推理时减掉这部分,迫使主塔依赖真实的用户-物品匹配信号。在 Yelp 和 Amazon-Book 数据集上,MACR 将长尾物品的召回率提升了 20%–40%,而整体 NDCG 损失仅为个位数。
DICE —— 解耦兴趣与从众行为#
DICE(Zheng 等,WWW 2021)将每个用户和物品的嵌入拆分为两部分:兴趣部分和从众部分。训练目标通过不同的负采样策略让这两部分各司其职:
- 兴趣嵌入:负样本是用户不太可能见过的物品 → 捕捉真实偏好
- 从众嵌入:负样本按热度匹配 → 捕捉羊群效应
推理时只用兴趣嵌入计算得分,剥离从众信号。
FairCo —— 跨多轮推荐摊销公平性#
$$ s'(u, i) = s(u, i) + \lambda \cdot \big( \text{deserved}_g(t) - \text{received}_g(t) \big) $$其中 $g$ 是物品 $i$ 所属的组。落后的组获得加分,超前的组被扣分。这个方法的优点是:虽然单次推荐可能仍有偏差,但随着时间推移,系统会收敛到与价值成比例的曝光。这对 Airbnb、Uber、Etsy 等需要生产者公平性的双边市场尤为重要。
三种方法,一个组合方案#
| 类别 | 使用场景 | 工具 |
|---|---|---|
| 预处理 | 能控制数据采集 | 重平衡、重加权、MNAR 填补 |
| 过程内 | 能修改损失函数 | IPS、MACR、DICE、公平正则化 |
| 后处理 | 模型已冻结 | FairCo、MMR、公平重排 |
新上线系统的合理组合步骤:
- 用上述工具箱审计,选定两个要优化的指标
- 加入一个过程内修复(位置偏差优先用 IPS)
- 加入一个后处理保险(FairCo 控制器)保障生产者侧公平
- 将这些指标写入上线标准——去偏只有进入评分卡才能真正落地
第四部分 —— 反事实公平与对抗训练#
$$ P\big(f_{Y \leftarrow a}(U, X) = y \mid X = x, A = a\big) = P\big(f_{Y \leftarrow a'}(U, X) = y \mid X = x, A = a\big) $$这里的 $f_{Y \leftarrow a}$ 是 Pearl 的 do-算子:我们对 $A$ 进行干预,同时固定其他所有变量。这比统计平价更严格,因为后者仅要求边缘分布相等。
对抗去偏 —— CFairER 模式#
判别器试图从用户嵌入中预测受保护属性,而编码器则努力欺骗判别器。在达到均衡时,嵌入中不再包含任何受保护信息。
| |
实际应用中需要注意两点:
- 判别器模式塌陷:如果判别器学得太快太强,编码器可能会放弃学习。可以降低判别器的学习率或减少更新频率。
- 物品侧信息泄露:如果物品本身与受保护属性高度相关(比如女性杂志类商品能推测性别),仅对用户嵌入去偏是不够的。可能需要在 (用户,物品) 分数上再加一个判别器。
第五部分 —— 可解释性#
为什么重要#
三类人,三个原因:
- 用户更信任能看懂的推荐。比如“因为你看过《盗梦空间》”,Netflix 和 Spotify 的实验表明这种解释能让点击率提升 6%–12%。
- 工程师调试模型时,如果能看到模型的推理过程,效率会更高。
- 监管机构——欧盟 GDPR 第 22 条,以及越来越多的美国地区,要求自动化决策提供“逻辑相关信息”。
LIME —— 局部线性近似#

LIME(Ribeiro 等,KDD 2016)是模型无关且局部的。它在目标实例附近生成扰动样本,用黑盒模型预测这些样本,然后拟合一个稀疏线性模型,按距离加权。线性模型的系数就是解释。
| |
注意:LIME 不够稳定。Ribeiro 自己提到,同一实例两次运行可能得到不同的特征排序。生产环境要固定随机种子,并监控稳定性指标。
SHAP —— 博弈论的贡献#
$$ \phi_j = \sum_{S \subseteq N \setminus \{j\}} \frac{|S|! (|N| - |S| - 1)!}{|N|!} \big( f(S \cup \{j\}) - f(S) \big) $$精确计算 Shapley 值的时间复杂度随特征数指数增长。实际应用中使用近似方法:
- TreeSHAP(树集成模型的多项式时间算法)——GBDT 推荐系统的首选工具
- KernelSHAP(模型无关,类似 LIME,但使用权重优化)
- DeepSHAP(神经网络专用,基于 DeepLIFT)
相比 LIME,SHAP 的优势在于归因结果总和等于预测值,因此具备一致性和可加性。如果需要应对审计,优先选择 SHAP。
| LIME | SHAP | |
|---|---|---|
| 速度 | 快 | 中等(TreeSHAP)到慢(KernelSHAP 精确版) |
| 理论基础 | 启发式 | 博弈论(Shapley 值) |
| 稳定性 | 不稳定 | 一致 |
| 适用场景 | 快速调试、高维特征 | 审计、合规报告 |
反事实解释 —— 可执行的答案#

其中 $d$ 是惩罚不现实改动的距离函数(例如一次性修改太多特征,或修改不可变特征如年龄)。现代实现(DiCE,Mothilal 等 2020)通过梯度下降优化松弛版本,并加入多样性约束,生成多条不同的反事实路径供选择。
反事实的最大价值在于可审计性。比如:“我们没有向用户 X 推荐某贷款产品,因为他的申报收入低于阈值;如果收入再高 5000 美元,模型就会推荐。” 这种解释更容易被监管接受。
第六部分 —— 构建生产环境中的信任#
可落地的透明性#
推荐系统需要一个最小化的透明层,包含以下内容:
- 每个推荐项附带一句自然语言解释(“因为你看过《盗梦空间》和《信条》”)。
- 一个用户可以参考的置信度分数(“匹配度 85%”)。
- 提供一个“为什么推荐这个?”的详细页面,展示 SHAP 值和影响推荐的关键特征。
| |
用户可控的界面#
每个推荐界面都应该提供三种控制选项:
- 多样性滑块 —— 用户可以手动调整探索与利用的平衡。
- 话题屏蔽 —— 用户可以选择“不要再给我推荐恐怖片”。
- 解释与调整 —— 展示影响推荐的特征,并允许用户重新调整权重。
这些功能实现起来成本低,但能显著提升用户信任。YouTube 的“不再推荐此频道”和 Spotify 的“隐藏这首歌”也是基于同样的逻辑:即使底层模型不变,提供可见的控制权也能减少用户对偏见的感知。
持续监控机制#
公平性不是上线时的一次性检查,而是需要持续测量的指标。你需要搭建仪表盘来跟踪第一部分提到的偏差指标,设置回退报警,并每季度用 SHAP/反事实工具进行审计。一个三月还公平的模型,到六月可能已经发生漂移;唯一的解决办法是建立完善的监控体系。
常见问题#
我是一个小团队,去偏的最低要求是什么?#
两件事。第一,把第一部分提到的偏差指标监控起来——测不到就改不了。第二,在排序模型的损失函数里加入 IPS 来处理位置偏差。这两步成本低,效果却很明显。
公平性对准确率的影响有多大?#
这要看你当前在公平-准确权衡曲线上的位置。如果起点是低公平性基线,通常可以用 1%–3% 的 NDCG 损失换来 30% 的公平性提升。真正昂贵的是最后 10% 的公平性优化,这往往要牺牲 10% 以上的准确率。定一个合理目标,别追求极致。
LIME 和 SHAP 怎么选?#
开发阶段用 LIME 快速调试局部问题。需要向审计人员或用户展示时,用 SHAP。如果模型是树结构,TreeSHAP 足够快,没必要考虑其他工具。
对抗去偏中的判别器总是收敛到随机水平,这是好事吗?#
没错——随机水平说明嵌入中没有泄露受保护信息。不过还是要验证:用嵌入重新训练一个分类器,确保它也无法超越随机水平。GAN 风格循环里的判别器有时会欠拟合。
如何处理交叉性公平(比如黑人女性,而不是单独看种族或性别)?#
单属性公平可能会掩盖交叉点上的差异。最基础的做法是直接报告交叉单元的指标,而不仅仅是边缘分布。更高级的方法是交叉性去偏——在属性组合上引入对抗损失——但要注意:交叉单元的样本量会迅速减少,统计效能也会随之下降。
总结#
- 七种偏差——流行度、位置、选择、曝光、从众、人口统计、确认——每种都有明确的特征和对应的解决方法
- 因果推断,尤其是 IPS 和 双重稳健估计,能把带偏的日志数据转化为无偏的训练信号
- 生产环境去偏工具箱:用 MACR 解决流行度偏差,用 DICE 处理从众效应,用 FairCo 实现曝光摊销,用对抗训练处理受保护属性
- LIME 快速定位局部问题,SHAP 提供可审计的解释,反事实给出具体的“如何改变结果”建议
- 可信推荐不是一锤子买卖,而是持续的投入——包括埋点、仪表盘、用户控制和季度审计
偏差和可解释性不再是锦上添花的功能,而是 2024 年运营推荐系统的必备条件。
推荐系统 16 篇
- 01 推荐系统(一)—— 入门与基础概念
- 02 推荐系统(二)—— 协同过滤与矩阵分解
- 03 推荐系统(三)—— 深度学习基础模型
- 04 推荐系统(四)—— CTR 预估与点击率建模
- 05 推荐系统(五)—— Embedding 表示学习
- 06 推荐系统(六)—— 序列推荐与会话建模
- 07 推荐系统(七)—— 图神经网络与社交推荐
- 08 推荐系统(八)—— 知识图谱增强推荐系统
- 09 推荐系统(九)—— 多任务学习与多目标优化
- 10 推荐系统(十)—— 深度兴趣网络与注意力机制
- 11 推荐系统(十一)—— 对比学习与自监督学习
- 12 推荐系统(十二)—— 大语言模型与推荐系统
- 13 推荐系统(十三)—— 公平性、去偏与可解释性 当前
- 14 推荐系统(十四)—— 跨域推荐与冷启动解决方案
- 15 推荐系统(十五)—— 实时推荐与在线学习
- 16 推荐系统(十六)—— 工业级架构与最佳实践