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

SSM*_*SMK 6 python machine-learning pandas scikit-learn deep-learning

正在研究具有 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
Run Code Online (Sandbox Code Playgroud)

但这效率不高。是否有任何替代方法可以更快地生成解释/获得功能贡献?

小智 4

从文档显示的内容来看,目前没有执行批量解释实例的选项,尽管有计划。这对以后新版本的速度会有很大帮助。

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

explainer.explain_instance(... num_features=5, num_samples=2500)
Run Code Online (Sandbox Code Playgroud)

num_samples 的默认值是 5000,这可能比您需要的要多得多,具体取决于您的模型,并且是当前最影响解释器速度的参数。

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