巷口的老周开了家面馆,墙上挂着一块“今日推荐榜”。以前他凭感觉排序,把最贵的牛肉面顶到第一位,客人却总点那碗不起眼的阳春面。他百思不得其解:决定客人选择的,到底是价格、分量、出餐速度,还是辣度?于是老周开始记录每碗面的“体质档案”——客人点单时的要求、食材用料、过往点击量。他想搞清楚:在“客人为什么选这碗面”这件事上,每个因素究竟贡献了多少?这正是搜索引擎排序团队每天都在琢磨的问题:一堆文档特征摆在那里,到底谁真正决定了“谁排第一”? 这个“搞清楚”的过程,在机器学习里叫作特征重要性分析与模型解释。它回答三个问题:哪些特征真正影响排序?影响有多大?为什么某个结果会是这样?对 AI 从业者而言,它不是锦上添花的统计技巧,而是给模型“拍 X 光片”的基本功——排查线上故障、向业务方解释行为、为特征体系做减法,全都绕不开它。下面我们就跟着老周的面馆,把这件事从头到尾看明白。

岗位关联

对 AI 从业者来说,掌握特征重要性分析与模型解释,等于拥有“给模型体检”的能力:线上指标下滑时能快速定位元凶,业务质疑时能拿出解释,特征膨胀时敢做减法,这是排序系统工程师的必修课。

目录
  1. 可视化演示
  2. 特征价值内涵
  3. 特征类型体系
  4. 重要性分析方法
  5. 模型解释维度
  6. 特征工程实践
  7. 工程落地优化
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

展示排列重要性/Gain/SHAP三种特征重要性排序、SHAP值分布蜂群图及部分依赖曲线,直观理解搜索排序模型的可解释性分析方法。

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

特征重要性排序对比 Gain重要性:基于树模型分裂增益,计算高效但偏向高频特征 排列重要性:打乱特征后性能下降幅度,模型无关但计算开销大 Gain: ΣΔGini(split) | Perm: ΔMetric(shuffle(x_i))

特征价值内涵

巷口的老周开了家面馆,墙上挂着“今日推荐榜”。以前他拍脑袋排序,把最贵的牛肉面放第一位,客人却总点便宜的阳春面。他不明白:决定客人选择的,到底是价格、分量、出餐速度,还是辣度?这就像搜索引擎里,决定哪篇文档排第一的不是编辑直觉,而是排序模型根据大量特征算出的分数。老周想知道的“哪个因素说了算”,正是特征重要性要回答的问题。

从面馆回到搜索引擎:排序模型会对每个“查询-文档”对打分,分数决定排名。特征重要性(Feature Importance)衡量的,就是每个特征对这个分数的贡献有多大。它的价值有三层:一是排错,线上指标异常时,重要性变化能帮我们锁定“谁在捣乱”;二是信任,向业务方解释“为什么这篇排第一”;三是优化,通过重要性排序把低价值特征删掉,让模型更精简高效。

在数学上,排序分数可以看作各特征贡献的叠加。以加性模型为例:

想通了公式,老周豁然开朗:“今日推荐榜”不是一道菜说了算,而是“价格贡献 + 分量贡献 + 出餐速度贡献”叠加出来的。只要算出每项的贡献量,他就能精准调整——适当降价,或加快出餐,而不是盲目把牛肉面顶到第一位。

s(q,d)=∑i=1nφi(xi(q,d))s(q, d) = \sum_{i=1}^{n} \varphi_i\bigl(x_i(q, d)\bigr)
公式的意思是:查询 $q$ 下文档 $d$ 的排序分,等于 $n$ 个特征各自贡献的加总。特征重要性排序,本质上就是对 $\varphi_i$ 贡献量的排序。
  1. 排序得分$s(q, d)$ 表示查询 $q$ 下文档 $d$ 的打分,分数越高,在搜索结果里排得越靠前。
    s(q,d)s(q, d)
  2. 求和范围$\sum_{i=1}^{n}$ 表示把 $n$ 个特征的贡献逐一相加,最终得到总分。
    ∑i=1n\sum_{i=1}^{n}
  3. 特征贡献$\varphi_i\bigl(x_i(q, d)\bigr)$ 是第 $i$ 个特征取值为 $x_i$ 时对总分的贡献量,由贡献函数 $\varphi_i$ 决定。
    φi(xi(q,d))\varphi_i\bigl(x_i(q, d)\bigr)

