阿衡是幸福里社区食堂的智能打菜师——严格来说,它是一套负责为每位居民推荐菜品的推荐系统。它每天要面对几百位口味各异的居民:无辣不欢的年轻人、牙口不好的老人、健身达人、素食主义者……刚开始,阿衡只有一个朴素的追求:让全体居民的整体满意度最高。于是它疯狂地把爆款红烧肉推给所有人,把高分辣菜放到每一位用户的第一屏。 结果呢?爱吃辣的人确实很开心,老人却常常对着推荐列表皱眉,新来的甜品师傅的招牌蛋糕因为“历史数据太少”永远不见天日,南方清淡口味的住户觉得自己被系统彻底遗忘了。阿衡这才明白:好的推荐,不仅要让大多数人满意,还得让每一个用户、每一道菜、甚至每一个群体,都得到公平对待。这就是本文要讲的推荐公平性——它关注用户、物品、群体三个层面上,机会与质量是否被合理地分配。

岗位关联

对 AI 从业者而言,推荐公平性是模型从“能用”走向“好用且可信”的必经关卡:掌握公平性度量与去偏手段,你能在真实业务中兼顾用户体验、生态健康与合规要求,这是高级算法工程师区别于初级调参者的核心能力之一。

目录
  1. 可视化演示
  2. 公平性概述
  3. 用户公平性
  4. 物品公平性
  5. 群体公平性
  6. 公平度量指标
  7. 去偏干预
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

本节配有交互动效(进入视口后自动加载,约 3KB)。

推荐公平性三个维度 用户公平性 - 活跃与长尾用户均衡 推荐质量分布 公平化策略 推荐公平性可视化:展示用户/物品/群体三类公平维度、马太效应抑制、敏感属性保护及公平-准确权衡。

公平性概述

食堂的立身之本从来不是“平均满意度最高”,而是“每位居民都吃得好”。如果只盯着整体分数,阿衡自然会倾向服务最热情、最常来的居民——就像推荐系统天然偏向高活跃用户和高热物品,因为它们在数据里“嗓门最大”。一个沉默寡言的老人,数据里留下的痕迹很少,很容易被系统遗忘。

推荐公平性(Recommendation Fairness)关注的正是这种“数据嗓门”带来的系统性偏差。业界通常从三个视角审视:用户公平——每个用户获得的推荐质量是否一致;物品公平——每个物品获得的曝光机会是否合理;群体公平——不同社会群体是否被无差别对待。三者互相交织,共同构成推荐系统的公正底线。

在数学上,推荐系统通常建模为一个带约束的优化问题:在满足公平约束的前提下最大化推荐效用。把推荐策略记作 $\pi$,用户集合记作 $U$,物品集合记作 $I$,那么“在公平约束下追求整体效用最大”可以写成:

所以阿衡在食堂门口贴了新告示:“本食堂承诺,每一位居民都有机会点到可口的菜,每一道认真的菜都有机会被品尝。”这句话翻译成技术术语,就是给推荐目标函数加上了公平约束。

