XAI.FINAL | 复习总纲
0x00A0

总主线:XAI 在做什么

所有解释方法,本质都在回答下面四类问题之一:

  1. 模型整体学到了什么结构?(Global behaviour)
  2. 某个特征如何影响预测?(Feature effect)
  3. 为什么这个样本会被这样预测?(Local explanation)
  4. 如果我想改变结果,最小代价的改变是什么?(Counterfactual)

不同方法,只是在如何近似 / 约束 / 假设上不同。


一、内在可解释模型(Intrinsic Models)

1. 线性回归(Linear Regression)

它到底在干什么(Algorithmic view)

  1. 假设真实关系可以用加权求和近似

  2. 给定一组参数,模型在所有样本上产生预测

  3. 定义损失函数(通常是 MSE)

  4. 解一个最优化问题

    • 闭式解(正规方程)或
    • 梯度下降

为什么它是“可解释的”

  • 模型是线性的
  • 每个特征只通过一个系数进入
  • 不存在“隐藏结构”

解释时你在看什么

  • 方向
  • 强度
  • 基线

2. 逻辑回归(Logistic Regression)

它为什么不是“线性回归 + 分类”

问题在于:

  • 分类要概率
  • 线性函数输出是

算法在干什么

  1. 先算一个线性打分

  2. 用 sigmoid 映射成概率

  3. 用交叉熵定义损失

  4. 用梯度下降优化参数

解释本质(非常重要)

  • 模型是对 log-odds 线性的

  • 系数解释是:

    特征增加 1,赔率乘以


3. GAM(Generalized Additive Model)

它解决了什么问题

  • 线性模型太“直”
  • 但你又不想引入复杂交互

算法层面怎么做

  1. 假设模型形式:

  2. 对每个特征

    • 用 spline / basis expansion
    • 拟合一个平滑函数
  3. 训练时:

    • 同时优化所有
    • 通常加 smoothness penalty 防止过拟合

为什么还能解释

  • 每个特征只影响自己那一项
  • 就是解释

4. 决策树(Decision Trees)

算法真正做的事

  1. 从根节点开始,拿到一堆样本
  2. 对每个候选特征 + 切分点:
    • 假装切一刀
    • 算切完后左右子集的 entropy / gini
  3. 选那个让“不纯度下降最多”的切分
  4. 对左右子集递归重复
  5. 停止条件:
    • 深度限制
    • 样本太少
    • 不纯度为 0

解释是怎么来的

  • 从根到叶 = 一条 IF–THEN 规则
  • 树 = 规则集合

二、全局模型无关解释(Global, Model-Agnostic)

统一思想

把模型当成一个函数,我不管它内部结构,只看输入输出关系


5. PDP(Partial Dependence Plot)

算法一步一步是怎样的

假设你想看特征

  1. 在一组网格值上遍历
  2. 对每个
    • 把数据集中所有样本强行设为
    • 其他特征保持原样
  3. 把这些“改造后的样本”丢进模型
  4. 对预测结果取平均
  5. 得到一条曲线

本质假设(必考)

  • 特征之间可以自由组合
  • 即隐含独立性假设

6. ICE(Individual Conditional Expectation)

算法区别在哪里

  • PDP:先算预测 → 再平均
  • ICE:每个样本一条曲线

算法:

  1. 固定一个样本
  2. 只改它的
  3. 画出

关系


7. ALE(Accumulated Local Effects)

它为什么复杂

因为它不直接改特征值,而是:

只在“真实数据附近”估计局部变化

算法逐步拆解

  1. 的取值范围分成区间(bins)

  2. 对于每个区间

    • 找出所有落在该区间的样本
  3. 对这些样本:

    • 改到

    • 计算预测差:

  4. 对差值取平均,得到该区间的“局部效应”

  5. 从最小区间开始 累积(integrate)

  6. 最后整体中心化(减去均值)

关键理解

  • ALE ≈ 对的积分
  • 但只在数据密度高的地方算

8. 特征交互 & H-statistic

H 在算什么(直觉)

  1. 先算二维 PDP:
  2. 再减去两个一维 PDP 的和
  3. 看“剩下那部分”的方差占比

你要记住的

  • H 是 标量
  • 只告诉你“交互强不强”
  • 不告诉你“交互形状”

