总主线:XAI 在做什么
所有解释方法,本质都在回答下面四类问题之一:
- 模型整体学到了什么结构?(Global behaviour)
- 某个特征如何影响预测?(Feature effect)
- 为什么这个样本会被这样预测?(Local explanation)
- 如果我想改变结果,最小代价的改变是什么?(Counterfactual)
不同方法,只是在如何近似 / 约束 / 假设上不同。
一、内在可解释模型(Intrinsic Models)
1. 线性回归(Linear Regression)
它到底在干什么(Algorithmic view)
假设真实关系可以用加权求和近似
给定一组参数
,模型在所有样本上产生预测 定义损失函数(通常是 MSE)
解一个最优化问题
- 闭式解(正规方程)或
- 梯度下降
为什么它是“可解释的”
- 模型是线性的
- 每个特征只通过一个系数进入
- 不存在“隐藏结构”
解释时你在看什么
- 方向:
- 强度:
- 基线:
2. 逻辑回归(Logistic Regression)
它为什么不是“线性回归 + 分类”
问题在于:
- 分类要概率
- 线性函数输出是
算法在干什么
先算一个线性打分
用 sigmoid 映射成概率
用交叉熵定义损失
用梯度下降优化参数
解释本质(非常重要)
模型是对 log-odds 线性的
系数解释是:
特征增加 1,赔率乘以
3. GAM(Generalized Additive Model)
它解决了什么问题
- 线性模型太“直”
- 但你又不想引入复杂交互
算法层面怎么做
假设模型形式:
对每个特征
: - 用 spline / basis expansion
- 拟合一个平滑函数
训练时:
- 同时优化所有
- 通常加 smoothness penalty 防止过拟合
- 同时优化所有
为什么还能解释
- 每个特征只影响自己那一项
- 画
就是解释
4. 决策树(Decision Trees)
算法真正做的事
- 从根节点开始,拿到一堆样本
- 对每个候选特征 + 切分点:
- 假装切一刀
- 算切完后左右子集的 entropy / gini
- 选那个让“不纯度下降最多”的切分
- 对左右子集递归重复
- 停止条件:
- 深度限制
- 样本太少
- 不纯度为 0
解释是怎么来的
- 从根到叶 = 一条 IF–THEN 规则
- 树 = 规则集合
二、全局模型无关解释(Global, Model-Agnostic)
统一思想
把模型当成一个函数
,我不管它内部结构,只看输入输出关系
5. PDP(Partial Dependence Plot)
算法一步一步是怎样的
假设你想看特征
- 在一组网格值
上遍历 - 对每个
: - 把数据集中所有样本的
强行设为 - 其他特征保持原样
- 把数据集中所有样本的
- 把这些“改造后的样本”丢进模型
- 对预测结果取平均
- 得到一条曲线
本质假设(必考)
- 特征之间可以自由组合
- 即隐含独立性假设
6. ICE(Individual Conditional Expectation)
算法区别在哪里
- PDP:先算预测 → 再平均
- ICE:每个样本一条曲线
算法:
- 固定一个样本
- 只改它的
- 画出
关系
7. ALE(Accumulated Local Effects)
它为什么复杂
因为它不直接改特征值,而是:
只在“真实数据附近”估计局部变化
算法逐步拆解
把
的取值范围分成区间(bins) 对于每个区间
: - 找出所有
落在该区间的样本
- 找出所有
对这些样本:
把
从 改到 计算预测差:
对差值取平均,得到该区间的“局部效应”
从最小区间开始 累积(integrate)
最后整体中心化(减去均值)
关键理解
- ALE ≈ 对
的积分 - 但只在数据密度高的地方算
8. 特征交互 & H-statistic
H 在算什么(直觉)
- 先算二维 PDP:
- 再减去两个一维 PDP 的和
- 看“剩下那部分”的方差占比
你要记住的
- H 是 标量
- 只告诉你“交互强不强”
- 不告诉你“交互形状”
9. Functional ANOVA
它到底在干什么
把黑箱函数当成一个数学函数,做正交分解
算法思想
定义:
对每个特征:
对交互项:
递归扩展到高阶
为什么都“和为 0”
- 每一项都做了中心化
- 保证分解唯一、可加
10. PFI(Permutation Feature Importance)
算法完全展开
- 在原始数据上算 baseline loss
- 对某特征列:
- 随机打乱该列
- 保持其他列不变
- 用同一个模型重新预测
- 新 loss − 原 loss = 重要性
本质
- 人为破坏特征–标签关联
- 看模型“有多痛”
三、局部模型无关解释(Local)
11. LIME
算法逐行展开
- 给定样本
- 在其附近采样:
- 连续特征:Gaussian / Uniform
- 离散特征:随机替换
- 用黑箱模型预测这些样本
- 计算每个采样点到
的距离 - 用核函数把距离转成权重
- 训练一个简单模型(线性 / 小树)
- 用这个模型解释
核心弱点
- 采样不稳定
- 不考虑数据分布
- 高维下邻域难定义
改进
LEMON(Local Explanation via Minimal Overlap Neighbourhood)
LEMON(Local Explanation via Minimal Overlap Neighbourhood)
1️⃣ 为什么提出 LEMON
LIME 的邻域采样是“以点为中心”,但在高维空间中:
- “靠近中心点” ≠ “对分类有影响”
- 真正有信息的是 靠近决策边界的区域
LEMON 的想法是:
不要围着一个点采样,而是围着一个“局部区域”采样
2️⃣ LEMON 的核心思想
从“点邻域” → “球邻域(N-ball)”
- LIME:以样本点
为中心采样 - LEMON:以
为中心,定义一个 n 维球体区域
并且:
- 明确球的 半径
- 明确球内样本的 空间约束
3️⃣ LEMON 的算法流程(逐步)
Step 1:确定中心点
- 仍然从待解释样本
出发
Step 2:定义一个 N-ball 邻域
- 在高维空间中定义:
- 半径
可设定或自适应
Step 3:在 N-ball 内采样
- 只允许在球体内采样
- 避免远离
的“假邻居”
Step 4:黑箱预测 + 距离加权
- 同 LIME:
- 用黑箱模型预测
- 距离越近,权重越大
Step 5:拟合局部可解释模型
- 线性模型 / 小决策树
- 得到局部解释
ORANGE(Optimized Randomized ANchored Geometric Explanation)
核心目标:让 LIME 的“邻域”在“数据分布 + 决策边界 + 可行性”上都合理
1️⃣ 为什么提出 ORANGE
ORANGE 直接针对 LIME 的三大硬伤:
- ❌ 不考虑数据分布
- ❌ 不靠近决策边界
- ❌ 生成不可行样本(尤其是混合型特征)
2️⃣ ORANGE 的核心思想(三句话)
- 邻域应当落在 真实数据流形上
- 解释应围绕 最近的决策边界点
- 采样应遵守 特征类型与可行性约束
3️⃣ ORANGE 的算法流程(非常重要)
Step 1:找到最近的决策边界点(Critical step)
- 从原样本
出发 - 沿着梯度 / 搜索方向
- 找到最近的
,使:
👉 解释中心从 x → 决策边界点
Step 2:把边界点作为解释中心
- ORANGE 不再围绕原始样本解释
- 而是围绕 最小翻转点
Step 3:基于数据分布进行采样
- 采样不再是纯随机
- 而是:
- 使用训练数据
- 或基于密度估计
- 保证样本落在“真实数据区域”
Step 4:处理混合特征的可行性
- 连续特征:局部扰动
- 类别特征:合法类别切换
- 整数特征:保持整数
- 逻辑约束:不生成非法组合
Step 5:拟合局部可解释模型
- 与 LIME 相同
- 但训练数据 质量更高
12. Anchors
算法思想
与其近似整个局部函数,不如找一条预测稳定的条件规则
算法做什么
- 构造候选谓词(feature = value / range)
- 用 bandit / greedy 搜索:
- 不断加条件
- 测试 precision 是否 ≥ 阈值
- 在满足 precision 的前提下:
- 最大化 coverage
- 最小化谓词数
13. SHAP
算法本质
- 把预测看成“合作博弈的收益”
- 特征是玩家
计算逻辑
枚举特征子集
比较:
按 Shapley 权重加权平均
为什么昂贵
- 子集数是指数级
- 实践中用近似(TreeSHAP 等)
四、反事实解释(Counterfactuals)
14. Counterfactual 的统一数学形式
$$
\min_{x’};; \lambda \cdot \underbrace{\mathcal{L}(f(x’), y_{\text{target}})}{\text{让预测变成目标}}
;+;
\underbrace{d(x, x’)}{\text{离原样本尽量近}}
;+;
\underbrace{\Omega(x, x’)}_{\text{稀疏/可行/约束等}}
$$
- 怎么定义距离
- 怎么约束可行性
- 是否要多个解
- 是否要求数据支撑
15. Growing Spheres
算法直觉
- 从 x 出发,向外“扩球”
- 找最近的预测翻转点
- 固定标签后,做特征选择
- 删除不必要的改动(稀疏)
16. DiCE
做了什么额外的事
- 同时优化 多个
- 加 diversity term,防止所有解都一样
17. JUICE / iJUICE
核心额外约束
反事实必须有 justifiers
iJUICE 怎么做
- 把问题写成整数规划
- 同时优化:
- 距离
- justifier 数量
- 解出来的是“被数据支持的反事实”
五、神经网络与时间序列(高层)
18. Feature Visualization
- 固定权重
- 对输入做梯度上升
- 最大化某个神经元激活
19. CNN 可解释性
- Saliency:
- Grad-CAM:对最后卷积层加权
- SmoothGrad:对梯度做噪声平均
20. Z-Time(时间序列)
算法思想
- 把数值序列转成 事件区间
- 挖掘区间之间的时间关系
- 把关系当成特征
- 用线性/规则模型分类