max⁡π  ∑u∈U∑i∈Iπu,i⋅ru,is.t.Fair(π)≤ε\displaystyle \max_{\pi} \; \sum_{u \in U}\sum_{i \in I} \pi_{u,i} \cdot r_{u,i} \quad \text{s.t.} \quad \text{Fair}(\pi) \le \varepsilon
这个式子表达的是“整体满意度最高”与“公平底线”之间的平衡——相当于食堂同时考核“居民平均满意度”和“有没有人/菜被长期亏待”。
  1. 推荐策略 $\pi_{u,i}$$\pi_{u,i}$ 是一个 0/1 决策变量,1 表示将物品 i 推荐给用户 u,0 表示不推荐——相当于食堂阿姨决定要不要把这道菜端到这位居民面前。
    πu,i∈{0,1}\pi_{u,i} \in \{0, 1\}
  2. 偏好评分 $r_{u,i}$用户 u 对物品 i 的真实口味评分(如 1~5 分),源自点击、收藏、购买等反馈——相当于居民对每道菜悄悄打的分数。
    ru,i∈{1,2,3,4,5}r_{u,i} \in \{1, 2, 3, 4, 5\}
  3. 总效用最大化对所有被推荐的“用户-物品”对的满意度求和,得到整个食堂的“满意总数”——目标是让整体口碑最高。
    ∑u∈U∑i∈Iπu,i⋅ru,i\sum_{u \in U} \sum_{i \in I} \pi_{u,i} \cdot r_{u,i}
  4. 公平约束 $\varepsilon$$\text{Fair}(\pi) \le \varepsilon$ 强制推荐策略必须满足公平底线,比如群体曝光差异、用户效用方差等,相当于食堂承诺“绝不让任何一类居民被亏待”。
    Fair(π)≤ε\text{Fair}(\pi) \le \varepsilon

用户公平性

阿衡发现,食堂里真的存在“沉默的大多数”。健身达人小周天天来,每次都会给菜品打满分、写评论,于是阿衡非常了解他;而刚退休的王阿姨每周只来两次,从不多说话,阿衡对她的口味几乎一无所知。结果王阿姨的推荐列表里全是辛辣的重口味菜,她摇摇头自己去打米饭了。

如果是以前,阿衡会觉得“王阿姨自己不看推荐,不能怪我”。但现在它明白了:用户公平要求每个用户获得的推荐质量不能因为活跃度、历史反馈数量等因素而被系统性牺牲。换句话说,推荐系统的服务标准应该对齐——王阿姨虽然没有小周那么爱互动,但她同样值得一份“懂她”的菜单。

衡量用户公平的常用做法是计算每个用户从推荐中获得的效用,再检查不同用户之间效用的方差是否过小。设用户的效用为其被推荐物品的评分之和:

用户公平就像食堂的“最后一名法则”:不是看平均分多高,而是看最低分的那位居民有没有被照顾到。王阿姨和小周可以吃完全不同的菜,但他们都应该觉得“这家食堂懂我”。

min⁡π  1∣U∣∑u∈U(Utilu(π)−Uˉ)2\displaystyle \min_{\pi} \; \frac{1}{|U|} \sum_{u \in U} \left( \text{Util}_u(\pi) - \bar{U} \right)^2
用户效用方差越小,说明每位居民的满意度越接近——没有人被特别优待,也没有人被长期忽视。
  1. 用户效用 $\text{Util}_u$单个用户 u 从推荐中获得的总体满意度,即被推荐物品的评分总和——相当于王阿姨这周吃到的“合口味次数”。
    Utilu(π)=∑i∈Iπu,i⋅ru,i\text{Util}_u(\pi) = \sum_{i \in I} \pi_{u,i} \cdot r_{u,i}
  2. 平均效用 $\bar{U}$所有用户满意度的平均水平——相当于食堂整体的“口碑均值”。
    Uˉ=1∣U∣∑u∈UUtilu(π)\bar{U} = \frac{1}{|U|} \sum_{u \in U} \text{Util}_u(\pi)
  3. 偏差平方每个用户与均值的差距的平方,衡量“偏离平均体验”的程度——相当于食堂盯住那些“比别人吃得差”的居民。
    (Utilu(π)−Uˉ)2\left( \text{Util}_u(\pi) - \bar{U} \right)^2
  4. 整体方差对所有用户取平均,得到用户公平的量化指标,值越小越公平。
    1∣U∣∑u∈U(Utilu(π)−Uˉ)2\frac{1}{|U|} \sum_{u \in U} \left( \text{Util}_u(\pi) - \bar{U} \right)^2

物品公平性

