0

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

4

1 回答 1

1

我认为您应该将您的二进制特征声明为分类特征,以便让您的 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

于 2020-10-15T12:47:24.623 回答