使用LIME进行模型解释时处理类别,浮点和整数类型特征

时间:2020-09-30 19:06:16

标签: python binary classification interpretation lime

我正在使用具有混合特征类型的Lime(本地可解释模型不可知的解释)来评估分类任务的模型预测。有谁知道如何在lime.lime_tabular.LimeTabularExplainer()方法中指定二进制功能。 LIME如何实际处理这些类型的功能(更多的功能只有1和0)?

1 个答案:

答案 0 :(得分:0)

我认为您应该将您的二进制特征声明为分类特征,以使您的Lime解释者在研究样本周围进行局部扰动时可以有效地使用其采样机制。

您可以使用 LimeTabularExplainer 构造函数中的 categorical_features 关键字参数来实现。

my_binary_feature_column_index = 0 # put your column index here    

explainer = LimeTabularExplainer(my_data, categorical_features=[my_binary_feature_column_index], categorical_name={my_binary_feature_column_index: ["foo", "bar", "baz"]})
  • categorical_features 是分类列索引的列表,并且
  • categorical_name 是一本字典,其中包含列索引和类别名称列表的映射。

如LIME代码中所述:

解释关于表格(即矩阵)数据的预测。 对于数字特征,请通过从Normal(0,1)和 根据均值定标和定标进行逆运算 训练数据中的平均值和标准。对于分类特征,请扰动 根据训练分布进行抽样,并制作二进制 值与实例相同时为1的特征 解释。

因此,分类特征是在底层进行热编码的,并且根据训练数据集中的特征分布使用值0或1(除非您选择使用LabelEncoder,这将导致LIME将特征作为连续变量)。

LIME项目中提供了一个很好的教程:https://github.com/marcotcr/lime/blob/master/doc/notebooks/Tutorial%20-%20continuous%20and%20categorical%20features.ipynb