食堂里的爆款红烧肉每天光盘,而新品藜麦沙拉即使在黄金位置摆了一整天也少人问津。更糟的是,因为红烧肉“历史表现好”,阿衡的推荐算法总把它放在所有人的第一屏,藜麦沙拉则被挤到第 8 页——几乎等于不存在。这就是推荐系统里著名的马太效应:强者愈强,弱者愈弱。

物品公平的使命,就是打破这种注意力垄断。每一件物品——尤其是新上架的、小众的、低热度的——都应该拥有合理的曝光机会。这不仅是“公平”问题,更是生态健康问题:如果新菜永远没有出头之日,厨师就不愿意研发新品了。

衡量物品曝光均衡程度的经典指标是基尼系数(Gini Coefficient)。设物品集合有 $n$ 个物品,物品 $i$ 的曝光量为 $e_i$,平均曝光量为 $\bar{e}$,基尼系数定义为:

一道菜能不能上桌,不能只看过去“火不火”,还要看它值不值得被更多人尝试。物品公平让阿衡学会给藜麦沙拉一个机会——哪怕它暂时没有爆款那么耀眼的数据。

G=∑i=1n∑j=1n∣ei−ej∣2n2eˉ\displaystyle G = \frac{\sum_{i=1}^{n}\sum_{j=1}^{n} \left| e_i - e_j \right|}{2 n^2 \bar{e}}
基尼系数越接近 0,说明各物品曝光越均匀;越接近 1,说明曝光越集中。它就像食堂的“上桌机会贫富差距指标”。
  1. 单物品曝光量 $e_i$每个物品被推荐的总次数——相当于每道菜被端上桌的次数。
    eie_i
  2. 两两差异 $\left|e_i - e_j\right|$任意两道菜的曝光量差值的绝对值——相当于比较“爆款”和“冷门菜”上桌次数差多少。
    ∣ei−ej∣\left| e_i - e_j \right|
  3. 平均曝光量 $\bar{e}$所有物品曝光量的平均水平,用于归一化。
    eˉ=1n∑i=1nei\bar{e} = \frac{1}{n} \sum_{i=1}^{n} e_i
  4. 归一化系数 $2n^2\bar{e}$把基尼系数压缩到 0~1 之间,0 表示绝对平均,1 表示完全垄断。
    ∑i=1n∑j=1n∣ei−ej∣2n2eˉ\frac{\sum_{i=1}^{n}\sum_{j=1}^{n} \left| e_i - e_j \right|}{2 n^2 \bar{e}}

群体公平性

居民们开始聚在一起讨论:为什么住在东区的年轻租客们总觉得推荐列表很合胃口,而西区的老住户们却经常觉得推荐内容“驴唇不对马嘴”?阿衡查了一下,发现自己的算法在训练数据里“见”过的年轻样本远多于老年样本,所以给年轻人的推荐精准度明显更高。这就是群体公平要面对的问题。

群体公平要求:按敏感属性(如年龄、性别、地域等)划分的各个群体,不应在推荐质量或推荐机会上受到系统性歧视。最经典的定义是统计均等,也叫人口统计均等(Demographic Parity)。设敏感属性 $A$ 将所有用户分成 $A=0$ 和 $A=1$ 两组,$\hat{y}=1$ 表示某个物品被推荐给用户,则要求:

一桌好菜,不能让“北方桌”人人满意而“南方桌”只能将就。群体公平就是那条“不因出身而差别对待”的底线——它要求阿衡睁大眼睛检查:我们的推荐,是不是对不同群体都一视同仁?