特征类型体系

老周做记录时发现,客人的信息得分开记:客人点单时说“要辣的、要快”,这是“当时的需求”;而每碗面的分量、食材新鲜度,是“菜本身的属性”;至于“辣度对不对胃口”,则是需求和菜品碰在一起才冒出来的感觉。这三类信息性质完全不同,必须分开存储、分开建模——搜索引擎里的特征也分这三类。

在 Learning to Rank 中,特征按来源分成三类。查询特征只描述查询本身,比如查询长度、搜索意图类型、是否包含地域词,同一查询下的所有文档共享同一份查询特征。文档特征只描述文档自身,比如 PageRank、文档长度、内容新鲜度,它与查询无关,无论用户搜什么,这篇文档的这些属性都不变。交互特征则同时依赖查询与文档,比如 BM25 匹配分、语义相似度、点击率,它们才是刻画“相关不相关”的主力。

三类特征通常以加权方式组合成排序分:

老周把三本账分开记以后,立刻看出门道:客人“要辣的”是需求特征,牛肉面“自带辣度”是菜品特征,而“辣度刚好对上”才是成交的关键——匹配特征。三本账同时看,才能解释为什么有的面“看着好却没人点”。

s(q,d)=α fquery(q)+β fdoc(d)+γ fmatch(q,d)s(q, d) = \alpha \, f_{\text{query}}(q) + \beta \, f_{\text{doc}}(d) + \gamma \, f_{\text{match}}(q, d)
排序分由三块拼成:查询侧特征的分量、文档侧特征的分量、查询与文档交互特征的分量,各自乘以权重后相加。
  1. 权重系数$\alpha, \beta, \gamma$ 分别控制三类特征在总分里的分量,具体数值由模型训练得到。
    α,β,γ\alpha, \beta, \gamma
  2. 查询侧分量$f_{\text{query}}(q)$ 只依赖查询本身,如查询长度、搜索意图,同一查询下所有文档共享该分量。
    fquery(q)f_{\text{query}}(q)
  3. 文档侧分量$f_{\text{doc}}(d)$ 与查询无关,只描述文档自身的质量、热度、新鲜度等属性。
    fdoc(d)f_{\text{doc}}(d)
  4. 匹配分量$f_{\text{match}}(q, d)$ 同时依赖查询与文档,两者相关性越强,该分量越高。
    fmatch(q,d)f_{\text{match}}(q, d)

重要性分析方法

老周想搞清楚哪一味调料真正决定客人回头。他试了三种办法:第一种直接问厨师,看他在做菜时反复强调并严格把控哪一步——这对应树模型的增益重要性;第二种搞盲测,把某一味料偷偷换成普通货,看客人反应——这对应置换检验法;第三种把一碗汤的风味公平分摊到每种材料上,看谁占的份额大——这对应 SHAP 归因。三种方法,从三个角度回答同一个问题。

树模型贡献:看厨师反复强调的步骤。 梯度提升树(GBDT)在建树时,每次分裂都会挑选一个特征,目标是让分裂后的不纯度(如基尼指数)下降最多。一个特征在越多节点上被选中、每次带来的不纯度下降越大,它就越是“决定性因素”。把所有节点上因该特征分裂而产生的不纯度下降累加起来,就得到它的增益重要性:

置换检验法:偷偷换掉一味料。 盲测的逻辑是:把某味料换成随机货色,如果客人立刻不来了,说明这味料至关重要;如果客人完全没反应,说明它可有可无。置换检验正是这么做的——把特征 $j$ 的取值在所有样本间随机打乱,切断它与标签的关联,然后观察排序指标掉了多少。为消除随机性,要重复 $R$ 次取平均:

