使用SHAP的KernelExplainer计算全局和局部归因
1. 为什么使用KernelExplainer
置换方法通过改变输入来评估其对模型输出的影响。Shapely值是这一过程的结果,具有可加性和对称性等重要数学性质。然而,对于非小数据集,计算Shapely值的成本很高,因此SHAP库提供了近似方法,其中之一就是KernelExplainer。
在处理深度学习模型时,对于卷积神经网络(CNN)等,我们可能会使用SHAP的DeepExplainer。但对于多变量时间序列数据,DeepExplainer存在局限性。因为它无法处理输入的三维数组,且时间序列数据包含先前时间步的数据,不能在不考虑先前时间步的情况下对某一时间步进行置换。
而SHAP的KernelExplainer可以接收任意黑盒预测函数,并且可以在置换输入数据之前对其进行修改,使其看起来像是在处理表格数据集。
2. 定义多变量时间序列模型的策略
为了根据置换后的输入数据模拟可能的过去天气模式,我们可以创建生成模型,但这种方法非常耗时,因此不采用。
我们选择从现有的 gen_all 生成器中找到最适合置换输入的时间序列数据。使用距离度量来找到最接近置换输入的观测值,但需要设置过滤函数,以确保只找到相同星期几(dow)、是否为节假日(is_holiday)和小时(hr)的最接近观测值。过滤函数还可以清理置换样本,去除或修改对模型无意义的内容。
2.1 过滤函数
def filt_fn(X_df, x, lookback):
超级会员免费看
订阅专栏 解锁全文
52

被折叠的 条评论
为什么被折叠?