P(y^=1∣A=0)=P(y^=1∣A=1)\displaystyle P(\hat{y} = 1 \mid A = 0) = P(\hat{y} = 1 \mid A = 1)
统计均等的意思是:无论你属于哪个群体,得到推荐的概率应该是相同的——就像食堂不能因为你是“南方人”就不给你端出合口的菜。
  1. 敏感属性 A把居民按属性(年龄、地域、口味派别等)分成两组,比如 $A=0$ 表示西区老住户,$A=1$ 表示东区年轻租客。
    A∈{0,1}A \in \{0, 1\}
  2. 推荐结果 $\hat{y}$$\hat{y}=1$ 表示物品被推荐给该用户,$\hat{y}=0$ 表示未推荐——相当于这道菜有没有被端到这位居民面前。
    y^∈{0,1}\hat{y} \in \{0, 1\}
  3. 群体 0 的推荐率在 $A=0$ 群体中,用户收到推荐的比例。
    P(y^=1∣A=0)P(\hat{y}=1 \mid A=0)
  4. 群体 1 的推荐率在 $A=1$ 群体中,用户收到推荐的比例。两者相等时达到统计均等。
    P(y^=1∣A=1)P(\hat{y}=1 \mid A=1)

公平度量指标

阿衡开始给食堂做“月度体检”。体检单上有三项关键指标:基尼系数(衡量物品曝光是否均匀)、KL 散度(衡量实际推荐分布与目标分布的偏差)、以及用户效用方差(衡量用户满意度是否齐平)。有了这些指标,阿衡才能说清楚食堂到底哪里失衡。

其中 KL 散度(Kullback-Leibler Divergence)在公平性评估中尤为常用。它度量的是“实际发生的推荐分布 P”与“我们期望的公平目标分布 Q”之间的距离。设 $x$ 是推荐结果的取值(如物品类别),那么:

没有体检单,阿衡就不知道食堂哪里出了问题;有了基尼系数、KL 散度和效用方差这些指标,它才能“对症下药”。指标是公平的仪表盘,也是后续一切干预动作的输入。

DKL(P∥Q)=∑x∈XP(x)log⁡P(x)Q(x)\displaystyle D_{KL}(P \parallel Q) = \sum_{x \in X} P(x) \log \frac{P(x)}{Q(x)}
KL 散度越小,说明实际推荐分布越接近公平目标。当 $P$ 与 $Q$ 完全一致时,KL 散度为 0——就像食堂的实际上菜比例与“每桌均衡”的预期完全吻合。
  1. 两个分布 P 和 Q$P(x)$ 是现实中物品类别 x 获得的曝光占比,$Q(x)$ 是理想公平状态下 x 应占的份额(比如均匀分布)——相当于“实际上菜数”与“应该上菜数”的比例。
    P(x),Q(x)P(x), \quad Q(x)
  2. 对数比值$\log \frac{P(x)}{Q(x)}$ 度量每个品类上“实际比例”与“目标比例”偏离的程度,比值越偏离 1,差异越大。
    log⁡P(x)Q(x)\log \frac{P(x)}{Q(x)}
  3. 加权求和用 $P(x)$ 对差异加权,表示高频品类上的偏差影响更大——食堂优先盯住“最常见菜品”的分配不公。
    ∑x∈XP(x)log⁡P(x)Q(x)\sum_{x \in X} P(x) \log \frac{P(x)}{Q(x)}
  4. 零值含义当 $P=Q$ 时对数比值为 0,总和无贡献,KL 散度为 0——此时推荐分布完全符合公平目标。
    DKL(P∥Q)=0D_{KL}(P \parallel Q) = 0

去偏干预

阿衡想:既然找到了病灶,那怎么治?它把整改方案分成了三道工序,对应推荐系统的数据预处理、模型训练调整、结果后处理三个环节。

第一道工序是“食材采购”,即数据预处理。如果历史数据本身有偏差——比如年轻人留下的行为数据远多于老人——就需要通过重采样或重加权来平衡样本。第二道工序是“烹饪调火候”,即模型调整。在推荐模型的损失函数中加入公平正则项,让模型在训练过程中主动抑制不公平。第三道工序是“摆盘”,即后处理重排。在最终排序时对低曝光、长尾物品做曝光补偿,就像把藜麦沙拉从角落挪到主通道。

