shapley值分解

基于基尼系数的shapley值分解代码实现,万广华森北用的那个java软件,求发一份!

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这篇博客也许可以解决你的问题👉 :基于 shapley-value 的可解释方法及 shap 库实现
  • 除此之外, 这篇博客: 归因分析笔记5:机器学习可解释性中的 Shapley值的数学定义与计算 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    求的目标是: 每个特征如何影响数据点的预测

    线性模型例子

    一个样本的预测\( \hat{f}(x) \):

    $$ \hat{f}(x)=\beta_0+\beta_{1}x_{1}+\ldots+\beta_{p}x_{p} $$

    其中 x 是我们要计算贡献的样本。每个xj 是一个特征值,其中 j = 1,...,p, βj是特征 j 对应的权重.

    预测\( \hat{f}(x) \)时候的第 j 个特征的贡献φj是:

    $$ \phi_j(\hat{f})=\beta_{j}x_j-E(\beta_{j}X_{j})=\beta_{j}x_j-\beta_{j}E(X_{j}) $$

    其中E(βjXj)是特征 j 的平均效应估计值。贡献是特征效果(feature effect)减去平均效果(average effect)之间的差值.

    现在我们知道每个特征对预测的贡献有多大。如果我们对该个样本的各个特征贡献求和:

    $$ \begin{align*}\sum_{j=1}^{p}\phi_j(\hat{f})=&\sum_{j=1}^p(\beta_{j}x_j-E(\beta_{j}X_{j}))\\=&(\beta_0+\sum_{j=1}^p\beta_{j}x_j)-(\beta_0+\sum_{j=1}^{p}E(\beta_{j}X_{j}))\\=&\hat{f}(x)-E(\hat{f}(X))\end{align*} $$

    即数据点 x 的预测值减去平均预测值. (特征贡献可能为负)

    在其他模型类型中没有类似的权重,因此我们需要不同的解决方案: 合作博弈论(cooperative game theory)

    通用方法

    Shapley 值通过玩家的值函数val定义, 其中玩家包含在特征集合S中.

    其中Shapley值是特征对预测的贡献;价值函数是玩家联盟(特征值)的支付函数(payout function)

    特征值的 Shapley 值是其对支出的贡献,对所有可能的特征值组合进行加权求和:

    $$ \phi_j(val)=\sum_{S\subseteq\{1,\ldots,p\}\setminus\{j\}}\frac{|S|!\left(p-|S|-1\right)!}{p!}\left(val\left(S\cup\{j\}\right)-val(S)\right) $$

    其中 S 是模型使用特征的子集,x 是要解释的样本的特征值的向量,p 是特征个数. 有特征j的值函数与无特征j的值函数作差.

    \( val_{x}(S) \)是对集合 S 中特征值的预测, 对于未包含在集合 S 中的特征进行边缘化(marginalize):

    $$ val_{x}(S)=\int\hat{f}(x_{1},\ldots,x_{p})d\mathbb{P}_{x\notin{}S}-E_X(\hat{f}(X)) $$

    这为不属于 S 的每个特征进行多重积分(multiple integrations)。

    一个具体的例子:机器学习模型使用4个特征x1,x2,x3和x4,我们评估由特征值x1和x3组成的联盟S的预测:

    $$ val_{x}(S)=val_{x}(\{1,3\})\\ =\int_{\mathbb{R}}\int_{\mathbb{R}}\hat{f}(x_{1},X_{2},x_{3},X_{4})d\mathbb{P}_{X_2X_4}-E_X(\hat{f}(X)) \\ 对X_2X_4的概率分布\mathbb P_{X_2X_4}积分, 即对含X_2X_4的联合概率边缘化(消除变量:特征值X_2X_4的分布的影响) $$

    它的形式与线性模型中的特征贡献类似.

    但是一般边缘化的积分变量不带P来着

    $$ f_{X}(x)=\int_{-\infty}^{+\infty} f(x, y) d y $$

    好像能理解作者的意图了

    因为单纯特征值X2X4在此处是无意义的, 特征值分布才对f有意义

    如下才是错的:

    $$ \int_{\mathbb{R}}\int_{\mathbb{R}}\hat{f}(x_{1},X_{2},x_{3},X_{4})dX_2 dX_4-E_X(\hat{f}(X))  $$


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^