Loading

Shapley Value 学习笔记

Shapley value 用于计算个体对整体的贡献度,它的计算公式如下:

\[\varphi_i(v)=\sum_{S \subseteq N \backslash\{i\}} \frac{|S| !(N-|S|-1) !}{n !}(v(S \cup\{i\})-v(S)) \]

其中,\(v\) 表示是价值函数,返回一个组合的价值。\(S\) 表示一种可能的组合(不包含\(i\), 所以它可能是空集。)。 \(\varphi_i(v)\) 表示个体\(i\)在价值函数\(v\)的情况下,对集体的贡献,\(N\)为所有的用户集合。
下面是对该公式的分析, 将公式做变形,如下:

\[\varphi_i(v)=\frac{1}{|N|} \sum_{S \subseteq N \backslash\{i\}} \tbinom{|N|-1}{|S|}^{-1}(v(S \cup\{i\})-v(S)) \]

(1)\(v(S \cup\{i\})-v(S)\):这里表示一个集合\(S\)包含\(i\)和不包含\(S\),对收益的影响。
(2)\(\tbinom{|N|-1}{|S|}^{-1}\): 表示大小为\(|S|\)的集合可能的个数。这个系数平均了\(i\)对大小为\(|S|\)集合的影响。
(3)\(\frac{1}{|N|}\) 这个系数是对子集大小可能个数的平均。

排列组合公式:\(\tbinom{n}{r} = \frac{n!}{r!(n-r)!}\) 表示从\(n\)个元素选择\(r\)个元素,所有的可能性。

这里为shapley value在可解释领域计算不同特征贡献的简化代码实现,主要用于加深对shapley value的理解。
https://github.com/lif323/simple_kernel_shap
参考:
https://en.wikipedia.org/wiki/Shapley_value
https://zhuanlan.zhihu.com/p/91834300

posted @ 2023-11-01 22:34  lif323  阅读(246)  评论(0编辑  收藏  举报