其中“公平正则”是最常用的模型侧干预手段。设原有的推荐损失为 $L_{rec}$(如点击率预测的交叉熵),我们将公平约束以惩罚项的形式加入总损失:

从“厨房源头”到“端上餐桌”,每个环节都可以放一把公平卡尺。阿衡现在明白了:公平不是做菜之后的一次性补救,而是从选食材(数据)、控火候(模型)、到摆盘(排序)全流程都要刻进骨子里的工程习惯。

L=Lrec+λ⋅∑g=1k(p^g−pˉ)2\displaystyle L = L_{rec} + \lambda \cdot \sum_{g=1}^{k} \left( \hat{p}_g - \bar{p} \right)^2
这个式子把“公平”变成损失函数里的一个可调节的旋钮:$\lambda$ 调大,系统更重视公平;$\lambda$ 调小,更重视原始推荐效果。
  1. 推荐主损失 $L_{rec}$模型原有的预测误差(如点击率、转化率预测的损失)——相当于食堂菜品的“味道基准线”。
    LrecL_{rec}
  2. 群体占比 $\hat{p}_g$ 与目标占比 $\bar{p}$$\hat{p}_g$ 是第 $g$ 个群体(或第 $g$ 类物品)在推荐结果中的实际占比,$\bar{p}$ 是期望的公平占比——相当于饭桌上各口味菜品的“实际份额”与“合理份额”。
    p^g,pˉ\hat{p}_g, \quad \bar{p}
  3. 公平正则项对所有群体的占比偏差求平方和并加权,惩罚那些“某一类占比过高、另一类占比过低”的情况。
    ∑g=1k(p^g−pˉ)2\sum_{g=1}^{k} \left( \hat{p}_g - \bar{p} \right)^2
  4. 调和系数 $\lambda$控制公平约束的强度,$\lambda$ 越大,系统越倾向于牺牲部分推荐精度来换取公平。
    λ⋅∑g=1k(p^g−pˉ)2\lambda \cdot \sum_{g=1}^{k} \left( \hat{p}_g - \bar{p} \right)^2

AI 应用场景

电商平台长尾商品公平曝光

阶段:模型评估与后处理

解决的问题:传统电商推荐以 CTR 排序为唯一目标,导致爆款商品持续霸屏、新品和中小商家长尾商品几乎没有曝光。AI 公平重排模块在排序后加入曝光补偿,在不显著降低整体转化率的前提下,提升长尾商品的曝光机会。

具体案例:某电商平台在大促期间上线“曝光基尼系数监控 + 后处理重排”,对腰部以下商品实施曝光加权,两周后长尾商品曝光量提升 32%,平台整体 GMV 反而因商品多样性增加而上涨 5%。

短视频平台的跨群体推荐公平

阶段:模型训练与目标函数调整

解决的问题:不同年龄、地域的用户群体在内容消费上存在系统性偏差,年轻用户的高互动数据会“淹没”中老年用户的偏好,导致信息茧房加剧。通过训练损失中加入群体公平正则项,使各群体获得的内容多样性趋近。

具体案例:某短视频 App 在推荐模型中加入统计均等约束($\lambda$ 从 0 逐步调到 0.2),在人均时长几乎不变的条件下,中老年用户的内容多样性指数提升了 21%,投诉率下降 18%。

招聘平台的职位推荐公平性治理

阶段:数据预处理

解决的问题:招聘平台的历史数据中带有性别、年龄等结构性偏差,导致部分岗位对特定群体“隐形屏蔽”。通过预处理阶段检测敏感属性(含代理变量),对样本进行重加权并做公平性审计,确保不同群体收到的职位推荐机会接近。

具体案例:某互联网招聘平台对简历库做群体公平审计,发现“月嫂”推荐中女性占比 97%,“技术专家”推荐中男性占比 91%。通过公平重加权与曝光配额调整,三个月后两类职位的跨群体推荐比例差距缩小到 15% 以内。

Python 演示

