为完整数据集生成 Lime 解释的有效方法

Efficient way to generate Lime explanations for full dataset

我正在处理具有 1000 行和 15 个特征的二元分类问题。

目前正在使用Lime来解释每个实例的预测。

我使用下面的代码生成完整测试数据帧的解释

test_indx_list = X_test.index.tolist()
test_dict={}
for n in test_indx_list:
    exp = explainer.explain_instance(X_test.loc[n].values, model.predict_proba, num_features=5)
    a=exp.as_list()
    test_dict[n] = a

但是这样效率不高。有没有其他方法可以更快地生成解释/获取特征贡献?

根据文档显示,目前没有执行批处理的选项 explain_instance,尽管有计划。这应该对以后更新版本的速度有很大帮助。

为了获得更快的速度,似乎最合适的改变是减少用于学习线性模型的样本数量。

explainer.explain_instance(... num_features=5, num_samples=2500)

num_samples 的默认值为 5000,根据您的型号,它可能比您需要的多得多,并且是目前最会影响解释器速度的参数。

另一种方法是尝试向代码段添加并行化。这是一个更复杂的解决方案,您可以同时 运行 片段的多个实例,并在最后收集结果。为此,我留下了一个 link,但实际上这不是我可以立即提供的片段。