SHAP 值归因:公平分摊一碗汤的风味。 一碗汤的鲜美由多种材料共同成就,怎么算每种材料的贡献才公平?夏普利值(Shapley value)给出答案:让每种材料依次加入各种“组合”中,看它每次加入带来的增量,再对所有组合求加权平均。SHAP 把每个特征当作博弈中的一个玩家,重要性公式为:

三招齐下,老周得出结论:辣度是关键中的关键,价格是第二要素,而“盘子颜色”纯属噪声。三种方法结论一致,他就敢放心调整配方了——这正对应工程上“多方法交叉验证特征重要性”的做法。

Imp⁡j=∑t∈Tsplit⁡(t)=jΔG(t)\operatorname{Imp}_j = \sum_{\substack{t \,\in\, \mathcal{T} \\ \operatorname{split}(t)=j}} \Delta G(t)
对不包含特征 $i$ 的所有子集 $S$,计算“加入 $i$ 前后模型输出的变化量”,并按组合数加权平均。这是唯一满足可加性、对称性等公理的特征归因方法。
  1. 遍历子集$S \subseteq N \setminus \{i\}$ 遍历除特征 $i$ 外所有特征集合 $N$ 的任意子集组合。
    S⊆N∖{i}S \subseteq N \setminus \{i\}
  2. 组合权重$\frac{|S|!\, (|N| - |S| - 1)!}{|N|!}$ 是每个子集 $S$ 出现的概率权重,保证分配公平。
    ∣S∣! (∣N∣−∣S∣−1)!∣N∣!\frac{|S|!\, (|N| - |S| - 1)!}{|N|!}
  3. 边际贡献$v(S \cup \{i\}) - v(S)$ 是特征 $i$ 加入组合 $S$ 后带来的输出增量。
    v(S∪{i})−v(S)v(S \cup \{i\}) - v(S)

模型解释维度

老周不光想知道整体规律,还想回答客人的质问:“凭什么推荐这碗面给我?”对着一整本账本解释太啰嗦,他需要两种解释:一种是“我家菜单的整体风格”——全局解释;另一种是“这碗面为什么适合你”——局部解释。模型解释也分这两个维度。

全局解释看的是模型整体的行为规律。线性模型可以直接读权重,权重绝对值大的特征通常影响更大;树模型可以把树结构画出来,看哪些特征落在靠近根节点的位置——根节点附近的分裂影响范围最大;平均 SHAP 值则给出所有样本上的总体归因。三种方法都回答“整体而言,什么最重要”。

局部解释则聚焦单个样本:为什么这个查询下,这篇文档得了这个分?对于线性模型,单个特征对某个具体预测的净贡献,可以用权重乘以该特征偏离均值的程度来估计:

老周把“全局解释”做成菜单风格说明,把“局部解释”变成对每位客人的定制回答:“这碗面辣度正好对上你的口味,分量也足。”客人听了信服,推荐榜的信任度就上来了——模型解释的价值,正在于此。

φi(q,d)=wi⋅(xi(q,d)−xˉi)\varphi_i(q, d) = w_i \cdot \bigl(x_i(q, d) - \bar{x}_i\bigr)
特征 $i$ 的权重 $w_i$ 乘以它在当前样本中的取值与全局均值的差,得到它对本次排序分的净贡献。贡献为正则推高排名,为负则拉低排名。
  1. 特征权重$w_i$ 是线性模型中第 $i$ 个特征的斜率,表示该特征每变化一个单位,排序分相应变化多少。
    wiw_i
  2. 均值中心化$x_i(q, d) - \bar{x}_i$ 减去该特征在全量样本上的均值,让“处于平均水平”的样本贡献归零,突出差异化。
    xi(q,d)−xˉix_i(q, d) - \bar{x}_i
  3. 净贡献$\varphi_i(q, d)$ 是特征 $i$ 对这个特定样本的贡献值,可正可负,正是局部解释要展示的量。
    φi(q,d)\varphi_i(q, d)

特征工程实践

老周翻账本时发现一个头疼的问题:辣度和红油量几乎完全同步变化——客人觉得“辣”的时候,其实红油量也高。这两个因素到底是谁在起作用?账本根本分不清。这就是特征工程里的共线性问题,处理不好,重要性分析就会失真。