python41 行
import numpy as np  def gini_coefficient(exposures):    """计算一组曝光量的基尼系数, 返回 0~1 的标量"""    e = np.sort(np.asarray(exposures, dtype=float))    n = len(e)    if n == 0 or e.sum() == 0:        return 0.0    cum = np.cumsum(e)    area_under_lorenz = np.sum(cum)    return (2.0 * area_under_lorenz / (n * cum[-1])) - (n + 1.0) / n  def fairness_repair(scores, exposures, alpha=0.6):    """后处理公平重排: 对高曝光物品降权, 给低曝光物品加权"""    weights = np.power(np.asarray(exposures, dtype=float) + 1e-6, -alpha)    return np.asarray(scores, dtype=float) * weights / np.mean(weights)  def simulate_exposure():    """模拟 10 个物品的曝光与基础分, 体现爆款垄断"""    np.random.seed(42)    popularity = np.exp(-np.linspace(0.0, 2.5, 10))    exposure = 200 * popularity + np.random.randint(0, 30, 10)    score = np.array([3.0, 4.0, 5.0, 6.0, 8.0, 7.0, 6.0, 5.0, 4.0, 3.0])    return exposure, score  def main():    exposure, score = simulate_exposure()    gini_before = gini_coefficient(exposure)    fair_score = fairness_repair(score, exposure, alpha=0.8)    new_exposure = exposure * fair_score / score    gini_after = gini_coefficient(new_exposure)    print("调整前基尼系数: %.4f" % gini_before)    print("调整后基尼系数: %.4f" % gini_after)  if __name__ == "__main__":    main()
目的:演示推荐系统“物品曝光公平性”的评估(基尼系数)与后处理去偏(曝光重排)的完整流程,输出调整前后的公平度对比。
  1. e = np.sort(np.asarray(exposures, dtype=float))将各物品曝光量排序,这是画洛伦兹曲线、计算基尼系数的前置步骤,相当于把每道菜的上桌次数从少到多排队。
  2. cum = np.cumsum(e)对排序后的曝光量逐项累加,获得“累计曝光份额”曲线,用于计算面积。
  3. return (2.0 * area_under_lorenz / (n * cum[-1])) - (n + 1.0) / n基尼系数的核心公式,输出 0~1 之间的不公平程度。
  4. weights = np.power(np.asarray(exposures, dtype=float) + 1e-6, -alpha)以曝光量的负指数幂作为权重,曝光越少的物品权重越大,相当于给冷门菜加上“摆盘加成”。
  5. new_exposure = exposure * fair_score / score模拟公平分值传导为新的曝光量,展示后处理干预如何改变曝光分布。
  6. print("调整前基尼系数: %.4f" % gini_before)输出调整前后的基尼系数,让公平度提升一目了然,相当于食堂的月度公平体检报告。

常见误区

误区“用户公平不就是所有人都拿到相同的推荐列表吗?大家看到的都一样,最公平了。”

正解公平绝不等于“千人一面”。用户公平追求的是推荐质量的一致性——同样需求的用户获得同样质量的推荐,而不是所有用户收到相同内容。王阿姨和小周口味不同,给王阿姨推辣菜、给小周推轻食,只要两人都满意,就符合用户公平;反之,给他们推同样的菜才是真正的失败。

为何常见:人们容易把“结果相同”误解为“机会均等”,忽略了推荐系统的核心恰恰是个性化。

误区“我把性别、年龄这些敏感属性从特征里删掉了,模型肯定公平了吧?”

正解敏感信息经常由代理变量编码——比如“深夜点击外卖”暗含年龄信息,“浏览美妆视频”与性别高度相关。即使删掉显式字段,模型仍可能从其他特征中重建群体边界。正确的做法是显式地做公平性审计:计算各群体推荐率的 KL 散度或统计均等指标,而不是靠“感觉干净”。

