机器学习的模型解释方法

张开发
2026/6/7 22:03:24 15 分钟阅读
机器学习的模型解释方法
模型解释在机器学习飞速发展的今天模型的预测准确率越来越高但我们却常常面临一个尴尬的问题模型为什么给出这个预测特别是在医疗、金融、司法、自动驾驶等高风险领域如果我们无法解释模型的决策就很难获得用户的信任也难以满足监管要求。模型解释是指将复杂的机器学习模型决策过程变得人类可理解的技术。它主要回答两个层次的问题局部解释Local Explanation针对单个样本模型为什么做出这个预测每个特征分别贡献了多少全局解释Global Explanation从整体上看模型依赖哪些特征特征如何影响预测结果好的模型解释方法需要同时具备准确性、稳定性、一致性和可理解性。目前主流的模型解释方法方法名称作用范围核心思想优点缺点SHAP全局 局部基于合作博弈论Shapley值公平分配每个特征对预测的贡献理论基础坚实、满足一致性、统一全局与局部解释计算复杂度高精确算法为指数级LIME局部在预测点附近生成扰动样本用局部可解释模型如线性模型近似原模型速度快、直观、适合单个预测解释解释结果不稳定、选择邻域半径敏感排列重要性全局打乱单个特征的值观察模型预测误差的变化幅度简单快速、模型无关、易于实现无法区分正负影响、对相关特征敏感部分依赖图 (PDP)全局固定其他特征让目标特征在其取值范围内变化绘制平均预测值曲线直观展示边际效应、可视化效果好最多只能同时展示两个特征、可能掩盖异质性正负抵消ICE曲线局部 → 全局为每个样本单独绘制预测值随特征变化的曲线揭示个体异质性、弥补PDP的不足曲线过多时不易阅读、需配合PDP使用全局代理模型全局用可解释模型如线性回归、决策树近似黑盒模型的预测灵活、可解释性强、适用于任何黑盒模型引入近似误差、代理模型本身可能不准确对比解释 (Counterfactual)局部寻找最小的特征改动使得模型预测结果改变帮助理解决策边界、可操作性强对特征相关性敏感、可能不存在可行解基于梯度的方法 (Saliency Map)局部计算输入对输出的梯度反映输入的微小变化对预测的影响适合深度学习模型图像/文本、计算高效只能解释局部敏感度、梯度饱和问题集成梯度 (Integrated Gradients)局部沿基线到输入的直线路径积分梯度满足公理解决梯度饱和、满足敏感性与实现不变性需要模型可微、基线选择影响结果树模型原生重要性全局基于分裂次数、不纯度减少如Gini重要性或覆盖度计算极快、与树模型RF/XGBoost无缝集成仅适用于树模型、不同指标可能矛盾内在可解释模型全局模型结构本身简单如线性回归、逻辑回归、小深度决策树天生可解释、无需事后分析表达能力有限、精度通常低于黑盒模型这里以最常用的 SHAP 方法为例。SHAP 起源SHAP全称是 SHapley Additive exPlanation属于模型事后解释的方法可以对复杂机器学习模型进行解释。虽然来源于合作博弈论但只是以该思想作为载体。在进行局部解释时SHAP的核心是计算其中每个特征变量的Shapley Value。Shapley代表对每个样本中的每一个特征变量都计算出它的 Shapley Value。Additive代表对每一个样本而言特征变量对应的 shapley value是可加的。exPlanation代表对单个样本的解释即每个特征变量是如何影响模型的预测值。示例根据已知记v(A)100v(B)125v(C)50v(A,B)270v(B,C)350v(A,C)375v(A,B,C)500v(A) 100v(B) 125v(C) 50v(A,B) 270v(B,C) 350v(A,C) 375v(A,B,C) 500v(A)100v(B)125v(C)50v(A,B)270v(B,C)350v(A,C)375v(A,B,C)500概率顺序A 的边际贡献B 的边际贡献C 的边际贡献1/6A, B, Cv(A)100v(A) 100v(A)100v(A,B)−v(A)170v(A,B) - v(A) 170v(A,B)−v(A)170v(A,B,C)−v(A,B)230v(A,B,C) -v(A,B) 230v(A,B,C)−v(A,B)2301/6A, C, Bv(A)100v(A) 100v(A)100v(A,B,C)−v(A,C)125v(A,B,C) - v(A,C) 125v(A,B,C)−v(A,C)125v(A,C)−v(A)275v(A,C) -v(A) 275v(A,C)−v(A)2751/6B, A, Cv(A,B)−v(B)145v(A,B) - v(B) 145v(A,B)−v(B)145v(B)125v(B) 125v(B)125v(A,B,C)−v(A,B)230v(A,B,C) -v(A,B) 230v(A,B,C)−v(A,B)2301/6B, C, Av(A,B,C)−v(B,C)150v(A,B,C) -v(B,C) 150v(A,B,C)−v(B,C)150v(B)125v(B) 125v(B)125v(B,C)−v(B)225v(B,C) -v(B) 225v(B,C)−v(B)2251/6C, A, Bv(A,C)−v(C)325v(A,C) -v(C) 325v(A,C)−v(C)325v(A,B,C)−v(A,C)125v(A,B,C) -v(A,C) 125v(A,B,C)−v(A,C)125v(C)50v(C) 50v(C)501/6C, B, Av(A,B,C)−v(B,C)150v(A,B,C) -v(B,C) 150v(A,B,C)−v(B,C)150v(B,C)−v(C)300v(B,C) -v(C) 300v(B,C)−v(C)300v(C)50v(C) 50v(C)50Shapley Value161.67161.67176.67Ratio32.3332.3335.33SHAP 计算公式ϕi(f,x)∑z′⊆x′∣z′∣!(M−∣z′∣−1)!M![fx(z′)−fx(z′∖i)] \phi_i(f, x) \sum_{z \subseteq x} \frac{|z|!(M - |z| - 1)!}{M!} \left[ f_x(z) - f_x(z \setminus i) \right]ϕi​(f,x)z′⊆x′∑​M!∣z′∣!(M−∣z′∣−1)!​[fx​(z′)−fx​(z′∖i)]z′zz′表示当前已加入的特征联盟哪些特征“在场”。是一个与特征数一样长的0/10/10/1项量∣z′∣|z|∣z′∣当前联盟大小。为111的个数MMM表示特征的个数iii表示要当前计算的特征fx(z′)f_x(z)fx​(z′)是加入iii之后模型在该联盟下的预测值fx(z′∖i)f_x(z \setminus i)fx​(z′∖i)是加入iii之前模型在该联盟下的预测值公式本质是该特征在所有可能的特征子集组合下的边际贡献的加权平均值该个体特征AAA的 shapely value 计算联盟个数概率特征边际效应特征 shapley value空集 {}0000!×2!/61×2/61/30! × 2! / 6 1×2/6 1/30!×2!/61×2/61/3v(A)−v()100−0100v({A}) − v({}) 100 − 0 100v(A)−v()100−0100(1/3)×100≈33.33(1/3)×100 ≈ 33.33(1/3)×100≈33.33{BBB}1111!×1!/61×1/61/61! × 1! / 6 1×1/6 1/61!×1!/61×1/61/6v(A,B)−v(B)270−125145v({A,B}) − v({B}) 270 − 125 145v(A,B)−v(B)270−125145(1/6)×145≈24.17(1/6)×145 ≈ 24.17(1/6)×145≈24.17{CCC}1111!×1!/61/61! × 1! / 6 1/61!×1!/61/6v(A,C)−v(C)375−50325v({A,C}) − v({C}) 375 − 50 325v(A,C)−v(C)375−50325(1/6)×325≈54.17(1/6)×325 ≈ 54.17(1/6)×325≈54.17{B,CB,CB,C}2222!×0!/62×1/61/32! × 0! / 6 2×1/6 1/32!×0!/62×1/61/3v(A,B,C)−v(B,C)500−350150v({A,B,C}) − v({B,C}) 500 − 350 150v(A,B,C)−v(B,C)500−350150(1/3)×15050.00(1/3)×150 50.00(1/3)×15050.00特征AAA的ShapleyShapleyShapleyvalue33.3324.1754.1750.00161.67value 33.33 24.17 54.17 50.00 161.67value33.3324.1754.1750.00161.67详细参考https://shap.readthedocs.io/en/latest/https://www.bilibili.com/video/BV16qAsevEvJ/?spm_id_from333.1387.favlist.content.clickvd_sourcea156500106bde05b0c01060829d50c66https://www.bilibili.com/video/BV1DG4y1b7V5/?spm_id_from333.337.search-card.all.clickvd_sourcea156500106bde05b0c01060829d50c66

更多文章