特征筛选是第一步。先用重要性分析给所有特征排序,把排名垫底、且在消融实验(去掉后指标不降)中无贡献的特征移除。但要注意:重要性低的特征并非永远没用,它可能只是当前分布下不凸显,删除前要结合业务判断。共线性处理更关键:当两个特征的相关系数接近 ±1 时,它们会互相“分摊”重要性,单独看都被低估,相加又会重复计算。这时应结合业务保留其中一个代表特征。相关系数的计算公式是:

解决了共线性,老周还要做稳定性评估:夏天客人爱吃凉面、冬天爱吃热汤面,如果按冬天的账本排夏天的菜单,肯定翻车。特征的重要性会随数据分布漂移而改变,所以要定期重新分析、持续观察特征分布是否稳定。清理完冗余、确认过稳定,这份“配方账本”才算真正可靠。

ρij=Cov⁡(xi,xj)σi σj\rho_{ij} = \frac{\operatorname{Cov}(x_i, x_j)}{\sigma_i \, \sigma_j}
$\rho_{ij}$ 度量特征 $i$ 与特征 $j$ 的线性相关程度,取值在 -1 到 1 之间。绝对值超过 0.8 通常视为强相关,需要处理。
  1. 协方差$\operatorname{Cov}(x_i, x_j)$ 度量两个特征共同变化的趋势,同增同减时为正。
    Cov⁡(xi,xj)\operatorname{Cov}(x_i, x_j)
  2. 标准差归一$\sigma_i \, \sigma_j$ 是两个特征标准差的乘积,把协方差压缩到 $[-1, 1]$ 区间,方便设定统一阈值。
    σi σj\sigma_i \, \sigma_j
  3. 阈值判读$|\rho_{ij}| > 0.8$ 视为强共线,此时两个特征的重要性会相互稀释,不能直接相加解释。
    ∣ρij∣>0.8|\rho_{ij}| > 0.8

工程落地优化

老周的面馆上了正轨,他开始每天盯三个数:客流量、回头客比例、推荐榜上菜品的点单率。一天,回头客突然少了,他没有瞎猜,而是先查账本——发现某味香料最近换了供应商,辣度特征分布明显变了。这就是工程落地的日常:监控、实验、诊断,形成闭环。

在线监控是第一步。模型上线后,要持续监控特征分布是否偏离训练时的分布。常用的指标是 PSI(群体稳定性指标),按分箱比较线上与训练分布:

监控告警之后是实验验证:怀疑某个特征失效,不能直接改线上模型,要先做离线回放或 A/B 实验,验证调整后排序指标确实提升再全量上线。最后是异常诊断:当整体指标下滑时,先看重要性排名前列的特征——如果“价格竞争力”的重要性从 0.15 飙到 0.34,说明流量结构变了,而不是模型坏了。老周靠着这套“监控-实验-诊断”闭环,再也没有因为换错香料而丢失客人。

PSI⁡=∑k(pkonline−pktrain)⋅ln⁡pkonlinepktrain\operatorname{PSI} = \sum_{k} \bigl(p_k^{\text{online}} - p_k^{\text{train}}\bigr) \cdot \ln \frac{p_k^{\text{online}}}{p_k^{\text{train}}}
把特征取值分成若干箱,逐箱比较线上占比与训练占比的偏差并加权求和。PSI 越大,说明该特征分布漂移越严重,模型越可能失效。
  1. 分箱统计$k$ 表示把特征取值切成若干区间(通常 10 箱),$p_k$ 是特征值落在第 $k$ 箱的样本比例。
    pkonline, pktrainp_k^{\text{online}} ,\ p_k^{\text{train}}
  2. 占比之差$p_k^{\text{online}} - p_k^{\text{train}}$ 逐箱比较线上与训练分布的偏差,偏差越大越可疑。
    pkonline−pktrainp_k^{\text{online}} - p_k^{\text{train}}
  3. 对数加权$\ln \frac{p_k^{\text{online}}}{p_k^{\text{train}}}$ 用对数比率放大偏差,PSI 超过 0.25 通常触发告警。
    ln⁡pkonlinepktrain\ln \frac{p_k^{\text{online}}}{p_k^{\text{train}}}

AI 应用场景

场景 1:电商搜索排序的特征体检

阶段:模型监控与迭代优化

解决的问题:搜索排序模型上线后点击率下滑,传统做法只能盯着整体指标曲线猜原因。借助置换检验与 SHAP,可以量化每个特征对排序指标的真实贡献,快速锁定“谁在拖后腿”。

具体案例:某电商平台大促后搜索点击率下降 8%。算法团队对“价格竞争力、物流时效、销量热度”等特征做置换检验,发现“价格竞争力”的重要性从 0.15 飙升至 0.34;进一步用 SHAP 局部归因发现,流量结构从“比价型用户”变成了“冲动型用户”,据此调整排序权重,一周内指标回升。这就像老周发现“客人突然更在意辣度”以后,立刻加大辣度配比。

场景 2:信贷风控模型的合规解释

阶段:模型解释与合规审查

解决的问题:金融机构被监管要求向客户解释拒绝原因,黑箱模型无法直接回答“为什么拒贷”。用 SHAP 对每笔申请做局部归因,可以把总分拆解到每个特征上,给出可解释的结论。

具体案例:某银行信贷模型拒绝了一位小微企业主的申请。风控团队用 SHAP 输出显示,“收入稳定性”贡献为 -0.42、“行业风险等级”贡献为 -0.26,而“历史信用记录”贡献为正。团队结合树模型增益重要性交叉验证结论,最终向客户出具了清晰的拒贷说明。这相当于老周对客人解释:“这碗面不适合你,是因为辣度不对口、分量也不够。”

Python 演示

python35 行
import numpy as npfrom sklearn.ensemble import GradientBoostingRegressorfrom sklearn.inspection import permutation_importance  def build_dataset(n=800):    rng = np.random.RandomState(42)    query_len = rng.randint(1, 10, n).astype(float)    doc_len = rng.randint(50, 600, n).astype(float)    bm25 = 2.0 * np.log1p(doc_len / 50.0) - 0.2 * (query_len - 4) ** 2    click = 0.3 + 0.5 * (bm25 > 3.0) + rng.uniform(0, 0.2, n)    noise = rng.normal(0, 1.0, n)    X = np.column_stack([query_len, doc_len, bm25, click, noise])    y = 1.5 * bm25 + 1.2 * click + 0.3 * query_len + rng.normal(0, 0.1, n)    return X, y  def main():    X, y = build_dataset()    model = GradientBoostingRegressor(n_estimators=100, max_depth=3, random_state=0)    model.fit(X, y)    names = ['query_len', 'doc_len', 'bm25', 'click', 'noise']    print('== 树模型增益重要性 ==')    for name, g in sorted(zip(names, model.feature_importances_), key=lambda t: -t[1]):        print('%-10s %.4f' % (name, g))    print('== 置换检验重要性 ==')    perm = permutation_importance(model, X, y, n_repeats=5, random_state=0)    for name, mean, std in sorted(        zip(names, perm.importances_mean, perm.importances_std), key=lambda t: -t[1]    ):        print('%-10s %.4f (+- %.4f)' % (name, mean, std))  if __name__ == '__main__':    main()
目的:构造一个含 5 个特征的模拟排序数据集,训练梯度提升树,同时输出“树模型增益重要性”和“置换检验重要性”两种结果,演示多方法交叉验证特征重要性的完整流程。
  1. X = np.column_stack([query_len, doc_len, bm25, click, noise])把五个特征拼成训练矩阵,其中 noise 是纯随机噪声,用于验证方法能否识别“无用特征”。
  2. y = 1.5 * bm25 + 1.2 * click + 0.3 * query_len + rng.normal(0, 0.1, n)构造与 bm25、click 强相关的排序分标签,相当于“真实配方”。
  3. model = GradientBoostingRegressor(n_estimators=100, max_depth=3, random_state=0)用 100 棵深度为 3 的树拟合排序分,模拟工业界的 GBDT 排序模型。
  4. model.feature_importances_直接读取树模型按分裂增益算出的重要性,对应文中“看厨师反复强调的步骤”。
  5. permutation_importance(model, X, y, n_repeats=5, random_state=0)重复 5 次随机打乱特征取值并观察指标下降,对应文中“盲测换调料”。
  6. sorted(zip(names, ...), key=lambda t: -t[1])按重要性从高到低排序输出,便于对比两种方法是否一致。

常见误区

误区线性回归里权重大的特征就重要,那树模型和 SHAP 的意义何在?反正都是“系数越大越重要”,直接看权重不就行了?

正解权重大小只在同量纲、无共线性的线性模型中近似成立。树模型的增益重要性来自分裂带来的不纯度下降,SHAP 来自博弈论的公平归因,两者都与“权重”是不同维度的度量。更重要的是,权重有正有负表示方向,重要性恒为非负表示幅度,二者不是一回事。就像老周账本里“辣度 +0.5、甜度 -0.3”里的符号是方向,不能简单说“辣度比甜度重要 0.2”。

为何常见:线性回归是最普及的入门模型,大家习惯了“系数大 = 影响大”,忽略了其他模型的可解释机制完全不同。

误区置换检验不就是把特征值打乱一次、看看指标跌没跌吗?跑一次出结果,简单省事。

正解打乱是随机过程,单次结果方差很大——这次打乱可能恰好没碰到关键样本,下次又可能过度惩罚特征。正确做法是重复几十次取均值,并同时看标准差,才能得到稳定估计。另外,对高度相关的特征做置换,会连带影响其他特征的预测,需要结合业务解读,不能机械看数字。

为何常见:直觉上“打乱一次就能看出区别”,忽略了随机性带来的噪声,这是把统计方法当确定性计算用了。

误区特征 A 重要性 0.3,特征 B 重要性 0.3,它俩高度相关,那“它们一起”的重要性就是 0.6,正好对应一个隐藏因子。

正解共线特征会互相“分摊”重要性,单个看都被低估;直接相加则把同一份信息重复计算了两遍,数值虚高。正确做法是结合业务保留其中一个代表特征,或者对特征做正交化后再分析。就像辣度和红油量明明是一回事,分开记账再相加,等于把一碗辣汤的风味算了两次。

为何常见:以为重要性天然具有可加性,忽略了模型对冗余特征的分配机制是“分蛋糕”而不是“各算各的”。

误区训练时跑一次特征重要性分析,得到排名,以后就照着这个排名决策,不用再看了。

正解特征重要性会随数据分布漂移而变化。大促、新内容类型、用户群体变化,都会改写排名。工业界必须做在线分布监控(如 PSI),并周期性重跑重要性分析。老周如果在冬天排夏天的菜单,八成要赔本——重要性排名也要“换季更新”。

为何常见:把训练时的静态分析当成了永恒结论,忽略了线上环境是动态变化的。

面试题

Q1. 特征重要性最核心的含义是什么?

单选题 · easy

  • A.特征取值的绝对数值大小
  • B.特征对排序结果的贡献程度← 正确答案
  • C.特征在数据库中的存储占用
  • D.特征被采集时的计算开销

答案:B。特征重要性衡量的是特征对模型输出的贡献量,与特征数值大小、存储占用、采集成本无关。就像老周判断“辣度”重不重要,看的是它对客人点单的影响,而不是辣椒放了多少克。

Q2. 下列哪项属于查询侧特征?

单选题 · easy

  • A.网页自身的 PageRank 分值
  • B.文档的正文文本长度
  • C.查询词的搜索意图类型← 正确答案
  • D.文档的更新时间新鲜度

答案:C。查询侧特征只描述查询本身,如查询长度、搜索意图类型,同一查询下所有文档共享。PageRank、文本长度、更新时间都只描述文档,属于文档侧特征。

Q3. 树模型的增益重要性统计的是什么?