为何常见:忽视了特征之间复杂的相关关系,把“字段存在与否”当成了“偏差存在与否”。

误区“公平和效率是天敌,想公平就必须牺牲点击率和转化率。”

正解在真实场景中,公平与效率往往存在帕累托改进区间。特别是长尾推荐场景,过度集中的曝光反而抑制了探索,而公平正则带来的流量再分配常常能发掘出新的用户兴趣点,最终提升整体收益。公平约束的效果高度依赖 $\lambda$ 的调节和评估指标的选择。

为何常见:把公平简单理解为“限制头部”,而忽略了公平带来的“探索红利”和生态健康收益。

误区“基尼系数越低不是越公平吗?那就让所有物品曝光量都一模一样!”

正解推荐系统天然存在头部集中度(搜索和推荐领域的 2/8 定律),用户兴趣分布本就是幂律的。如果把曝光强行拉成完全均匀,用户会看到大量不相关的内容,满意度反而崩溃。合理的公平目标是一个机会底线——保证长尾和新品有“被看见的窗口”,而不是追求统计上的绝对平均。

为何常见:混淆了“统计平均”与“公平机会”两个概念,忘记了推荐系统还要对用户负责。

误区“离线评测时 KL 散度和基尼系数都达标了,上线之后不可能有问题。”

正解线上环境是动态变化的:新内容不断涌入、用户兴趣漂移、推荐策略与用户行为存在反馈回路。离线数据集只是历史快照,离线公平无法保证线上公平。上线后需要持续监控公平指标,并通过 A/B 实验验证公平性改造的线上收益。

为何常见:忽视了离线与线上分布不一致这一推荐系统的经典问题,以及“推荐→反馈→再推荐”的闭环放大效应。

面试题

Q1. 推荐公平性最核心的追求是?

单选题 · easy

  • A.推荐的准确率最大化
  • B.用户群体间机会合理均等← 正确答案
  • C.所有推荐结果完全相同
  • D.追求离线指标完美表现

答案:B。A 是传统推荐系统的效率目标,不是公平性的核心;C 把公平误解为“千人一面”;D 是工程追求。公平性的本质是在用户、物品、群体之间合理分配机会与质量,即 B。类比食堂:公平不是让所有人吃同一道菜,而是每类居民都有合口的选择。

Q2. 物品公平性要解决的核心问题是?

单选题 · easy

  • A.长尾物品缺乏曝光机会← 正确答案
  • B.用户行为数据难以获取
  • C.推荐算法运行速度慢
  • D.多模态特征融合困难

答案:A。物品公平聚焦于曝光机会的分配,核心痛点就是长尾或新品物品因历史热度低而难以获得推荐机会,即 A。B 是冷启动/数据问题,C 是性能问题,D 是特征工程问题,都不是物品公平的关注点。就像食堂里“藜麦沙拉”缺的不是口碑,而是上桌的窗口。

Q3. 关于基尼系数在物品公平中的含义,正确的是?

单选题 · mid

  • A.数值越大代表系统越公平
  • B.数值为 0 时曝光完全平均← 正确答案
  • C.数值为 1 代表所有物品机会均等
  • D.数值与公平与否没有关系

答案:B。基尼系数衡量曝光分布的均衡程度,0 表示完全平均(每道菜上桌次数相同),1 表示完全垄断(只有一道菜在卖)。A 说反了,越大越不公平;C 把 1 误解为机会均等,实为垄断;D 说无关也不对。它是物品公平体检单上的“血压值”。

Q4. 关于人口统计均等(Demographic Parity),正确理解是?

单选题 · mid

  • A.要求两个群体的推荐率一致← 正确答案
  • B.要求推荐与用户偏好完全一致
  • C.要求物品曝光量完全一致
  • D.要求模型训练时间完全一致

