The permutation feature importance、PDP(部分依赖图,Partial Dependence Plot)、SHAP值简述

一、The permutation feature importance

置换特征重要性仅对感兴趣的目标特征{_{X}}^{}_{j}进行置换,具体的公式如下:

假设{_{X}}^{}_{j}={_{X}}^{}_{1},保持其他特征值不变,仅仅对{_{X}}^{}_{1}进行打乱,并把每次打乱后的模型损失函数计算出来,重复R次即可得到特征{_{X}}^{}_{1}的重要性。

不难发现,The permutation feature importance仅能用于特征的全局解释

图例:

二、PDP(部分依赖图,Partial Dependence Plot)

TPFI是固定除了Xj以外的所有特征值。

PDP则是固定Xj的的特征值,并假设所有的特征是独立的,然后将其他所有的特征值进行组合。具体公式如下:

实例中的特征值往往是离散的,即使是离散,计算量依然很大。

假设|xi|代表特征xi集合的大小,那么计算一个特征xj=1的PDP值就需要对特征j以外的所有特征集合大小相乘。即计算次数为:\prod_{i=1}^{n} |x_{i}|,且i≠j。

因此,实际中使用样本数n来代替\prod_{i=1}^{n} |x_{i}|,用某一样本的Xc取值来代替原本的组合。近似计算公式如下:

实例:

样本特征1特征2特征3
样本1159
样本2268
样本3377
样本4486

假设{_{X}}^{}_{j}={_{X}}^{}_{1},将所有的X1替换为X1=X1i,并把预测值计算出来取均值即可得到x1i的PDP值,重复i次即可得到绘制PDP图所需的点。下图是以X1=1为例。

样本特征1特征2特征3
样本1159
样本2168
样本3177
样本4186

可以设想,如果不进行近似计算,特征2的取值有4个:{5,6,7,8},特征3的取值有4个:{6,7,8,9},因此计算特征1=1时的PDP值(即下图的一个点),需要4*4=16次,然后取均值。如果样本的特征维度比较高,则需要更多次计算。以分子指纹为例,如果生成的二进制分子指纹维度为2048,每一位取值为0或1,那么想要绘制PDP图中的一个点,就需要2^2048次计算

而使用近似计算后,对于上述的实例,仅需要计算n=4次。对于分子指纹的例子,也仅需样本数n次计算。

不难发现,PDP不仅能用于特征的全局解释,也可以进行局部解释。即目标变量与某特征具体取值之间的关系。

图例:

局部解释

如果需要全局解释,对所有特征的yhat分别取均值绘图即可。

三、SHAP值

以下是对样本集内样本j特征xi的shap值定义:

理论上,一个集合的子集有2^n个,本例中也就是需要进行2^S次求和。

但在实际的计算中,面临两个问题:

第一:如何划分子集S?

如果按照理论来计算,高纬度的特征计算量将非常的大。且需要对所有的样本、特征进行计算。

假设样本数为n,特征数量为m,那么需要的计算次数为:m*n*2^{^{m-1}}

第二:如何代表该特征未被选择?

由于上述两个问题处理方式可能有很多,因此无法结合实际给出具体的计算过程。

下面只给出一个理论上的计算过程

如此,我们就得到了一个样本的特征x1的shap值,计算全部样本即可得到所有样本特征x1的shap值。这样就可以计算特征重要度了。之后想要出什么图,就看怎么操作了。

不难发现,shap值不但可以用于局部解释,还可以用于全局解释。即每个特征在该实例上的具体贡献,从而解释模型对该实例的预测,这种局部解释有助于理解模型的决策过程,

关于shap值是否考虑了特征之间的交互效应,这需要依据S子集的划分方式来确定,按照理论上的方式来计算,确实是考虑了交互效应。

图例:

局部解释

全局解释

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值