单选题 · mid

  • A.特征在样本中出现的频次
  • B.特征各取值去重后的个数
  • C.特征分裂带来的不纯度下降总和← 正确答案
  • D.特征与标签的皮尔逊相关系数

答案:C。增益重要性遍历所有节点,累加每个用该特征分裂的节点带来的不纯度下降量(如基尼指数差)。它关注的是“分裂有多有效”,而不是特征出现次数或取值个数。

Q4. 置换检验法计算特征重要性的方式是?

单选题 · mid

  • A.删除该特征后重新训练模型
  • B.打乱该特征取值后观察指标下降← 正确答案
  • C.把该特征的值全部替换为零
  • D.将该特征与其他特征做线性回归

答案:B。置换检验随机打乱特征取值,切断它与标签的关联,观察排序指标下降多少。下降越多特征越重要。删除重训成本高,替换为零也不是检验“关联破坏”的正确方式。

Q5. SHAP 值归因的理论基础是什么?

单选题 · hard

  • A.纳什均衡中的最优策略问题
  • B.夏普利值的公平分配原则← 正确答案
  • C.泊松分布的事件发生概率
  • D.隐马尔可夫的状态转移过程

答案:B。SHAP 基于博弈论中的夏普利值,把每个特征视为合作博弈的玩家,按边际贡献的加权平均公平分配结果。就像一碗汤的风味要公平分摊到每种材料上,不能只归功于最显眼的辣椒。

Q6. 局部解释解决的核心问题是什么?

单选题 · mid

  • A.判断特征在整体数据上的平均重要性
  • B.解释单个查询文档对的分数构成← 正确答案
  • C.评估模型在测试集上的整体精度
  • D.比较不同损失函数的训练收敛速度

答案:B。局部解释聚焦单个样本,拆解“为什么这个查询下这篇文档得了这个分”,如线性模型中 $w_i(x_i - \bar{x}_i)$ 的逐特征贡献。全局平均重要性和整体精度都不是局部解释的范畴。

Q7. 两个特征相关系数 |ρ| 接近 0.9 时,正确做法是?

单选题 · easy

  • A.全部保留不做任何处理
  • B.结合业务保留一个代表特征← 正确答案
  • C.把两个特征随机丢弃其中一个
  • D.对两个特征归一化后直接相加

答案:B。强共线特征会互相分摊重要性,导致分析失真,应结合业务语义保留其中一个代表特征,而不是全保留或随机丢弃。直接相加则重复计算了共享信息。

Q8. 特征重要性分析在企业中的主要用途包括哪些?

多选题 · mid

  • A.定位线上排序指标突降的根因← 正确答案
  • B.指导新增特征与模型迭代方向← 正确答案
  • C.提升模型预测结果的可解释性← 正确答案
  • D.直接压缩特征存储的数据库空间

答案:ABC。重要性分析用于排错(定位指标突降)、优化(指导特征迭代)、解释(提升可解释性)。它不直接节省数据库存储空间,存储压缩是工程问题而非分析目的。

Q9. 哪些因素可能导致特征重要性判断失真?

多选题 · hard

  • A.特征之间高度共线导致互相分摊← 正确答案
  • B.线上数据分布与训练分布发生偏移← 正确答案
  • C.特征缺失率随渠道变化而波动← 正确答案
  • D.模型训练时的随机种子保持固定

答案:ABC。共线会分摊重要性,分布偏移会改变重要性排名,缺失率波动同样让重要性不可靠。固定随机种子反而保证实验可复现,不会导致失真。

Q10. PSI 指标在工程中主要用于监控什么?

单选题 · extreme

  • A.特征分布相对训练集的漂移程度← 正确答案
  • B.模型参数量随迭代的增长速度
  • C.用户对搜索结果的点击次数统计
  • D.服务器并行处理查询的整体吞吐量

答案:A。PSI(群体稳定性指标)按分箱比较线上分布与训练分布的占比偏差,用于监控特征漂移。PSI 超过阈值说明特征分布已变,模型可能失效,与参数量、点击次数、服务器吞吐量无关。这就像老周发现“换供应商后辣度分布变了”,需要立刻调整配方。