【发布时间】:2020-09-30 19:06:16
【问题描述】:
我正在使用具有混合特征类型的 Lime(本地可解释模型无关解释)来评估我对分类任务的模型预测。有谁知道如何在lime.lime_tabular.LimeTabularExplainer() 方法中指定二进制特征。 LIME 实际上是如何处理这些类型的特征(更多只有 1 和 0 的特征)?
【问题讨论】:
标签: python binary classification interpretation lime
我正在使用具有混合特征类型的 Lime(本地可解释模型无关解释)来评估我对分类任务的模型预测。有谁知道如何在lime.lime_tabular.LimeTabularExplainer() 方法中指定二进制特征。 LIME 实际上是如何处理这些类型的特征(更多只有 1 和 0 的特征)?
【问题讨论】:
标签: python binary classification interpretation lime
我认为您应该将您的二进制特征声明为分类特征,以便让您的 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"]})
正如 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
【讨论】: