在讲 Kernel-Shap 之前, 先引入预备知识 LIME.
Lime, Local Interpretable Model-Agnostic Explanations, 是 2017 年提出的一种模型无关的单样本预测解释方法(详见参考[9]). 核心思想是对于要解释的样本
, 把其特征划分为若干个组, 然后对此作局部采样, 得到新的人造样本集合 S. 然后
训练新的线性代理模型去学习原模型在样本S附近上的输出
.
公式化的表达就是:
\xi(x)=\underset{g \in G}{\operatorname{argmin}} \ L \left(f, g, \pi_x\right)+\Omega(g) \tag 3
ξ
(
x
)
=
g
∈
G
argmin
L
(
f
,
g
,
π
x
)
+
Ω
(
g
)
(
3
)
Ω
(
⋅
)
限制着g的复杂程度.
图 使用 lime 可解释洞察到模型误把哈士奇(Husky) 预测为狼(Wolf)的原始是只关注到了雪地(snow)这一因素
上图是 lime 论文中的一个素材. 图片的原始特征是像素, 它就通过
选取图像区域 作 super-pixel 的集合映射. 通过可解释分析, 验证了模型学到了预期之外的狼与雪地之间的相关性, 而没有学到因果层面的相关性.
Kernal Shap method 是 LIME + Shapley values 的结合体. 乍一看式(2)与式(3)相去甚远, 但论文中讲到
-
LIME 是一种特征可加性方法(additive feature attribution method);
-
可加性方法中, 存在满足 {Local accuracy, Missingness, Consistency} 三大特性的唯一解;
-
而 shap-values 又是符合 LIME 方程约束下的同时具有上句提到的三大特性的唯一解.
就这么一通牵扯, 将二者结合到了一起.
LIME 呢, 可以解读为一种范式而不是确切的一个算法, 因为 loss function
Ω
的选取都是缺乏指导的, 而 Kernel Shap 将其作了具化, 满足了上文提到的三大特性.
图. 截取自原论文.
SH
apley
A
dditive ex
P
lanation, 是一个py 三方库, 依据
合作博弈论
领域 中的
shapley value
思想, 对模型的
单个预测
作解释.
它把特征比作博弈问题中的玩家, 模型预测比喻玩家合作之后的收益, 于是就顺畅了.
论文[4] 中, 它是这么说的:
“已有的多种方法 LIME, DeepLift 等, 它们之间的联系是啥? 什么情况下, 用其中一种会比另一种更好用?” 难以回答, 而它引入了 shapley 思想作了统一, 既有计算效率上的优化, 又更符合人类直觉.
基于 KernelSHAP 的实现的解释器叫 KernalExplainer.
-
传入待解释样本, 计算待解释的特征个数M
-
构造不同组合的合成(人造)样本
-
维护 maskMatrix, 样子见下:
-
计算合成样本的输出
通过调用 run() 实现.
-
求解重要性
这里其实我不太懂. 原公式只是列出了单个特征的重要性求解方法. 但在 solve() 方法实现中, 是批量一次性求解的. 这里面的等价推导shap库没有给出讲解.
作了精简, 解读就在注释中.