9. Functional ANOVA

它到底在干什么

把黑箱函数当成一个数学函数,做正交分解

算法思想

  1. 定义:

  2. 对每个特征:

  3. 对交互项:

  4. 递归扩展到高阶

为什么都“和为 0”

  • 每一项都做了中心化
  • 保证分解唯一、可加

10. PFI(Permutation Feature Importance)

算法完全展开

  1. 在原始数据上算 baseline loss
  2. 对某特征列:
    • 随机打乱该列
    • 保持其他列不变
  3. 用同一个模型重新预测
  4. 新 loss − 原 loss = 重要性

本质

  • 人为破坏特征–标签关联
  • 看模型“有多痛”

三、局部模型无关解释(Local)

11. LIME

算法逐行展开

  1. 给定样本
  2. 在其附近采样:
    • 连续特征:Gaussian / Uniform
    • 离散特征:随机替换
  3. 用黑箱模型预测这些样本
  4. 计算每个采样点到的距离
  5. 用核函数把距离转成权重
  6. 训练一个简单模型(线性 / 小树)
  7. 用这个模型解释

核心弱点

  • 采样不稳定
  • 不考虑数据分布
  • 高维下邻域难定义

改进

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 的三大硬伤:

  1. ❌ 不考虑数据分布
  2. ❌ 不靠近决策边界
  3. ❌ 生成不可行样本(尤其是混合型特征)
2️⃣ ORANGE 的核心思想(三句话)
  1. 邻域应当落在 真实数据流形上
  2. 解释应围绕 最近的决策边界点
  3. 采样应遵守 特征类型与可行性约束
3️⃣ ORANGE 的算法流程(非常重要)
Step 1:找到最近的决策边界点(Critical step)
  • 从原样本出发
  • 沿着梯度 / 搜索方向
  • 找到最近的,使:

👉 解释中心从 x → 决策边界点

Step 2:把边界点作为解释中心
  • ORANGE 不再围绕原始样本解释
  • 而是围绕 最小翻转点
Step 3:基于数据分布进行采样
  • 采样不再是纯随机
  • 而是:
    • 使用训练数据
    • 或基于密度估计
    • 保证样本落在“真实数据区域”
Step 4:处理混合特征的可行性
  • 连续特征:局部扰动
  • 类别特征:合法类别切换
  • 整数特征:保持整数
  • 逻辑约束:不生成非法组合
Step 5:拟合局部可解释模型
  • 与 LIME 相同
  • 但训练数据 质量更高

12. Anchors

算法思想

与其近似整个局部函数,不如找一条预测稳定的条件规则

算法做什么

  1. 构造候选谓词(feature = value / range)
  2. 用 bandit / greedy 搜索:
    • 不断加条件
    • 测试 precision 是否 ≥ 阈值
  3. 在满足 precision 的前提下:
    • 最大化 coverage
    • 最小化谓词数

13. SHAP

算法本质

  • 把预测看成“合作博弈的收益”
  • 特征是玩家

计算逻辑

  1. 枚举特征子集

  2. 比较:

  3. 按 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

算法直觉

  1. 从 x 出发,向外“扩球”
  2. 找最近的预测翻转点
  3. 固定标签后,做特征选择
  4. 删除不必要的改动(稀疏)

16. DiCE

做了什么额外的事

  • 同时优化 多个
  • 加 diversity term,防止所有解都一样

17. JUICE / iJUICE

核心额外约束

反事实必须有 justifiers

iJUICE 怎么做

  • 把问题写成整数规划
  • 同时优化:
    • 距离
    • justifier 数量
  • 解出来的是“被数据支持的反事实”

五、神经网络与时间序列(高层)

18. Feature Visualization

  • 固定权重
  • 对输入做梯度上升
  • 最大化某个神经元激活

19. CNN 可解释性

  • Saliency:
  • Grad-CAM:对最后卷积层加权
  • SmoothGrad:对梯度做噪声平均

20. Z-Time(时间序列)

算法思想

  1. 把数值序列转成 事件区间
  2. 挖掘区间之间的时间关系
  3. 把关系当成特征
  4. 用线性/规则模型分类
 BUY ME A CUPPA!
Powered by Hexo & Theme Keep
This site is deployed on
Unique Visitor Page View