答案:A。Demographic Parity 要求 $P(\hat{y}=1 \mid A=0) = P(\hat{y}=1 \mid A=1)$,即敏感属性不同分组的推荐概率相等,选 A。B 是个性化目标;C 是物品公平的曝光均等;D 与公平无关。类比食堂:所谓公平,是“南方桌”和“北方桌”得到推荐菜的概率一样大。

Q5. 推荐系统中“马太效应”指的是?

单选题 · mid

  • A.热门物品越推越热冷门更冷← 正确答案
  • B.新用户无法获得冷启动推荐
  • C.模型参数越多模型效果越好
  • D.数据规模越大推荐越准确

答案:A。马太效应指“强者愈强、弱者愈弱”,在推荐系统中表现为热门物品因曝光高而获得更多点击,进而被算法更频繁推荐,而冷门物品则被边缘化,选 A。B 是冷启动问题,C 是过拟合话题,D 是大数据规模话题,都与马太效应概念无关。

Q6. 用户公平性的核心衡量标准是?

单选题 · mid

  • A.用户满意度水平尽量接近← 正确答案
  • B.用户观看历史尽量相同
  • C.用户注册时间尽量一致
  • D.用户画像特征尽量相似

答案:A。用户公平要求不同用户的推荐质量与满意度一致,即效用方差最小化,选 A。B、C、D 都是“把用户变相同”的误区,真正的公平不是让用户相似,而是让不同用户都获得同样好的体验——就像王阿姨和小周可以偏好完全不同,但都满意而归。

Q7. KL 散度在推荐公平度量中的作用是?

单选题 · hard

  • A.衡量实际推荐分布与目标分布的差异← 正确答案
  • B.度量用户之间评分的相关系数
  • C.计算曝光数据的高阶统计量
  • D.消除用户行为序列中的噪声

答案:A。$D_{KL}(P \parallel Q)$ 度量实际推荐分布 P 与期望公平分布 Q 之间的偏离程度,选 A。B 是相关系数范畴,C 是矩估计范畴,D 是序列去噪问题。类比食堂体检:KL 散度告诉你“实际上菜比例”离“公平目标比例”差多远。

Q8. 公平性干预可以从哪些环节入手?

多选题 · mid

  • A.数据预处理阶段← 正确答案
  • B.模型训练阶段← 正确答案
  • C.推荐结果后处理阶段← 正确答案
  • D.模型参数存储阶段

答案:ABC。公平干预的三阶段是:数据预处理(重采样/重加权)、模型训练中(加公平正则项)、结果后处理(曝光重排),对应 A、B、C。D 的参数存储只是模型持久化环节,与公平性干预机制无关。就像食堂整改要从“采购、烹饪、摆盘”三道工序分别下手。

Q9. 下列哪些现象可能造成推荐不公平?

多选题 · hard

  • A.历史数据中的群体偏差← 正确答案
  • B.用户点击反馈的马太效应← 正确答案
  • C.审核机制对低质内容的过滤
  • D.算法对热门物品的偏向性← 正确答案

答案:ABD。A 是数据层面的偏差源,B 和 D 是算法与反馈循环层面的偏差源,都会造成推荐不公。C 是平台内容安全治理措施,过滤低质内容保障的是体验底线,不属于不公平成因。可以理解为:数据有“偏见基因”,算法有“偏好惯性”,但内容审核是“餐厅卫生检查”,性质完全不同。

Q10. 关于推荐公平与推荐效率的平衡,说法正确的是?

多选题 · hard

  • A.加入公平约束一定会显著降低准确率
  • B.可通过调节正则系数控制公平强度← 正确答案
  • C.公平与效率可能存在帕累托改进区间← 正确答案
  • D.公平约束不应进入优化目标函数

答案:BC。B 正确,公平正则项前的 $\lambda$ 就是公平强度的旋钮;C 正确,长尾场景中公平带来的探索红利可能让效率和公平双升。A 过于绝对,公平约束调优后损失往往很小;D 错误,主流的模型侧去偏方式恰恰是通过目标函数加正则实现。